database , chat vod and shorts update error messages

This commit is contained in:
2026-07-31 16:56:40 +00:00
parent 736fb47e7a
commit d6503b7d92
5 changed files with 22 additions and 8 deletions
+2
View File
@@ -7,3 +7,5 @@ __pycache__
twitch_secrets.json
.vscode/settings.json
download
output.log
*.mp4
+4 -2
View File
@@ -33,7 +33,7 @@ def build_chat_video():
print(f"🚀 Transcribe: {title}")
print("====================================================")
twitch_chat_vod.combine_twitch_vod_and_chat(f"download/videos/{id}/{id}.mp4", "overlay")
twitch_chat_vod.combine_twitch_vod_and_chat(f"download/videos/{id}/{id}.mp4")
def build_transcribe():
@@ -106,4 +106,6 @@ def build_shorts():
if __name__ =="__main__":
DB = database.Database()
build_shorts()
#build_shorts()
build_transcribe()
build_chat_video()
+4 -4
View File
@@ -80,18 +80,18 @@ class Database:
"""Flags a specific row record to downloaded (0)."""
self.__mark_as(record_id, "downloaded", "0")
def __get_unuploaded(self, set_row: str) -> list[Any]:
def __get_unuploaded(self, set_row: str, also: str = "") -> list[Any]:
"""Retrieve all rows that were download but not uploaded"""
self.cursor.execute(f"SELECT {self.columns} FROM twitch_videos WHERE downloaded = 1 AND {set_row} = 0")
self.cursor.execute(f"SELECT {self.columns} FROM twitch_videos WHERE downloaded = 1 AND {set_row} = 0 {also}")
return self.cursor.fetchall()
def get_unuploaded_shorts(self) -> list[Any]:
"""Retrieve all rows that were download but not uploaded_yt_shorts"""
return self.__get_unuploaded("uploaded_yt_shorts")
return self.__get_unuploaded("uploaded_yt_shorts", "AND clip_is = 1")
def get_unuploaded_chats(self) -> list[Any]:
"""Retrieve all rows that were download but not uploaded_yt_chats"""
return self.__get_unuploaded("uploaded_yt_chats")
return self.__get_unuploaded("uploaded_yt_chats", "AND clips_is = 0")
def get_unuploaded(self) -> list[Any]:
"""Retrieve all rows that were download but not uploaded_yt"""
+5 -1
View File
@@ -2,7 +2,7 @@
import os
import linux
def combine_twitch_vod_and_chat(vod_path: str, layout: str = "side-by-side") -> bool:
def combine_twitch_vod_and_chat(vod_path: str, layout: str = "side-by-side", force: bool = False) -> bool:
"""
Renders Twitch chat JSON to video and combines it with the source VOD.
Provides real-time terminal feedback for all processing steps.
@@ -14,6 +14,10 @@ def combine_twitch_vod_and_chat(vod_path: str, layout: str = "side-by-side") ->
mask_path = video_path.replace(".mp4", "_temp_chat_mask.mp4")
# Step 1: Pre-flight checks
if os.path.exists(video_chat) and force is False:
print(f"❌ Error: Chat video allready exists: {video_chat}")
return False
if not os.path.exists(video_path):
print(f"❌ Error: Source video not found: {video_path}")
return False
+7 -1
View File
@@ -1,4 +1,5 @@
#!/usr/bin/env python3
import os
import linux
import tempfile
from pathlib import Path
@@ -20,11 +21,16 @@ def apply_gaussian_blur(frame, radius: int = 30):
# Return back as a numpy array for MoviePy
return np.array(blurred_image)
def fit_to_9_16_letterbox(input_path: str, top_text: str = "TOP TEXT", bottom_text: str = "BOTTOM TEXT", use_blur: bool = True):
def fit_to_9_16_letterbox(input_path: str, top_text: str = "TOP TEXT", bottom_text: str = "BOTTOM TEXT", use_blur: bool = True, force: bool = False):
input_file = Path(input_path)
output_suffix = "gaussian_9_16" if use_blur else "black_9_16"
output_path = input_file.parent / f"{input_file.stem}_{output_suffix}{input_file.suffix}"
if os.path.exists(output_path) and force is False:
print(f"❌ Error: Short video allready exists: {output_path}")
return
print("🧼 Sanitizing video metadata streams inside an automated safe context...")
with tempfile.NamedTemporaryFile(suffix=input_file.suffix, delete=False) as temp_file:
temp_path = temp_file.name