리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다
12103 단어 mediawikiPython3TwitterAPI
소개
사용 언어 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 % 반환합니다.
Reference
이 문제에 관하여(리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/OK_im_fine_now/items/23a32cfc90d064234dad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 % 반환합니다.
Reference
이 문제에 관하여(리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/OK_im_fine_now/items/23a32cfc90d064234dad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#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 % 반환합니다.
Reference
이 문제에 관하여(리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/OK_im_fine_now/items/23a32cfc90d064234dad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
잊었기 때문에 알아 둡니다.
요약
읽기가 어렵지만 초보자이므로 용서하십시오.
괜찮은 bot를 만들 수있어서 좋았습니다.
실용성이 없다고 생각
여기서 모르겠다면 댓글이나 트위터로 말하면 120 % 반환합니다.
Reference
이 문제에 관하여(리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/OK_im_fine_now/items/23a32cfc90d064234dad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(리플라이드된 단어로 wikipedia의 개요를 리플라이 해 돌려주는 bot를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/OK_im_fine_now/items/23a32cfc90d064234dad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)