有没有一种方法可以检查主播是否在有或没有 api 的情况下在 twitch 上直播?
Is there a way of checking a streamer is live on twitch with or without an api?
我正在用 py 开发一个 discord 机器人。但我似乎无法弄清楚如何检查用户是否在 twitch 上直播。当我检查他们的流标题时。如果其中有单词流,我可以让机器人宣布流。但是机器人不断地检查它,一遍又一遍地打破频道。还有什么其他解决方案可以检查主播是否在直播?我不知道 api 是如何工作的
使用 python 请求库的常用方法,这将能够告诉您 IF 用户是否在线:
import requests
CLIENT_ID = 'my-twitch-client-id'
OAUTH_TOKEN = 'my-twitch-oauth-token'
def is_user_live(username):
endpoint = 'https://api.twitch.tv/helix/streams'
my_headers = {
'Client-ID': CLIENT_ID,
'Authorization': f'Bearer {OAUTH_TOKEN}'
}
my_params = {'user_login': username}
response = requests.get(endpoint, headers=my_headers, params=my_params)
data = response.json()['data']
if len(data) == 0:
return False
return data[0]['type'] == 'live'
我建议您在初始化机器人时订阅 events webhook。您将需要创建一个网络服务器来处理 Twitch 发送给您的 POST 请求,这将能够告诉您 WHEN用户上线。使用 Flask 的粗略示例:
import requests
import json
from flask import request
CLIENT_ID = 'my-twitch-client-id'
OAUTH_TOKEN = 'my-twitch-oauth-token'
MY_SECRET = 'an-arbitrary-secret'
app = your_flask_app()
@app.route('/my_webhook/<user_id>')
def my_webhook(user_id):
check_secret(request) # sha256 of your secret and content-length
data = request.get_json()['data']
if len(data) > 0:
your_bot.user_is_live(data)
else:
your_bot.user_is_offline(data)
return 'OK'
def subscribe_to_webhook(user_id):
endpoint = 'https://api.twitch.tv/helix/webhooks/hub'
topic = 'https://api.twitch.tv/helix/streams'
my_headers = {
'Client-ID': CLIENT_ID,
'Authorization': f'Bearer {OAUTH_TOKEN}'
}
payload = {
'hub.callback': f'http://my_server.url/my_webhook/{user_id}',
'hub.mode': 'subscribe',
'hub.topic': f'{topic}?user_id={user_id}',
'hub.lease_seconds': 864000,
'hub.secret': MY_SECRET
}
response = requests.post(endpoint, headers=my_headers, data=json.dumps(payload))
return response.ok
我正在用 py 开发一个 discord 机器人。但我似乎无法弄清楚如何检查用户是否在 twitch 上直播。当我检查他们的流标题时。如果其中有单词流,我可以让机器人宣布流。但是机器人不断地检查它,一遍又一遍地打破频道。还有什么其他解决方案可以检查主播是否在直播?我不知道 api 是如何工作的
使用 python 请求库的常用方法,这将能够告诉您 IF 用户是否在线:
import requests
CLIENT_ID = 'my-twitch-client-id'
OAUTH_TOKEN = 'my-twitch-oauth-token'
def is_user_live(username):
endpoint = 'https://api.twitch.tv/helix/streams'
my_headers = {
'Client-ID': CLIENT_ID,
'Authorization': f'Bearer {OAUTH_TOKEN}'
}
my_params = {'user_login': username}
response = requests.get(endpoint, headers=my_headers, params=my_params)
data = response.json()['data']
if len(data) == 0:
return False
return data[0]['type'] == 'live'
我建议您在初始化机器人时订阅 events webhook。您将需要创建一个网络服务器来处理 Twitch 发送给您的 POST 请求,这将能够告诉您 WHEN用户上线。使用 Flask 的粗略示例:
import requests
import json
from flask import request
CLIENT_ID = 'my-twitch-client-id'
OAUTH_TOKEN = 'my-twitch-oauth-token'
MY_SECRET = 'an-arbitrary-secret'
app = your_flask_app()
@app.route('/my_webhook/<user_id>')
def my_webhook(user_id):
check_secret(request) # sha256 of your secret and content-length
data = request.get_json()['data']
if len(data) > 0:
your_bot.user_is_live(data)
else:
your_bot.user_is_offline(data)
return 'OK'
def subscribe_to_webhook(user_id):
endpoint = 'https://api.twitch.tv/helix/webhooks/hub'
topic = 'https://api.twitch.tv/helix/streams'
my_headers = {
'Client-ID': CLIENT_ID,
'Authorization': f'Bearer {OAUTH_TOKEN}'
}
payload = {
'hub.callback': f'http://my_server.url/my_webhook/{user_id}',
'hub.mode': 'subscribe',
'hub.topic': f'{topic}?user_id={user_id}',
'hub.lease_seconds': 864000,
'hub.secret': MY_SECRET
}
response = requests.post(endpoint, headers=my_headers, data=json.dumps(payload))
return response.ok