How coflyn/mori works
Mori is a cross-platform, on-device social-media downloader. Its main workflow is link intake (clipboard, manual entry, or Android sharing), platform-specific resolution, preview and format selection, then saving media to device storage. Batch downloads, playlist support, media preview, photo-to-PDF, settings and privacy locks, and scraper hot-patching are distinct product capabilities. The excerpts show app startup, batch scraping, and storage behavior; several feature connections below follow the README because their implementation was not sampled.
Main entry points: downloader/index.js Downloader core · scrapers/index.js Scraper dispatch · app.js App entry · intents.js Link intents
Components 25
Link intake
- App entry
public/js/app.js - Link intents
public/js/modules/intents.js - Batch manager
public/js/modules/batchManager.js
Media resolution
- Scraper dispatch
public/js/scrapers/index.js - Media resolver
public/js/downloader/resolver.js - Scraper hot-patching
public/js/modules/updateScrapers.js
Download and storage
- Download orchestration
public/js/modules/download.js - Downloader core
public/js/downloader/index.js - Request headers
public/js/downloader/headers.js - Filename handling
public/js/downloader/filename.js - Media post-process
public/js/downloader/postProcess.js - File storage
public/js/downloader/storage.js
App experience
- Download result UI
public/js/ui/result.js - Download history
public/js/modules/history.js - Media player
public/js/components/player.js - Photo to PDF
public/js/utils/pdfHelper.js - Settings and storage
public/js/modules/settings/index.js - Privacy lock
public/js/modules/authManager.js
Platform integration
- Android bridge
android/app/src/main/java/com/mori/downloader/MainActivity.java - Background downloads
android/app/src/main/java/com/mori/downloader/DownloadForegroundService.java - Desktop native commands
src-tauri/src/lib.rs
Other components
- User
- Scraper providers
- Device files
- Clipboard
Connections 28
- User → App entry: opens app
- Clipboard → Link intents: provides link
- User → Link intents: shares link
- App entry → Link intents: handles paste
- User → Batch manager: submits links
- Batch manager → Scraper dispatch: requests scrape
- Link intents → Scraper dispatch: requests scrape
- Scraper dispatch → Scraper providers: requests media data
- Scraper dispatch → Download result UI: returns results
- Download result UI → Download orchestration: starts download
- Download orchestration → Downloader core: dispatches download
- Downloader core → Media resolver: resolves media
- Downloader core → Request headers: prepares headers
- Downloader core → Filename handling: prepares filename
- Downloader core → Media post-process: processes media
- Downloader core → File storage: saves file
- File storage → Device files: writes media
- Download history → Device files: reads saved items
- App entry → Download history: renders history
- User → Media player: previews media
- User → Photo to PDF: creates PDF
- User → Settings and storage: configures app
- Settings and storage → Device files: manages storage
- User → Privacy lock: unlocks app
- App entry → Privacy lock: verifies lock
- Scraper hot-patching → Scraper dispatch: patches engines
- Android bridge → Background downloads: starts service
- File storage → Desktop native commands: invokes native download