@ -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 (
" \n Enter 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 ( " askr eddit" )
subreddit = reddit . subreddit ( " AskR eddit" )
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