How shadowmoose/redditdownloader works
Reddit Media Downloader scans configured Reddit and direct-input sources, filters their posts, extracts linked media, and saves downloads and processing state locally. Its principal run path is exposed through a terminal or web interface and coordinated by RMDController. The README also documents duplicate-image detection, resume behavior, and a web-based configuration and browsing UI. Some subsystems are represented by their exact enclosing directories because their implementation was not sampled; those connections are limited to documented capabilities or explicit sampled calls.
Main entry points: controller.py Run Controller · downloader.py Downloader · sources Source Adapters · redditloader.py Reddit Loader
Components 22
Interfaces
- Terminal UI
redditdownloader/interfaces/terminal.py - Web UI
redditdownloader/interfaces/eelwrapper.py - Web App
redditdownloader/web/js/App.js - Settings
redditdownloader/static/settings.py
Source Discovery
- Source Adapters
redditdownloader/sources - Reddit Sources
redditdownloader/sources - Pushshift Search
redditdownloader/sources/pushshift_search_source.py - Direct Inputs
redditdownloader/sources - Post Filters
redditdownloader/filters/filter.py
Download Processing
- Run Controller
redditdownloader/processing/controller.py - Reddit Loader
redditdownloader/processing/redditloader.py - Work Queue
redditdownloader/processing/wrappers/queue_reader.py - Downloader
redditdownloader/processing/downloader.py - Media Handlers
redditdownloader/processing/handlers - HTTP Downloader
redditdownloader/processing/wrappers/http_downloader.py - Image Deduplicator
redditdownloader/processing/post_processing.py
Persistence
- Manifest Database
redditdownloader/sql - Local Files
redditdownloader/static/filesystem.py
External Services
- Reddit API
- Pushshift API
- Media Sites
Other components
- User
Connections 29
- User → Terminal UI: runs
- User → Web App: configures
- Web App → Web UI: calls API
- Terminal UI → Run Controller: starts run
- Web UI → Run Controller: starts run
- Web UI → Settings: reads and saves
- Run Controller → Settings: loads config
- Settings → Source Adapters: loads configured
- Run Controller → Reddit Loader: creates
- Reddit Loader → Source Adapters: reads posts
- Source Adapters → Reddit Sources: includes
- Source Adapters → Pushshift Search: includes
- Source Adapters → Direct Inputs: includes
- Reddit Sources → Reddit API: fetches posts
- Pushshift Search → Pushshift API: searches
- Reddit Sources → Post Filters: checks posts
- Pushshift Search → Post Filters: checks posts
- Reddit Loader → Work Queue: enqueues work
- Run Controller → Downloader: creates workers
- Downloader → Work Queue: reads tasks
- Downloader → Media Handlers: dispatches links
- Media Handlers → HTTP Downloader: downloads files
- HTTP Downloader → Media Sites: fetches media
- Run Controller → Image Deduplicator: starts optionally
- Reddit Loader → Manifest Database: records posts
- Downloader → Manifest Database: records results
- Downloader → Local Files: saves downloads
- Image Deduplicator → Manifest Database: checks duplicates
- Image Deduplicator → Local Files: compares files