PATCH: Thumbnails not stop generating after stream ends
This commit is contained in:
@@ -12,7 +12,7 @@ from utils.path_manager import PathManager
|
||||
stream_bp = Blueprint("stream", __name__)
|
||||
|
||||
# Constants
|
||||
THUMBNAIL_GENERATION_INTERVAL = 180
|
||||
THUMBNAIL_GENERATION_INTERVAL = 10
|
||||
|
||||
## Path Manager
|
||||
path_manager = PathManager()
|
||||
@@ -182,12 +182,14 @@ def publish_stream():
|
||||
db.execute("""UPDATE users SET is_live = 1 WHERE user_id = ?""", (user_info["user_id"],))
|
||||
|
||||
username = user_info["username"]
|
||||
user_id = user_info["user_id"]
|
||||
|
||||
# Local file creation
|
||||
create_local_directories(username)
|
||||
|
||||
# Update thumbnail periodically
|
||||
update_thumbnail.delay(path_manager.get_stream_file_path(username),
|
||||
update_thumbnail.delay(user_id,
|
||||
path_manager.get_stream_file_path(username),
|
||||
path_manager.get_thumbnail_file_path(username),
|
||||
THUMBNAIL_GENERATION_INTERVAL)
|
||||
|
||||
|
||||
@@ -18,14 +18,17 @@ def celery_init_app(app) -> Celery:
|
||||
return celery_app
|
||||
|
||||
@shared_task
|
||||
def update_thumbnail(stream_file, thumbnail_file, sleep_time) -> None:
|
||||
def update_thumbnail(user_id, stream_file, thumbnail_file, sleep_time) -> None:
|
||||
"""
|
||||
Updates the thumbnail of a stream periodically
|
||||
"""
|
||||
|
||||
while True:
|
||||
if get_streamer_live_status(user_id)['is_live']:
|
||||
print("Updating thumbnail...")
|
||||
generate_thumbnail(stream_file, thumbnail_file)
|
||||
sleep(sleep_time)
|
||||
update_thumbnail.apply_async((user_id, stream_file, thumbnail_file, sleep_time), countdown=sleep_time)
|
||||
else:
|
||||
print("Stream has ended, stopping thumbnail updates")
|
||||
|
||||
@shared_task
|
||||
def combine_ts_stream(stream_path, vods_path, vod_file_name):
|
||||
|
||||
@@ -109,12 +109,13 @@ def generate_thumbnail(stream_file: str, thumbnail_file: str, retry_time=5, retr
|
||||
break
|
||||
except subprocess.CalledProcessError as e:
|
||||
attempts -= 1
|
||||
print("FFmpeg failed with an error:")
|
||||
print(e.stderr.decode()) # Print detailed error message
|
||||
print(f"Retrying in {retry_time} seconds...")
|
||||
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...")
|
||||
|
||||
def get_stream_tags(user_id: int) -> Optional[List[str]]:
|
||||
"""
|
||||
Given a stream return tags associated with the user's stream
|
||||
|
||||
Reference in New Issue
Block a user