Tool for Bulk Downloading, Organizing, and Scheduling Videos on Rumble.
This project combines a Python script to download videos and generate metadata with a JavaScript browser automation script to automatically fill in and schedule uploads on the Rumble platform.
-
Bulk Download: Downloads multiple videos from provided URLs (supports any
yt-dlpcompatible platform, such as YouTube, Rumble, etc.). -
File Organization: Saves videos and thumbnails into dedicated directories (
rumble/videosandrumble/img) with sequential numbered names (1.mp4,1.jpg,2.mp4,2.jpg, etc.). -
Scheduling Timeline: Creates an automatic publishing schedule based on a starting date and predefined hours (configured in
database.json). -
JS Script Generation: Generates a complete
rumble.jsscript, ready to be copied and pasted into the browser console, which automates filling in video details and setting up the schedule on Rumble. -
Configuration Persistence: Stores the working directory (
home_dir), scheduling hours (hours), and categories (category_primaryandcategory_secondary) indatabase.jsonfor easy repeated use.
To run the Python script, you will need:
-
Python 3 (3.8+ Recommended)
-
yt-dlp
-
Pillow (PIL) (Optional, but recommended for converting thumbnails to JPG)
# 1. Clone the repository
git clone <YOUR_REPOSITORY_URL>
cd <YOUR_REPOSITORY_NAME>
# 2. Install dependencies
pip install yt-dlp Pillow
On the first run, the get_home_dir script will prompt for four pieces of information and save them to the database.json file for future use:
home_dir: The base directory where therumble/folder (which will contain the videos and data JSON) and therumble.jsfile will be created.
- Example:
~/Documentsor/Users/user/Videos
hours: A comma-separated list of whole hours (24h format) for scheduling the uploads.
- Example:
8,12,16(for 3 uploads per day, at 8 AM, 12 PM, and 4 PM)
category_primaryThe name that should be in the Primary Category section.
- Example:
EntertainmentorAutomotive
category_secondaryThe name that should be in the Secondary Category section.
- Example:
3D Printingor24x7
NOTE: Please verify the categories correctly and copy and paste them exactly as they appear on the page https://rumble.com/upload.php the first time you run the program and it executes steps 3 and 4 above.
The Python script is responsible for downloading the videos and generating the automation file.
Bash
python rumble_youtube.py <links> <start_date>
-
<links>: A string containing the video URLs, separated by the#character. -
<start_date>: The date on which the first upload should be scheduled, inyy-mm-ddformat (Year-Month-Day).
To schedule 3 videos, starting on December 15, 2023, at the hours defined in database.json:
Bash
python rumble_youtube.py 'link1#link2#link3' 23-12-15
After the Python script execution, two important files will be generated:
-
rumble.js: In the root of yourhome_dir. This is the automation script. -
rumble/videos/: Contains the numbered videos (1.mp4,2.mp4, etc.). -
rumble/img/: Contains the numbered thumbnails (1.jpg,2.jpg, etc.). -
rumble/videos_data.json: Contains all metadata and the schedule.
-
Navigate to the Rumble upload page:
https://rumble.com/upload.php. -
Open the Console of your browser (F12 or Ctrl+Shift+J/Cmd+Option+J).
-
Copy and Paste the entire content of the
rumble.jsfile into the console and press Enter. -
The console will display instructions. Type
uploadVideo(videos[i], 1, videos.length)where is the video number minus one that you want to upload, and press Enter (Example: If you want to upload1.mp4, will be 0; if you want to upload2.mp4, will be 1) to start the process. -
REQUIRED MANUAL INTERACTION: For each video, the script will pause and prompt you to manually select the files:
-
The video (.mp4) file (e.g.,
1.mp4,2.mp4) from therumble/videosdirectory. -
The thumbnail (.jpg) file (e.g.,
1.jpg,2.jpg) from therumble/imgdirectory. -
Categories (Partially) Here you will need to click the selector and quickly click in an empty space. The program already selects the options previously configured in the database - See Initial Setup .
-
The script will handle filling in the Title, Description, Tags, and Scheduling.
-
After the submission is complete (If there are other files to be uploaded) reload the page and use the up and down arrow keys to navigate between the previously given console commands, re-execute the entire
rumble.jscode, and restart from step 4 with the updated .
⚠️ Attention: The JS script has programmed pauses so you can select the files. It is crucial to select the correct file when prompted in the console.
The file structure generated by the Python script will be similar to this:
<HOME_DIR>
├── database.json # Saved configuration (home_dir, hours, categories)
├── rumble.js # JS automation script (for console)
└── rumble/
├── videos/
│ ├── 1.mp4
│ ├── 2.mp4
│ └── ...
├── img/
│ ├── 1.jpg
│ ├── 2.jpg
│ └── ...
└── videos_data.json # JSON with all metadata and schedule
Once time you run the program it gonna erase all previous videos, thumbnails, rumble.js and videos_data.json, unless you change the location of home_dir .