리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다

소개



사용 언어 python3
사용 API twitterAPI, MediaWiki API
OS windows10
필자는 파이썬 초보자

프로그램의 대략적인 움직임



twitterAPI에 액세스 → 리플리케이션 되었을 때 if 문으로 wiki가 들어 있는지 확인 → data=wikiapi.getinfo(text)요약하면 wiki라는 단어가 리플라이에 포함되면 mediawikiapi에서 뒤에 오는 단어를 검색하고 다시 답할 bot

소스 코드


#tweet.py

import tweepy
import Wikiapi
import datetime

CK="" #Consumer Key
CS="" #Consumer Secret
AT="" #Access Token
AS="" #Access Token Secret

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)

api = tweepy.API(auth)

class Listener(tweepy.StreamListener):
    def on_status(self, status):
        status.created_at += datetime.timedelta(hours=9)

        if (status.in_reply_to_screen_name) == api.me().screen_name:

            status_id = status.id
            text = status.text.replace("@" + str(api.me().screen_name), "")
            text = text.replace(" ", "")
            if "wiki" in text:#リプライにwikiが入ってるか確認
                text=text.replace("wiki","")
                wikiapi=Wikiapi.Wikiapi()
                data=wikiapi.getinfo(text)#Wikiapi.pyのgetinfo呼び出し
                tweet_rep = "@" + str(status.user.screen_name) + " " + str(data.tweet)+"\n"+str(data.url)
                api.update_status(status=tweet_rep,in_reply_to_status_id=status_id)

        return True

    def on_error(self, status_code):
        print('Got an error with status code: ' + str(status_code))
        return True

    def on_timeout(self):
        print('Timeout...')
        return True

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)

listener = Listener()
stream = tweepy.Stream(auth, listener)
stream.userstream()
#Wikiapi.py

import requests
import json
import urllib
class Wikiapi:
    def getinfo(self,word):
        word=urllib.parse.quote(word)
        api="https://ja.wikipedia.org/w/api.php?action=query&format=json&titles={word}&prop=extracts&redirects=1&exchars=100&explaintext=1"
        api=api.format(word=word)
        r=requests.get(api)#APIにアクセス
        data=json.loads(r.text)
        pages=data["query"]["pages"]
        for page in pages:
            try:
                self.tweet=data["query"]["pages"][page]["extract"]#wikiの説明文を参照
                self.url="https://ja.wikipedia.org/wiki/"+word#urlもツイートに追加
                return self
            except KeyError:#記事なかった場合
                self.tweet="記事がありませんでした"
                return self

해설



읽기가 어려울 수 있습니다.
조금 코멘트로 해설하고 있습니다만 요점을 소개if "wiki" in text: 응답에 위키가 들어 있는지 확인self.tweet=data["query"]["pages"][page]["extract"]#wikiの説明文を参照 mediawikiapi에서 취득한 json에서 개요가있는 곳에 액세스

거동





참고한 기사



잊었기 때문에 알아 둡니다.

요약



읽기가 어렵지만 초보자이므로 용서하십시오.
괜찮은 bot를 만들 수있어서 좋았습니다.
실용성이 없다고 생각
여기서 모르겠다면 댓글이나 트위터로 말하면 120 % 반환합니다.

좋은 웹페이지 즐겨찾기