Discord에 Twitter의 타임라인을 표시합니다.
개시하다
안녕하세요, 저는retact입니다.
다들 디스코드요?
제가 사용하는 서버는 분보가 있어서 여러분이 하는 일을 공유할 수 있어서 기쁘지만 요즘 주변 사람들이 연락이 없어서 트위터가 많이 진전되고 있습니다.
이렇게 하면 좀 외로울 것 같아서 여러분들이 Tweet에 디스코드에 나왔으면 좋겠다고 생각했는데 지저분했지만 실사해 봤어요.
※ 이번에 사용한 트위터 스트림 API의 키 때를 트위터로 추출한 것은 잘 모르기 때문에 공개된 때 추출과 웹훅스 사용 출력만 열거합니다.
설치된 전선을 여기에 놓아라.
또 기사 내용과 코드에 이상한 점이나 이렇게 해야 할 부분이 있다면 몰래 알려주시면 좋을 것 같아요.
트위터를 읽기 위해서.
우선 타임라인을 추출하기 위해서는 자신의 트위터 계정으로 API 키와 방문 영패를 받아야 합니다.
여기를 참고해 트위터의 API 사용 신청을 하면 (UI는 조금 다르지만) 순조롭게 진행될 수 있다.
여기서 얻은 거예요.
○ Consumer API key
○ Consumer API secret key
○ Access token
○ Access token secret
의 네 개를 잠시 후에 사용합니다.
Twitter Streaming API
이번에는 트위터 스트리밍 API를 사용하기 위해 Tweepy 라이브러리를 사용했다.
Tweet을 내보냅니다.
config.아까 py에서 얻은 거예요.
○ Consumer API key
○ Consumer API secret key
○ Access token
○ Access token secret
트위터 코드라고 써.내가 py를 실행하고 싶다면 트위터가 실행 화면에 나타날 것이다.
config.py
CONFIG = {
"CONSUMER_KEY": "Consumer API keyを記入してください",
"CONSUMER_SECRET": "Consumer API secret keyを記入してください",
"ACCESS_TOKEN": "Access tokenを記入してください",
"ACCESS_SECRET": "Access token secretを記入してください",
}
twi-cord.pyimport tweepy
from config import CONFIG
auth = tweepy.OAuthHandler(CONFIG["CONSUMER_KEY"], CONFIG["CONSUMER_SECRET"])
auth.set_access_token(CONFIG["ACCESS_TOKEN"], CONFIG["ACCESS_SECRET"])
# APIインスタンスを作成
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
# フォローしているユーザーのwatch_listを作成
followee_ids = api.friends_ids(screen_name=api.me().screen_name)
watch_list = [str(user_id) for user_id in followee_ids]
watch_list.append(str(api.me().id))
# デフォルトのアクセスレベルではfollowには5000人まで指定できるため
assert(len(watch_list) <= 5000)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
# @ツイートは表示しない.
if "@" in status.text:
pass
else:
print('-------------------------------------------')
print('name:' + status.user.name)
print(status.text)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth=api.auth, listener=myStreamListener)
myStream.filter(follow=watch_list)
개인 프라이버시 관계에서는 대부분 숨겨져 있는데, 다음 관심 있는 사람들의 Tweet이 표시될 것 같다.웹훅으로 디스코드에 난잡하게 던지다.
어쨌든 디스코드에 타임라인을 띄우려고 해서 이번에는 웹훅을 사용했다.
Discord를 사용하여 URL 생성
내가 이해하지 못하는 사람은 이곳을 참고하여 생성할 수 있다.
○ Intro to Webhooks
여기서 생성된 URL은 나중에 사용됩니다.
웹훅스의 구조를 알고 싶은 사람여기.은 참고할 수 있다.
Discord에 Tweet 표시
방금 기술한 코드에 웹훅으로 보낸 부분을 더하다.
config.py
CONFIG = {
"CONSUMER_KEY": "Consumer API keyを記入してください",
"CONSUMER_SECRET": "Consumer API secret keyを記入してください",
"ACCESS_TOKEN": "Access tokenを記入してください",
"ACCESS_SECRET": "Access token secretを記入してください",
+ "WEBHOOK_URL": "Webhook URLを記入してください ",
}
twi-cord.pyimport tweepy
+import requests
+import json
from config import CONFIG
auth = tweepy.OAuthHandler(CONFIG["CONSUMER_KEY"], CONFIG["CONSUMER_SECRET"])
auth.set_access_token(CONFIG["ACCESS_TOKEN"], CONFIG["ACCESS_SECRET"])
# APIインスタンスを作成
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
+webhook_url = CONFIG["WEBHOOK_URL"]
# フォローしているユーザーのwatch_listを作成
followee_ids = api.friends_ids(screen_name=api.me().screen_name)
watch_list = [str(user_id) for user_id in followee_ids]
watch_list.append(str(api.me().id))
# デフォルトのアクセスレベルではfollowには5000人まで指定できるため
assert(len(watch_list) <= 5000)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
# @ツイートは表示しない.
if "@" in status.text:
pass
else:
+ # ユーザーの情報を取得
+ user_id = status.user.id
+ user = api.get_user(user_id)
+ main_content = {
+ 'username': status.user.name,
+ 'avatar_url': user.profile_image_url_https,
+ 'content': status.text
+ }
+ headers = {'Content-Type': 'application/json'}
+ response = requests.post(webhook_url, json.dumps(main_content), headers=headers)
print('-------------------------------------------')
print('name:' + status.user.name)
print(status.text)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth=api.auth, listener=myStreamListener)
myStream.filter(follow=watch_list)
개인의 프라이버시는 대부분 숨겨져 있기 때문에 잘 보이기는 어렵지만 이렇게 표시될 것이다.덤
트위터를 보는 게 힘들어서 트위터를 읽을 수 있는 어플을 계속 찾고 있는데 디스코드에 트위터를 던지면 그다음에는 읽을 수 있는 Bot만 하게 되니까 이 기사를 참고해 실제 트위터를 읽어보세요.
트위터는 아니지만 읽어보니 좋다.
끝말
디스코드에 트위터 타임라인을 설치할 수 있지만 답변이 잘 이뤄지지 않아 트위터로 사용하려면 다른 봇을 만들어야 한다.
단지 설치가 수월하기 때문에 목소리로만 Tweet을 읽으려는 사람에게는 딱 좋은 것 같아요.
자물쇠가 낀 트윗이 올라왔지만, 개인 프라이버시상 공용 서버에 타임라인을 유포하는 것은 좋지 않다고 판단됐으니 사용법에 유의해야 한다.
참고 문헌
Reference
이 문제에 관하여(Discord에 Twitter의 타임라인을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tact/articles/476ec594f3b58d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)