Check streams states from tasks

This commit is contained in:
2024-11-18 00:30:09 +01:00
parent 6cc83f2f45
commit 941d6c4fe6

View File

@@ -1,7 +1,11 @@
from datetime import datetime, timezone
from core.broker import broker
from repositories.streamers import StreamerConfigRepository
from .state import State
from .watcher import StateWatcher
from .twitch.authorize import authorize
@broker.task("stream_notifications.twitch.on_stream_state_change")
@@ -9,3 +13,23 @@ async def on_stream_state_change(
streamer_id: int, new_state: State | None = None
):
await StateWatcher.on_stream_state_change(streamer_id, new_state)
@broker.task(
"stream_notifications.check_streams_states",
schedule=[{"cron": "*/2 * * * *"}]
)
async def check_streams_states():
streamers = await StreamerConfigRepository.all()
streamers_ids = [str(streamer.twitch.id) for streamer in streamers]
twitch = await authorize()
async for stream in twitch.get_streams(user_id=streamers_ids):
state = State(
title=stream.title,
category=stream.game_name,
last_live_at=datetime.now(timezone.utc)
)
await StateWatcher.on_stream_state_change(int(stream.user_id), state)