Reddit Compilation Maker is a Python tool created to automatically create compilations from subreddits content. Can be used to synthesize the trending videos into compilations, automate content generation for social media, and much more.
This program relies on bulk-downloader-for-reddit
, which in turn needs ffmpeg
to work correctly.
You also need numpy
and moviepy
.
- On Linux: run
sudo apt install ffmpeg
- On Windows:
- Download the installer from here or here and run it
- Add
ffmpeg
to yourPath
:- Go to Environment Variables
- Select
Path
-> Edit -> New and addC:\FFmpeg\bin
(or wherever you installedffmpeg
at the previous step)
- On MacOS:
- Install Homebrew
- Run
brew install ffmpeg
Run python -m pip install numpy moviepy
Just edit settings.py
to include all the subreddits you want. To make the script more flexible, topics
allows to keep track of multiple topics. This means that the final output will mix videos from all the subreddits provided for each topic.
Each topics
element is a dictionary with the following format:
{
"name": "MyTopic",
"subreddits": [ {"name": "first-sub", "sort": "top", "time": "week", "limit": 10},
{"name": "second-sub", "sort": "hot", "time": "month", "limit": 20} ],
"MAX_CLIP_TIME": 60.0, # seconds
"MAX_SUBCLIP_TIME": 20.0, # seconds
}
In the example above, the script will generate a compilation "MyTopic" containing videos from "first-sub" and "second-sub" (add as many as you wish).
The videos will be selected by taking the first 10 and 20 posts of each subreddit, sorted by "top of the last week" in the first case and "hot in the last month" in the second case.
Videos longer than MAX_SUBCLIP_TIME
will be discarded, and a single compilation won't be longer than MAX_CLIP_TIME
. If the total duration of the videos is longer than MAX_CLIP_TIME
, multiple compilations are generated.
Feel free to add as many compilation topics as you want by populating topics
with more dictionaries in settings.py
.
Run python main.py
from the command line.
These options are taken from the original bulk-downloader-for-reddit
repo:
sort
: acceptshot
,top
,new
,rising
,controversial
andrelevance
time
: acceptshour
,day
,week
,month
,year
andall
Note that videos are currently being sorted by order inside each compilation video. This suited my use case, but you can change it in main.py
.