From 209630832d89bcf6655a057c33dae4489467cd74 Mon Sep 17 00:00:00 2001 From: cyteon Date: Sun, 19 May 2024 20:37:38 +0200 Subject: [PATCH] fancy title screen --- .gitignore | 5 +- assets/title_template.png | Bin 0 -> 51539 bytes video_creation/final_video.py | 62 +++++++++++++++++++++++- video_creation/screenshot_downloader.py | 4 ++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 assets/title_template.png diff --git a/.gitignore b/.gitignore index 41bdd5e..cc6bd18 100644 --- a/.gitignore +++ b/.gitignore @@ -231,7 +231,8 @@ fabric.properties # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser -assets/ +assets/temp +assets/backgrounds /.vscode out .DS_Store @@ -244,4 +245,4 @@ video_creation/data/videos.json video_creation/data/envvars.txt config.toml -*.exe \ No newline at end of file +*.exe diff --git a/assets/title_template.png b/assets/title_template.png new file mode 100644 index 0000000000000000000000000000000000000000..d726d4ff7188b178dc518609ebdec0a75e67fe48 GIT binary patch literal 51539 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 str: exit(1) return output_path +def create_fancy_thumbnail(image, text, text_color, padding, wrap=35): + print_step(f"Creating fancy thumbnail for: {text}") + font_title_size = 47 + font = ImageFont.truetype(os.path.join("fonts", "Roboto-Bold.ttf"), font_title_size) + image_width, image_height = image.size + lines = textwrap.wrap(text, width=wrap) + y = (image_height / 2) - (((font.getsize(text)[1] + (len(lines) * padding) / len(lines)) * len(lines)) / 2) + 30 + draw = ImageDraw.Draw(image) + + username_font = ImageFont.truetype(os.path.join("fonts", "Roboto-Bold.ttf"), 30) + draw.text((205, 825), settings.config["settings"]["channel_name"], font=username_font, fill=text_color, align="left") + + if len(lines) == 3: + lines = textwrap.wrap(text, width=wrap+10) + font_title_size = 40 + font = ImageFont.truetype(os.path.join("fonts", "Roboto-Bold.ttf"), font_title_size) + y = (image_height / 2) - (((font.getsize(text)[1] + (len(lines) * padding) / len(lines)) * len(lines)) / 2) + 35 + elif len(lines) == 4: + lines = textwrap.wrap(text, width=wrap+10) + font_title_size = 35 + font = ImageFont.truetype(os.path.join("fonts", "Roboto-Bold.ttf"), font_title_size) + y = (image_height / 2) - (((font.getsize(text)[1] + (len(lines) * padding) / len(lines)) * len(lines)) / 2) + 40 + elif len(lines) > 4: + lines = textwrap.wrap(text, width=wrap+10) + font_title_size = 30 + font = ImageFont.truetype(os.path.join("fonts", "Roboto-Bold.ttf"), font_title_size) + y = (image_height / 2) - (((font.getsize(text)[1] + (len(lines) * padding) / len(lines)) * len(lines)) / 2) + 30 + + for line in lines: + _, line_height = font.getsize(line) + draw.text((120, y), line, font=font, fill=text_color, align="left") + y += line_height + padding + + return image + def merge_background_audio(audio: ffmpeg, reddit_id: str): """Gather an audio and merge with assets/backgrounds/background.mp3 @@ -201,6 +239,28 @@ def make_final_video( image_clips = list() + Path(f"assets/temp/{reddit_id}/png").mkdir(parents=True, exist_ok=True) + + # Copyright 2024 beingbored (aka. Tim), MIT License, permission granted to use, copy, modify, and distribute. + # get the title_template image and draw a text in the middle part of it with the title of the thread + title_template = Image.open("assets/title_template.png") + + title = reddit_obj["thread_title"] + + title = name_normalize(title) + + font_color = "#000000" + padding = 5 + + # create_fancy_thumbnail(image, text, text_color, padding + title_img = create_fancy_thumbnail( + title_template, title, font_color, padding + ) + + title_img.save(f"assets/temp/{reddit_id}/png/title.png") + + # Copyright end + image_clips.insert( 0, ffmpeg.input(f"assets/temp/{reddit_id}/png/title.png")["v"].filter( diff --git a/video_creation/screenshot_downloader.py b/video_creation/screenshot_downloader.py index d688caf..d314e6d 100644 --- a/video_creation/screenshot_downloader.py +++ b/video_creation/screenshot_downloader.py @@ -67,6 +67,10 @@ def get_screenshots_of_reddit_posts(reddit_object: dict, screenshot_num: int): txtclr=txtcolor, transparent=transparent, ) + + if settings.config["settings"]["storymodemethod"] == 1: + print_substep("Storymodemethod 1 does not need screnshoots") + return screenshot_num: int with sync_playwright() as p: