Compare commits
2 Commits
af6220ae3f
...
97fb4c8637
Author | SHA1 | Date | |
---|---|---|---|
97fb4c8637 | |||
7e66a0d986 |
53
daemon.py
53
daemon.py
@ -135,34 +135,27 @@ def recorder(streamer):
|
|||||||
log.info("lock файл удален")
|
log.info("lock файл удален")
|
||||||
|
|
||||||
|
|
||||||
def check_stream():
|
def get_streamer_id(streamer):
|
||||||
# FIXME: Распилить на более мелкие функции
|
"""Получаем id стримера, при неудаче отдаем None"""
|
||||||
"""
|
|
||||||
1. Проверка на наличие стрима
|
|
||||||
1.1 Если нет - удалить lock файл, если он есть
|
|
||||||
1.2 Если есть - создать lock файл, запустить записывалку
|
|
||||||
"""
|
|
||||||
for streamer in config['twitch']['streamers'].split(','):
|
|
||||||
# Путь до диры со стримами
|
|
||||||
streamer_path = os.path.join(config['app']['path'], streamer)
|
|
||||||
# Получаем инфо о стримере, если не получается, выходим с ошибкой
|
|
||||||
|
|
||||||
# resolved_id = client.users.translate_usernames_to_ids(i)
|
|
||||||
resolved_id = twitch_client.get_users(logins=[streamer])
|
resolved_id = twitch_client.get_users(logins=[streamer])
|
||||||
if not resolved_id['data']:
|
if resolved_id['data']:
|
||||||
|
return resolved_id['data'][0]['id']
|
||||||
|
else:
|
||||||
log.error(
|
log.error(
|
||||||
"Аккаунт {} не найден".format(streamer)
|
"Аккаунт {} не найден".format(streamer)
|
||||||
)
|
)
|
||||||
continue
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def record_streamer(user_stream, streamer):
|
||||||
|
"""Проверяем, идет ли стрим. Если идет - записываем. Если не идет - удаляем pid файл"""
|
||||||
|
streamer_path = os.path.join(config['app']['path'], streamer)
|
||||||
|
if user_stream['data']:
|
||||||
# Создаем путь до диры со стримером, если папка не существует
|
# Создаем путь до диры со стримером, если папка не существует
|
||||||
if not (os.path.exists(streamer_path)):
|
if not (os.path.exists(streamer_path)):
|
||||||
os.makedirs(streamer_path)
|
os.makedirs(streamer_path)
|
||||||
log.info("Создана директория {}".format(streamer_path))
|
log.info("Создана директория {}".format(streamer_path))
|
||||||
# Достаем ID стримера из инфо
|
|
||||||
user_id = resolved_id['data'][0]['id']
|
|
||||||
user_stream = twitch_client.get_streams(user_id=user_id)
|
|
||||||
# Если стрим идет, то идем дальше
|
|
||||||
if user_stream['data']:
|
|
||||||
# Если стрим идет и лок файла нет, то записываем и ставим лок
|
# Если стрим идет и лок файла нет, то записываем и ставим лок
|
||||||
if (user_stream['data'][0]['type'] == 'live') and not (
|
if (user_stream['data'][0]['type'] == 'live') and not (
|
||||||
os.path.exists(os.path.join(streamer_path, "pid"))):
|
os.path.exists(os.path.join(streamer_path, "pid"))):
|
||||||
@ -182,6 +175,24 @@ def check_stream():
|
|||||||
os.remove(os.path.join(streamer_path, "pid"))
|
os.remove(os.path.join(streamer_path, "pid"))
|
||||||
|
|
||||||
|
|
||||||
|
def streamers_loop():
|
||||||
|
"""
|
||||||
|
Цикл по стримерам
|
||||||
|
Проходится по каждому логину, достает ID стримера,
|
||||||
|
достает инфу о стримах, запускает функцию для записи
|
||||||
|
"""
|
||||||
|
for streamer in config['twitch']['streamers'].split(','):
|
||||||
|
|
||||||
|
# Достаем ID стримера, если пустой - пропускаем цикл
|
||||||
|
user_id = get_streamer_id(streamer)
|
||||||
|
if user_id is None:
|
||||||
|
continue
|
||||||
|
# Получаем данные о стриме
|
||||||
|
user_stream = twitch_client.get_streams(user_id=user_id)
|
||||||
|
# Запускаем запись
|
||||||
|
record_streamer(user_stream, streamer)
|
||||||
|
|
||||||
|
|
||||||
def remove_old_streams():
|
def remove_old_streams():
|
||||||
# https://clck.ru/WHh32
|
# https://clck.ru/WHh32
|
||||||
records_path = config['app']['path']
|
records_path = config['app']['path']
|
||||||
@ -216,7 +227,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# Проверять стримы раз в check_period
|
# Проверять стримы раз в check_period
|
||||||
# Каждый час удалять старые стримы
|
# Каждый час удалять старые стримы
|
||||||
schedule.every(int(config['app']['check_period'])).seconds.do(check_stream)
|
schedule.every(int(config['app']['check_period'])).seconds.do(streamers_loop)
|
||||||
schedule.every(1).hours.do(remove_old_streams)
|
schedule.every(1).hours.do(remove_old_streams)
|
||||||
|
|
||||||
# Инициализируем клиент твича
|
# Инициализируем клиент твича
|
||||||
|
Loading…
Reference in New Issue
Block a user