pull/418/head
Jason 3 years ago
parent 1ec5f1c87f
commit 43e29af04a

@ -2,7 +2,10 @@ REDDIT_CLIENT_ID=""
REDDIT_CLIENT_SECRET="" REDDIT_CLIENT_SECRET=""
REDDIT_USERNAME="" REDDIT_USERNAME=""
REDDIT_PASSWORD="" REDDIT_PASSWORD=""
# Valid options are "yes" and "no" for the variable below
REDDIT_2FA=""
SUBREDDIT="AskReddit" SUBREDDIT="AskReddit"
ALLOW_NSFW="False" ALLOW_NSFW="False"
# Example of a PostID is ult7el
POST_ID="" POST_ID=""
THEME="LIGHT" THEME="LIGHT"

@ -31,18 +31,17 @@ These videos on TikTok, YouTube and Instagram get MILLIONS of views across all p
## Installation 👩‍💻 ## Installation 👩‍💻
1. Clone this repository 1. Clone this repository
2. Rename `.env.template` to `.env` and replace all values with the appropriate fields. To get Reddit keys (**required**), visit [the Reddit Apps page.](https://www.reddit.com/prefs/apps) TL;DR set up an app that is a "script". Copy your keys into the `.env` files. 2. Rename `.env.template` to `.env` and replace all values with the appropriate fields. To get Reddit keys (**required**), visit [the Reddit Apps page.](https://www.reddit.com/prefs/apps) TL;DR set up an app that is a "script". Copy your keys into the `.env` file, along with whether your account uses two-factor authentication.
3. Run `pip3 install -r requirements.txt` 3. Run `pip3 install -r requirements.txt`
4. install [SoX](https://sourceforge.net/projects/sox/files/sox/) 4. install [SoX](https://sourceforge.net/projects/sox/files/sox/)
5. Run `python3 main.py` 5. Run `playwright install` and `playwright install-deps`.
6. Enjoy 😎 6. Run `python3 main.py`
## Usage 7. Enjoy 😎
* an example of a reddit ID is ult7el
## Contributing & Ways to improve 📈 ## Contributing & Ways to improve 📈
In its current state, this bot does exactly what it needs to do. However, lots of improvements can be made. In its current state, this bot does exactly what it needs to do. However, lots of improvements can be made.
I have tried to simplify the code so anyone can read it and start contibuting at any skill level. Don't be shy :) contribute! I have tried to simplify the code so anyone can read it and start contributing at any skill level. Don't be shy :) contribute!
- [ ] Creating better documentation and adding a command line interface. - [ ] Creating better documentation and adding a command line interface.
- [x] Allowing users to choose a reddit thread instead of being randomized. - [x] Allowing users to choose a reddit thread instead of being randomized.

@ -7,45 +7,55 @@ from dotenv import load_dotenv
from os import getenv, environ from os import getenv, environ
from utils.videos import check_done from utils.videos import check_done
TEXT_WHITELIST = set('abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890') TEXT_WHITELIST = set('abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890')
def textify(text): def textify(text):
return ''.join(filter(TEXT_WHITELIST.__contains__, text)) return ''.join(filter(TEXT_WHITELIST.__contains__, text))
def get_subreddit_threads(): def get_subreddit_threads():
""" """
Returns a list of threads from the AskReddit subreddit. Returns a list of threads from the AskReddit subreddit.
""" """
print_step("Getting subreddit threads...") print_step("Getting subreddit threads...")
content = {} content = {}
load_dotenv() load_dotenv()
if getenv("REDDIT_2FA").casefold() == "yes":
print("\nEnter your two-factor authentication code from your authenticator app.\n")
code = input("> ")
print()
pw = getenv("REDDIT_PASSWORD")
passkey = f"{pw}:{code}"
else:
passkey = getenv("REDDIT_PASSWORD")
reddit = praw.Reddit(client_id=getenv("REDDIT_CLIENT_ID"), client_secret=getenv("REDDIT_CLIENT_SECRET"), reddit = praw.Reddit(client_id=getenv("REDDIT_CLIENT_ID"), client_secret=getenv("REDDIT_CLIENT_SECRET"),
user_agent="Accessing AskReddit threads", username=getenv("REDDIT_USERNAME"), user_agent="Accessing AskReddit threads", username=getenv("REDDIT_USERNAME"),
password=getenv("REDDIT_PASSWORD"), ) passkey=passkey, )
""" """
Ask user for subreddit input Ask user for subreddit input
""" """
if not getenv("SUBREDDIT"):
subreddit = reddit.subreddit(
input("What subreddit would you like to pull from? ")) # if the env isnt set, ask user
else:
print_substep(f"Using subreddit: r/{getenv('SUBREDDIT')} from environment variable config")
subreddit = reddit.subreddit(
getenv("SUBREDDIT")) # Allows you to specify in .env. Done for automation purposes.
if getenv('POST_ID'): if getenv('POST_ID'):
submission = reddit.submission(id=getenv('POST_ID')) submission = reddit.submission(id=getenv('POST_ID'))
else: else:
if getenv("SUBREDDIT"): # Allows you to specify in .env. Done for automation purposes.
subreddit = reddit.subreddit(getenv("SUBREDDIT"))
else:
# Prompt the user to enter a subreddit
try:
subreddit = reddit.subreddit(input("What subreddit would you like to pull from? "))
except ValueError:
subreddit = reddit.subreddit("askreddit")
print_substep("Subreddit not defined. Using AskReddit.")
threads = subreddit.hot(limit=25) threads = subreddit.hot(limit=25)
submission = list(threads)[random.randrange(0, 25)] submission = list(threads)[random.randrange(0, 25)]
submission = check_done(submission) submission = check_done(submission)
print_substep(f"Video will be: {submission.title} :thumbsup:")
print_substep( environ["VIDEO_TITLE"] = str(textify(submission.title)) # todo use global instend of env vars
f'subreddit thread is: {submission.title}\n(if you dont like this, you can change it by exiting and rerunning the program)')
environ["VIDEO_TITLE"] = str(textify(submission.title))
environ["VIDEO_ID"] = str(textify(submission.id)) environ["VIDEO_ID"] = str(textify(submission.id))
try: try:
@ -56,9 +66,9 @@ def get_subreddit_threads():
for top_level_comment in submission.comments: for top_level_comment in submission.comments:
content["comments"].append( content["comments"].append(
{"comment_body": top_level_comment.body, "comment_url": top_level_comment.permalink, {"comment_body": top_level_comment.body, "comment_url": top_level_comment.permalink,
"comment_id": top_level_comment.id, }) "comment_id": top_level_comment.id, })
except AttributeError as e: except AttributeError as e:
pass pass
print_substep("Received subreddit threads Successfully.", style="bold green") print_substep("Received subreddit thread Successfully.", style="bold green")
return content return content

Loading…
Cancel
Save