add translation feature

pull/487/head
alperen cantez 3 years ago
parent c579298530
commit b595b6e1ca

@ -91,10 +91,19 @@ console.log("[bold green]Enviroment Variables are set! Continuing...")
if configured:
reddit_object = get_subreddit_threads()
length, number_of_comments = save_text_to_mp3(reddit_object)
download_screenshots_of_reddit_posts(
reddit_object, number_of_comments, os.getenv("THEME", "light")
)
get_language = input("Choose a target language to translate the post to (e.g. 'es' for Spanish): ")
try:
length, number_of_comments = save_text_to_mp3(reddit_object, get_language)
download_screenshots_of_reddit_posts(
reddit_object, number_of_comments, os.getenv("THEME", "light"), get_language
)
except:
print_markdown("## Unfortunately, we don't have a support for that language yet so this thread will not be translated.")
length, number_of_comments = save_text_to_mp3(reddit_object, "en")
download_screenshots_of_reddit_posts(reddit_object, number_of_comments, "en")
download_background()
chop_background_video(length)
final_video = make_final_video(number_of_comments)

@ -3,9 +3,11 @@ from pathlib import Path
from rich.progress import track
from utils.console import print_step, print_substep
import json
import translators as ts
from PIL import Image, ImageDraw, ImageFont
import textwrap
def download_screenshots_of_reddit_posts(reddit_object, screenshot_num, theme):
def download_screenshots_of_reddit_posts(reddit_object, screenshot_num, theme, target_lang):
"""Downloads screenshots of reddit posts as they are seen on the web.
Args:
@ -38,10 +40,26 @@ def download_screenshots_of_reddit_posts(reddit_object, screenshot_num, theme):
print_substep("Post is NSFW. You are spicy...")
page.locator('[data-testid="content-gate"] button').click()
texts_in_tl = ts.bing(reddit_object["title"], to_language=target_lang)
page.locator('[data-test-id="post-content"]').screenshot(
path="assets/png/title.png"
)
# rewrite the title in target language
img = Image.open("assets/png/title.png")
width = img.size[0]
height = img.size[1]
d1 = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 22)
w, h = font.getsize(new_str)
d1.rectangle((9, 25, 20 + width, 55 + h), fill='white')
d1.text((10, 25), f"{new_str}", font=font, fill=(0, 0, 0))
img.save("assets/png/title.png")
for idx, comment in track(
enumerate(reddit_object["comments"]), "Downloading screenshots..."
):
@ -58,5 +76,22 @@ def download_screenshots_of_reddit_posts(reddit_object, screenshot_num, theme):
path=f"assets/png/comment_{idx}.png"
)
# translating the comments
img_comment = Image.open(f"assets/png/comment_{idx}.png")
width = img_comment.size[0]
height = img_comment.size[1]
comment_tl = ts.bing(comment["comment_body"], to_language=target_lang)
wrapper = textwrap.TextWrapper(width=78)
wrapped_str = wrapper.fill(text=comment_tl)
d2 = ImageDraw.Draw(img_comment)
font_comment = ImageFont.truetype("arial.ttf", 16)
d2.rectangle((9, 45, width - 10, height - 35), fill='#F5F6F6')
d2.text((10, 48), f"{wrapped_str}", font=font_comment, fill=(0, 0, 0))
img_comment.save(f"assets/png/comment_{idx}.png")
print_substep("Screenshots downloaded Successfully.",
style="bold green")

@ -3,9 +3,9 @@ from pathlib import Path
from mutagen.mp3 import MP3
from utils.console import print_step, print_substep
from rich.progress import track
import translators as ts
def save_text_to_mp3(reddit_obj):
def save_text_to_mp3(reddit_obj, target_lang):
"""Saves Text to MP3 files.
Args:
@ -16,8 +16,9 @@ def save_text_to_mp3(reddit_obj):
# Create a folder for the mp3 files.
Path("assets/mp3").mkdir(parents=True, exist_ok=True)
tl_title = ts.bing(reddit_obj["thread_title"], to_language=target_lang)
tts = gTTS(text=reddit_obj["thread_title"], lang="en", slow=False)
tts = gTTS(text=tl_title, lang=target_lang, slow=False)
tts.save(f"assets/mp3/title.mp3")
length += MP3(f"assets/mp3/title.mp3").info.length
@ -27,7 +28,7 @@ def save_text_to_mp3(reddit_obj):
pass
if reddit_obj["thread_post"] != "":
tts = gTTS(text=reddit_obj["thread_post"], lang="en", slow=False)
tts = gTTS(text=reddit_obj["thread_post"], lang=target_lang, slow=False)
tts.save(f"assets/mp3/posttext.mp3")
length += MP3(f"assets/mp3/posttext.mp3").info.length
@ -35,7 +36,9 @@ def save_text_to_mp3(reddit_obj):
# ! Stop creating mp3 files if the length is greater than 50 seconds. This can be longer, but this is just a good starting point
if length > 50:
break
tts = gTTS(text=comment["comment_body"], lang="en", slow=False)
tl_comment = ts.bing(comment["comment_body"], to_language=target_lang)
tts = gTTS(text=tl_comment, lang=target_lang, slow=False)
tts.save(f"assets/mp3/{idx}.mp3")
length += MP3(f"assets/mp3/{idx}.mp3").info.length

Loading…
Cancel
Save