Как отследить начало стрима на твиче python
Я делаю бота в дискорде, который должен уведомлять о начале стрима. В данном случае я не смог найти документации на твич апи и похожих тем с ответом тоже. Как возможно отслеживать начало стрима на твиче?
Я делаю бота в дискорде, который должен уведомлять о начале стрима. В данном случае я не смог найти документации на твич апи и похожих тем с ответом тоже. Как возможно отслеживать начало стрима на твиче?
Вот часть кода из моего бота. Имена переменных вместо settings[]
и session[]
нужно подставить свои.
Запрос статуса начала и окончания стрима:
response = requests.get(f"https://api.twitch.tv/helix/streams?user_login={settings['twitch']['channel']}",
headers={
'Client-ID': settings['twitch']['client_id'],
'Authorization': 'Bearer ' + session['twitch_api_access_token']
}
)
if response.status_code == 200:
data = response.json()
if len(data['data']) > 0:
if not session['twitch_streaming']:
print("Стрим начался")
#
# Действия по началу стрима
#
session['twitch_streaming'] = True
else:
if session['twitch_streaming']:
print("Стрим закончился")
#
# Действия по окончанию стрима
#
session['twitch_streaming'] = False
else:
print(f'task_twitch_job Error: {response.status_code}')
Вначале запрашивается информация о стриме используя Twitch API. Далее если ответ 200 и есть полезные данные, то идет обработка. Код должен периодически запускаться, например отдельной задачей через AsyncIO. Чаще 10-15 секунд код нет смысла запускать, т.к. данные кэшируются на серверах и обновляются с задержкой. Кроме того, при запросе возвращается другая полезная информация о стриме, как например: текущее описание стрима, кол-во зрителей, игра/категория и пр.
При запросе на Twitch API используется Access Token, который можно получить используя запрос на OAuth, примерно следующим кодом:
response = requests.post(
'https://id.twitch.tv/oauth2/token',
data={
'client_id': settings['twitch']['client_id'],
'client_secret': settings['twitch']['client_secret'],
'grant_type': 'client_credentials'
}
)
if response.status_code == 200:
response_json = response.json()
session['twitch_api_access_token'] = response_json['access_token']
Токен выдается примерно на 60 суток, и если бот работает дольше, то его нужно периодически обновлять. Точное время существования токена в секундах отправляется в ответе на запрос. По идее, нужно еще делать Revoke старого токена если его время еще не вышло, но по большей части это лишнее.
client_id
и client_secret
можно получить зарегистрировав программу на https://dev.twitch.tv/console/apps При регистрации категорию лучше всего указывать Website Integration
, а Redirect URL
можно оставить localhost
он не используется при запросе.