🎬Filmografia Renamer docker · NasRota · /volume1/Filmografia samudev ITDemo

12,111 files. Zero manual renames.

Filmografia Renamer lives in a container on the NAS and puts your library in order: it cross-checks TMDB with Wikipedia/Wikidata, an arbiter picks the right title for every episode, and every change goes into a journal that lets you go back. Simulate first, then — only if you are happy with it — apply.

The workflow The hard cases, solved
Filmografia Renamer — project card
12,111files analyzed in the certified SIM2 simulation
4,219proposed renames, all reversible via the journal
75files skipped on purpose: exceptions are respected

Cautious by design, not by chance

The operating cycle is always the same, and simulation is the resting state: the container touches nothing until you ask it twice.

PHASE 1

Simulation

Full preview: no real changes, just a log of what would happen.

PHASE 2

Review

Read the log and the generated PDF: every proposed rename is there, in black and white.

PHASE 3

Apply

The renames are actually carried out and recorded in the journal, line by line.

PHASE 4

Rest

Back to simulation: the safe state is the default, always.

Emergency exit. annulla_tutto is the full rollback: byte-for-byte restore verified, idempotence confirmed at zero. By design it is reachable only from the docker-compose, never from the phone — the big levers stay away from pockets.

Two brains and a remote

TMDB + Wikipedia, with an arbiter

Titles come from TMDB, and episodes are checked against the Wikipedia/Wikidata tables (cache v4). When the sources disagree, the arbiter decides season by season — as with Berlino: S1 from TMDB, S2 from wiki.

Remote from your phone

A mobile-first web UI served by main.py (standard library only, port 8095): buttons for simulate, apply and undo with confirmations, live log and an optional PIN on the actions that write.

Archive always in sync

With AGGIORNA_ARCHIVIO ("no"/"chiedi"/"si") seasons and episodes missing from the library are flagged with [Renamer] notes that clean themselves up once the missing piece arrives. Atomic writes, backup, idempotent.

A memory of every move

Every rename ends up in rename_journal.jsonl. Configuration is stripped to the bone: TMDB key, IGNORA list and the journal. No panels, no surprises.

The cases that break other renamers

The August 2026 certification goes through here: three notoriously hostile series, solved and tested.

TMDB 12971

Dragon Ball Z

Absolute numbering recognized even in a flat folder: no phantom seasons. And for Dragon Ball 1986, double titles "X a.k.a. Y" — excludable via IGNORA.txt.

TMDB 146176

Berlino

Empty cells at the end of the wiki table no longer throw the parser off; the arbiter combines the two sources and each season takes its titles from the most reliable one.

TMDB 29452

Heidi

Among the many namesake "Heidi" entries, disambiguation uses the local folder structure and vetoes the sibling series: "La serie animata" (the animated series) wins.

Your library, with the names it deserves.

Replace main.py and the two compose files, restart the container and run the first simulation: the log will tell you everything before anything happens.

Start with the simulation
Samuele Rota
Made by samudev · Samuele Rota

I built Filmografia Renamer myself, alone — and I am looking for my first role as a junior developer.

I am Samuele Rota, a self-taught full-stack developer: this is one of eight projects that I conceived, wrote and published in full. If your company is looking for a junior who delivers, write to me.