UPDATE: Added custom thumbnail functions and checks in stream utils

This commit is contained in:
2025-03-02 16:52:36 +00:00
parent 8cf04569e8
commit a6f89e7e6f
2 changed files with 22 additions and 19 deletions

View File

@@ -1,7 +1,7 @@
from celery import Celery, shared_task, Task
from datetime import datetime
from celery_tasks.preferences import user_preferences
from utils.stream_utils import generate_thumbnail, get_streamer_live_status
from utils.stream_utils import generate_thumbnail, get_streamer_live_status, get_custom_thumbnail_status
from time import sleep
from os import listdir, remove
import subprocess
@@ -12,12 +12,13 @@ def update_thumbnail(user_id, stream_file, thumbnail_file, sleep_time) -> None:
Updates the thumbnail of a stream periodically
"""
if get_streamer_live_status(user_id)['is_live']:
# Check if stream is still live and custom thumbnail has not been set
if get_streamer_live_status(user_id)['is_live'] and not get_custom_thumbnail_status(user_id)['custom_thumbnail']:
print("Updating thumbnail...")
generate_thumbnail(stream_file, thumbnail_file)
update_thumbnail.apply_async((user_id, stream_file, thumbnail_file, sleep_time), countdown=sleep_time)
else:
print("Stream has ended, stopping thumbnail updates")
print(f"Stopping thumbnail updates for stream of {user_id}")
@shared_task
def combine_ts_stream(stream_path, vods_path, vod_file_name):

View File

@@ -60,6 +60,18 @@ def get_category_id(category_name: str) -> Optional[int]:
""", (category_name,))
return data['category_id'] if data else None
def get_custom_thumbnail_status(user_id: int) -> Optional[dict]:
"""
Returns the custom thumbnail status of a streamer
"""
with Database() as db:
custom_thumbnail = db.fetchone("""
SELECT custom_thumbnail
FROM users
WHERE user_id = ?;
""", (user_id,))
return custom_thumbnail
def get_vod(vod_id: int) -> dict:
"""
Returns data of a streamers vod
@@ -92,7 +104,7 @@ def get_all_vods():
vods = db.fetchall("""SELECT * FROM vods""")
return vods
def generate_thumbnail(stream_file: str, thumbnail_file: str, retry_time=5, retry_count=3) -> None:
def generate_thumbnail(stream_file: str, thumbnail_file: str) -> None:
"""
Generates the thumbnail of a stream
"""
@@ -109,21 +121,11 @@ def generate_thumbnail(stream_file: str, thumbnail_file: str, retry_time=5, retr
f"{thumbnail_file}"
]
attempts = retry_count
while attempts > 0:
try:
subprocess.run(thumbnail_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
print(f"Thumbnail generated for {stream_file}")
break
except subprocess.CalledProcessError as e:
attempts -= 1
print(f"No information available, retrying in {retry_time} seconds...")
sleep(retry_time)
continue
if attempts == 0:
print(f"Failed to generate thumbnail for {stream_file}, skipping...")
print(f"No information available for {stream_file}, aborting thumbnail generation")
def get_stream_tags(user_id: int) -> Optional[List[str]]:
"""