diff --git a/main.py b/main.py index 8cc3c9a..9937da6 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,8 @@ +import os +from sys import platform +if platform == "darwin": + # Check if running on MacOs, needs to add that ffmpeg.exe path + os.environ["IMAGEIO_FFMPEG_EXE"] = "/Users/orenking/audio-orchestrator-ffmpeg/bin/ffmpeg" from utils.console import print_markdown import time @@ -6,21 +11,26 @@ from video_creation.background import download_background, chop_background_video from video_creation.voices import save_text_to_mp3 from video_creation.screenshot_downloader import download_screenshots_of_reddit_posts from video_creation.final_video import make_final_video + from dotenv import load_dotenv -import os +load_dotenv() -print_markdown( - "### Thanks for using this tool! [Feel free to contribute to this project on GitHub!](https://lewismenelaws.com) If you have any questions, feel free to reach out to me on Twitter or submit a GitHub issue." -) -time.sleep(3) +def startup_config(): + + print_markdown( + "### Thanks for using this tool! [Feel free to contribute to this project on GitHub!](https://lewismenelaws.com) If you have any questions, feel free to reach out to me on Twitter or submit a GitHub issue." + ) + time.sleep(3) +def main(): + startup_config() + reddit_object = get_subreddit_threads() -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")) + download_background() + chop_background_video(length) + make_final_video(number_of_comments) -load_dotenv() -length, number_of_comments = save_text_to_mp3(reddit_object) -download_screenshots_of_reddit_posts(reddit_object, number_of_comments, os.getenv("THEME")) -download_background() -chop_background_video(length) -final_video = make_final_video(number_of_comments) +main() diff --git a/reddit/subreddit.py b/reddit/subreddit.py index 5d020fe..353afff 100644 --- a/reddit/subreddit.py +++ b/reddit/subreddit.py @@ -1,5 +1,5 @@ from utils.console import print_markdown, print_step, print_substep -import praw +from praw import Reddit import random from dotenv import load_dotenv import os @@ -11,10 +11,35 @@ def get_subreddit_threads(): Returns a list of threads from the AskReddit subreddit. """ - load_dotenv() - print_step("Getting AskReddit threads...") + passkey = handle_2FA() + reddit = Reddit( + client_id=os.getenv("REDDIT_CLIENT_ID"), + client_secret=os.getenv("REDDIT_CLIENT_SECRET"), + user_agent="Accessing AskReddit threads", + username=os.getenv("REDDIT_USERNAME"), + password=passkey, + ) + + subreddit = choose_subreddit(reddit) + + threads = subreddit.hot(limit=25) + submission = list(threads)[random.randrange(0, 25)] + print_substep(f"Video will be: {submission.title} :thumbsup:") + + content = { 'thread_url': submission.url, 'thread_title': submission.title } + content["comments"] = [{ + "comment_body": top_level_comment.body, + "comment_url": top_level_comment.permalink, + "comment_id": top_level_comment.id, + } for top_level_comment in submission.comments] + + + print_substep("Received AskReddit threads successfully.", style="bold green") + return content + +def handle_2FA(): if os.getenv("REDDIT_2FA").lower() == "yes": print( "\nEnter your two-factor authentication code from your authenticator app.\n" @@ -25,49 +50,21 @@ def get_subreddit_threads(): passkey = f"{pw}:{code}" else: passkey = os.getenv("REDDIT_PASSWORD") + + return passkey - content = {} - - reddit = praw.Reddit( - client_id=os.getenv("REDDIT_CLIENT_ID"), - client_secret=os.getenv("REDDIT_CLIENT_SECRET"), - user_agent="Accessing AskReddit threads", - username=os.getenv("REDDIT_USERNAME"), - password=passkey, - ) - +def choose_subreddit(reddit): if os.getenv("SUBREDDIT"): subreddit = reddit.subreddit(os.getenv("SUBREDDIT")) else: # ! Prompt the user to enter a subreddit try: + subreddit_name = input("What subreddit would you like to pull from? ") subreddit = reddit.subreddit( - input("What subreddit would you like to pull from? ") + subreddit_name ) except ValueError: - subreddit = reddit.subreddit("askreddit") + subreddit = reddit.subreddit("AskReddit") print_substep("Subreddit not defined. Using AskReddit.") - - threads = subreddit.hot(limit=25) - submission = list(threads)[random.randrange(0, 25)] - print_substep(f"Video will be: {submission.title} :thumbsup:") - try: - - content["thread_url"] = submission.url - content["thread_title"] = submission.title - content["comments"] = [] - - for top_level_comment in submission.comments: - content["comments"].append( - { - "comment_body": top_level_comment.body, - "comment_url": top_level_comment.permalink, - "comment_id": top_level_comment.id, - } - ) - - except AttributeError as e: - pass - print_substep("Received AskReddit threads successfully.", style="bold green") - - return content + + return subreddit \ No newline at end of file