Stop running 5 bloated apps to manage your media.
EXTTO is a single, lightweight Python daemon that does everything — from RSS monitoring to Telegram notifications — with a beautiful Web UI you'll actually enjoy using.
English · Italiano ↓
EXTTO replaces your entire media stack with one self-hosted app.
No more juggling Sonarr + Radarr + Prowlarr + Mylar + a torrent client + a notification bot.
Just EXTTO, running quietly on your server, doing everything automatically.
RSS feeds → Smart search → Auto-download → Rename & Archive → Telegram notification
| Feature | EXTTO | Sonarr+Radarr+Prowlarr+qBittorrent |
|---|---|---|
| Apps to install | 1 | 4+ |
| RAM usage (idle) | ~80 MB | ~600 MB+ |
| Comic book support | ✅ Native | ❌ Needs Mylar |
| eMule / eD2k fallback | ✅ Built-in | ❌ Not possible |
| RAM disk downloads | ✅ Built-in | ❌ Not possible |
| Multi-engine web search | ✅ 6 engines | ❌ Indexer only |
| Cloudflare bypass | ✅ FlareSolverr | ❌ Not possible |
| Tag-based folder routing | ✅ Built-in | ❌ Manual |
| Webhook notifications | ✅ Built-in | ❌ Via plugins only |
| Smart gap-fill cooldown | ✅ 24 h per episode | ❌ Retries every cycle |
| Automatic backup + Telegram | ✅ Built-in | ❌ Not possible |
| Quality score editor | ✅ Full Web UI | |
| Per-title exclude rules | ✅ Built-in | ❌ Not possible |
| Download source tracking | ✅ Per-torrent tag | ❌ Not available |
| Web UI | ✅ Modern, flat | Mixed |
Monitors RSS feeds, searches Jackett/Prowlarr indexers, scores release quality, downloads via libtorrent (embedded) or your existing qBittorrent / Transmission / aria2, renames files with TMDB metadata, archives to your NAS, notifies you. All automatic.
When your indexers come up empty, EXTTO fans out across 6 public search engines simultaneously:
BitSearch · The Pirate Bay · Knaben · BTDigg · LimeTorrents · Torrentz2
Engines protected by Cloudflare are bypassed transparently via the optional FlareSolverr sidecar. Web search fires both in scheduled cycles and in manually triggered ones — so when you hit "Search Now" you get the full search network, not just RSS.
Assign a tag to any download (automatically or at the moment you add a magnet/torrent) and EXTTO routes the completed file to the matching folder. Series go to /media/tv, documentaries to /media/docs, comics to /media/comics — zero manual sorting.
Protect your SSD. EXTTO downloads small torrents directly to a tmpfs RAM disk and moves them to permanent storage only when 100% complete. Zero SSD writes during download.
Capacity is checked atomically — if two torrents are accepted simultaneously, only one gets the RAM slot; the other falls back to disk without races or tmpfs overflow.
Still hunting that obscure 2003 documentary no one seeds anymore? EXTTO integrates with amuled and automatically falls back to the eD2k network when torrents fail. No other media manager does this.
Weekly packs, single issues, automatic monitoring. Downloads directly from GetComics via Mega.nz or torrent. No plugins, no workarounds.
EXTTO scores every release (4K, HDR10, Dolby Vision, DTS-X, codec, source...) and automatically replaces your existing file when a better version is found.
Every weight — resolution, source, codec, audio, release group, DV/REAL/PROPER bonuses — is editable directly from the Web UI without touching any config file. No YAML, no restart.
The settings page is organized in collapsible accordion sections (state saved in localStorage) with a dedicated Integrations tab for Trakt and Jellyfin. A red dot appears on any tab with unsaved changes so you never lose edits by accident.
Two levels of filtering: the Blacklist blocks at parse time but still archives the item for deduplication. The Category Filter blocks and prevents archiving entirely — those items don't exist for EXTTO. Perfect for permanently ignoring cam-rips, CAM-quality, or entire release groups.
Click a magnet: link or a .torrent file anywhere in your browser — EXTTO receives it instantly. One-time setup via a script generated directly from the Web UI, already configured with your server URL.
Connect EXTTO to any external service — ntfy, Gotify, n8n, Home Assistant, Make, Zapier — with a single URL.
Every download, upgrade, gap-fill, and system event fires a signed JSON POST to your endpoint.
Optional HMAC-SHA256 signature for secure verification. No plugins, no extra setup.
notify_webhook_url = https://ntfy.sh/my-channel
notify_webhook_secret = mysecret # optional, signs payloads
The gap-filler is smarter now. For each missing episode it tracks the last time a live indexer search was performed.
The local archive is always scanned (free), but Jackett and web-search queries fire at most once per 24 hours per episode — no more hammering your indexers for the same buco every 6-hour cycle.
A configurable gap_fill_max_per_series cap prevents a series with many gaps from monopolising search slots.
When an Italian RSS feed publishes a release under an alternative title (e.g. "Agenti di S.H.I.E.L.D." instead of the configured "Agents of S.H.I.E.L.D."), EXTTO now recognises it automatically.
Aliases defined in the series config are checked at every stage — RSS parsing, deduplication, feed-match tracking, and gap-fill search queries.
EXTTO backs itself up automatically. Archives rotate with a GFS scheme (daily / weekly / monthly / yearly), are sent straight to your Telegram chat, and can optionally be uploaded to FTP or Dropbox — all configured from the Web UI, zero external scripts needed.
Beyond the global blacklist, each series or movie can carry its own exclude word list. Useful to separate a sequel from its original, block a specific release group only for one title, or skip extended cuts of a single film — without affecting anything else.
Every torrent EXTTO accepts is tagged with its origin (Jackett, ThePirateBay, Knaben, RSS Feed, Timeframe, Comics…). Visible in the download list and useful to trace retrospectively where a file came from.
VPN killswitch that binds all traffic to tun0/wg0. Automatic IP blocklist updates. Your downloads stay private.
Web UI available in Italian, English, German, French, Spanish. Translations managed via YAML files — easy to extend.
git clone https://github.com/buzzqw/extto.git
cd extto
chmod +x setup.sh start.sh
./setup.sh./setup.sh --upgrade # force-upgrade all Python packagesAs a systemd service (recommended):
sudo systemctl enable extto.service
sudo systemctl start extto.serviceManually:
./start.sh # engine + Web UI on port 5000
./start.sh --tui # engine + full-screen Terminal UIOpen http://localhost:5000 in your browser.
EXTTO is free, open-source software built entirely in spare time.
If it saves you hours of configuration, RAM, or disk wear — consider buying the author a coffee.
Every donation directly funds new features, bug fixes, and keeping the project alive.
Getting the right movie — and not a wrong one with a similar title — depends on how you configure it.
Tip — per-movie exclude words: the
Excludefield accepts comma-separated words that must not appear in the release title. Use it to separate sequels (romulus), avoid director's cuts, or block a release group that works badly for that single title only.
| Field | Recommendation |
|---|---|
| Name | Use at least 2 distinctive words from the title |
| Year | Always set it. Without a year the first title match wins — risky for short or generic names |
| Exclude | Comma-separated words that must NOT appear: e.g. extended,directors cut,romulus — use this to separate a sequel from its original |
How matching works: EXTTO checks that every word in your configured name appears (word-boundary match) in the full RSS release title. If a year is set, the release year must be within ±1. The exclude list vetoes the match if any of those words appear.
Safe config example:
Name: Gladiator II
Year: 2024
Exclude: (empty)
Risky config (will match any release containing "alien"):
Name: Alien
Year: (empty)
EXTTO is a download automation tool. It does not host, index, or distribute any copyrighted content.
- EXTTO connects to indexers you configure (Jackett, Prowlarr, public RSS feeds). It has no built-in index.
- What you download is entirely your responsibility. Use EXTTO only for content you have the right to access — public domain, Creative Commons, or media you own.
- The eMule/eD2k and torrent integrations are neutral technologies. EXTTO does not encourage or facilitate piracy.
- This project is released under the EUPL 1.2 open-source license.
"With great automation comes great responsibility."
Basta tenere accesi 5 programmi pesanti per gestire i tuoi media.
EXTTO è un singolo, leggerissimo servizio Python che fa tutto — dal monitoraggio RSS alle notifiche Telegram — con una Web UI moderna che userai volentieri.
EXTTO sostituisce l'intero stack media con una sola app self-hosted.
Niente più Sonarr + Radarr + Prowlarr + Mylar + client torrent + bot notifiche.
Solo EXTTO, in esecuzione silenziosa sul tuo server, che fa tutto in automatico.
Feed RSS → Ricerca intelligente → Download automatico → Rinomina & Archivia → Notifica Telegram
| Funzionalità | EXTTO | Sonarr+Radarr+Prowlarr+qBittorrent |
|---|---|---|
| App da installare | 1 | 4+ |
| RAM a riposo | ~80 MB | ~600 MB+ |
| Fumetti nativi | ✅ Integrato | ❌ Serve Mylar |
| Fallback eMule / eD2k | ✅ Integrato | ❌ Impossibile |
| Download in RAM disk | ✅ Integrato | ❌ Impossibile |
| Ricerca web multi-motore | ✅ 6 motori | ❌ Solo indexer |
| Bypass Cloudflare | ✅ FlareSolverr | ❌ Impossibile |
| Cartelle per tag | ✅ Integrato | ❌ Manuale |
| Notifiche webhook | ✅ Integrato | ❌ Solo tramite plugin |
| Gap fill con cooldown | ✅ 24 h per episodio | ❌ Riprova ad ogni ciclo |
| Backup automatico + invio Telegram | ✅ Integrato | ❌ Impossibile |
| Editor pesi qualità | ✅ Web UI completa | |
| Regole esclusione per titolo | ✅ Integrato | ❌ Impossibile |
| Tracciamento sorgente download | ✅ Per torrent | ❌ Non disponibile |
| Web UI | ✅ Moderna, flat | Variabile |
Monitora feed RSS, cerca su indexer Jackett/Prowlarr, valuta la qualità delle release, scarica via libtorrent (integrato) oppure qBittorrent / Transmission / aria2 esistenti, rinomina con metadati TMDB, archivia sul NAS, notifica su Telegram. Tutto automatico.
Quando gli indexer non trovano nulla, EXTTO espande la ricerca su 6 motori pubblici in parallelo:
BitSearch · The Pirate Bay · Knaben · BTDigg · LimeTorrents · Torrentz2
I motori protetti da Cloudflare vengono attraversati in modo trasparente tramite il sidecar opzionale FlareSolverr. La ricerca web scatta sia nei cicli schedulati sia in quelli avviati manualmente — quindi premendo "Controlla ora" si ottiene l'intera rete di ricerca, non solo RSS.
Assegna un tag a qualsiasi download (automaticamente o al momento in cui aggiungi un magnet/torrent) e EXTTO instrada il file completato nella cartella corrispondente. Serie in /media/tv, documentari in /media/docs, fumetti in /media/comics — zero ordinamento manuale.
Proteggi il tuo SSD. EXTTO scarica i torrent piccoli direttamente su un RAM disk tmpfs e li sposta in archivio solo a completamento al 100%. Zero scritture SSD durante il download.
La capacità viene verificata in modo atomico — se due torrent vengono accettati quasi contemporaneamente, solo uno occupa lo slot RAM; l'altro ricade su disco senza race condition né overflow del tmpfs.
Cerchi quel documentario oscuro del 2003 che nessuno seedca più? EXTTO si integra con amuled e cade automaticamente sulla rete eD2k quando i torrent falliscono. Nessun altro media manager lo fa.
Weekly pack, numeri singoli, monitoraggio automatico. Download direttamente da GetComics via Mega.nz o torrent. Senza plugin, senza workaround.
EXTTO valuta ogni release (4K, HDR10, Dolby Vision, DTS-X, codec, sorgente...) e sostituisce automaticamente il file esistente quando trova una versione migliore.
Ogni peso — risoluzione, sorgente, codec, audio, gruppi, bonus DV/REAL/PROPER — è modificabile direttamente dalla Web UI senza toccare alcun file di configurazione. Niente YAML, niente riavvio.
La pagina impostazioni è organizzata in sezioni accordion collassabili (stato salvato in localStorage) con un tab dedicato Integrazioni per Trakt e Jellyfin. Un pallino rosso compare su ogni tab con modifiche non salvate, così non perdi mai le impostazioni per errore.
Due livelli di filtraggio: la Blacklist blocca al parsing ma archivia comunque l'item per deduplicazione. Il Filtro Categorie blocca e impedisce l'archiviazione — quegli item non esistono per EXTTO. Perfetto per ignorare definitivamente cam-rip, qualità CAM o interi release group.
Clicca su un link magnet: o su un file .torrent ovunque nel browser — EXTTO lo riceve istantaneamente. Setup unico via uno script generato direttamente dalla Web UI, già configurato con l'URL del tuo server.
Collega EXTTO a qualsiasi servizio esterno — ntfy, Gotify, n8n, Home Assistant, Make, Zapier — con un solo URL.
Ogni download, upgrade, gap-fill ed evento di sistema invia un POST JSON firmato al tuo endpoint.
Firma HMAC-SHA256 opzionale per la verifica sicura. Nessun plugin, nessuna configurazione aggiuntiva.
notify_webhook_url = https://ntfy.sh/mio-canale
notify_webhook_secret = segreto # opzionale, firma i payload
Il gap filler è diventato più intelligente. Per ogni episodio mancante tiene traccia dell'ultima volta che è stata eseguita una ricerca live su un indexer.
L'archivio locale viene sempre interrogato (è gratis), ma le query a Jackett e ai motori web vengono eseguite al massimo una volta ogni 24 ore per episodio — fine allo spam degli indexer ad ogni ciclo di 6 ore.
Un parametro gap_fill_max_per_series configurabile impedisce a una serie con molti buchi di monopolizzare tutti gli slot di ricerca.
Quando un feed RSS italiano pubblica una release con un titolo alternativo (es. "Agenti di S.H.I.E.L.D." invece del nome configurato "Agents of S.H.I.E.L.D."), EXTTO ora la riconosce automaticamente.
Gli alias definiti nella configurazione della serie vengono controllati in ogni fase — parsing RSS, deduplicazione, tracciamento feed-match e query di gap-fill.
EXTTO si fa il backup da solo. Gli archivi ruotano con schema GFS (giornaliero / settimanale / mensile / annuale), vengono inviati direttamente nella tua chat Telegram e possono essere caricati opzionalmente su FTP o Dropbox — tutto configurabile dalla Web UI, senza script esterni.
Oltre alla blacklist globale, ogni serie o film può avere la propria lista di parole da escludere. Utile per separare un sequel dall'originale, bloccare un release group problematico solo per quel titolo, o saltare le versioni extended di un singolo film — senza influenzare il resto.
Ogni torrent accettato da EXTTO viene etichettato con la sorgente di provenienza (Jackett, ThePirateBay, Knaben, Feed RSS, Timeframe, Fumetti…). Visibile nella lista download, utile per risalire retrospettivamente all'origine di un file.
VPN killswitch che vincola il traffico a tun0/wg0. Aggiornamento automatico delle IP blocklist. I tuoi download restano privati.
Web UI disponibile in Italiano, Inglese, Tedesco, Francese, Spagnolo. Traduzioni gestite via file YAML — facile da estendere.
git clone https://github.com/buzzqw/extto.git
cd extto
chmod +x setup.sh start.sh
./setup.sh./setup.sh --upgrade # forza l'aggiornamento dei pacchetti PythonCome servizio systemd (raccomandato):
sudo systemctl enable extto.service
sudo systemctl start extto.serviceManuale:
./start.sh # motore + Web UI sulla porta 5000
./start.sh --tui # motore + interfaccia da Terminale a schermo interoApri http://localhost:5000 nel browser.
Ottenere il film giusto — e non uno con un titolo simile — dipende da come lo configuri.
Suggerimento — parole di esclusione per film: il campo
Escludiaccetta parole separate da virgola che NON devono comparire nel titolo della release. Usalo per separare sequel (romulus), evitare le versioni director's cut, o bloccare un release group che funziona male solo per quel titolo.
| Campo | Raccomandazione |
|---|---|
| Nome | Usa almeno 2 parole caratterizzanti del titolo |
| Anno | Impostalo sempre. Senza anno vince il primo match per nome — pericoloso per titoli corti o generici |
| Escludi | Parole separate da virgola che NON devono comparire nel titolo: es. extended,directors cut,romulus — usalo per separare un sequel dall'originale |
Come funziona il matching: EXTTO verifica che ogni parola del nome configurato sia presente (word-boundary) nel titolo RSS completo. Se l'anno è impostato, l'anno della release deve corrispondere ±1. La lista Escludi veta il match se una di quelle parole compare.
Config sicura:
Nome: Il Gladiatore II
Anno: 2024
Escludi: (vuoto)
Config rischiosa (cattura qualsiasi release con "alien"):
Nome: Alien
Anno: (vuoto)
EXTTO è software libero e open-source, costruito interamente nel tempo libero.
Se ti fa risparmiare ore di configurazione, RAM, o usura del disco — considera di offrire un caffè all'autore.
Ogni donazione finanzia direttamente nuove funzionalità, correzioni di bug e la sopravvivenza del progetto.
EXTTO è uno strumento di automazione dei download. Non ospita, non indicizza e non distribuisce alcun contenuto protetto da copyright.
- EXTTO si connette agli indexer che configuri tu (Jackett, Prowlarr, feed RSS pubblici). Non ha un indice integrato.
- Ciò che scarichi è interamente sotto la tua responsabilità. Usa EXTTO solo per contenuti che hai il diritto di accedere — dominio pubblico, licenze Creative Commons, o media di tua proprietà.
- Le integrazioni eMule/eD2k e torrent sono tecnologie neutrali. EXTTO non incoraggia né facilita la pirateria.
- Questo progetto è rilasciato sotto licenza open-source EUPL 1.2.
"Con grande automazione viene grande responsabilità."