Files
rename-mvp/docs/ARCHITECTURE.md
2026-03-07 12:12:54 +01:00

2.0 KiB

ARCHITECTURE.md

Project

Rename-MVP

Webapplicatie voor het hernoemen van mediabestanden op basis van metadata van TheTVDB.


High Level Architecture

browser

FastAPI backend

TVDB service

TheTVDB API


Container Architecture

Runtime:

Rootless Podman container

Image:

rename-mvp

Expose:

8085 → 8080


Volumes

Host en container gebruiken identieke paden.

Volumes:

/Volumes/8TB/Shared_Folders/TV_Shows → /Volumes/8TB/Shared_Folders/TV_Shows

/Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows → /Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows

/home/kodi/.config/rename-mvp/data → /app/data


Allowed Media Roots

De applicatie mag alleen bestanden lezen of wijzigen binnen de volgende directories:

/Volumes/8TB/Shared_Folders/TV_Shows

/Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows

Alle file operations moeten binnen deze paden blijven.


Backend Modules

Belangrijke modules:

tvdb_auth_service
tvdb_client
tvdb_service
file_service
preview_service
rename_service
session_service


TVDB Authentication Flow

1 login via /login
2 ontvang JWT token
3 decode JWT payload
4 lees exp claim
5 bereken renew_after

token wordt opgeslagen in:

/app/data/tvdb_auth.json


Token Lifecycle

Token wordt alleen vernieuwd als:

now >= renew_after

of

TVDB response 401 geeft.

Token wordt niet bij elke request vernieuwd.


File Rename Flow

1 user selecteert serie
2 afleveringen worden geladen
3 user selecteert afleveringen
4 user selecteert bestanden
5 backend genereert preview
6 user bevestigt rename
7 backend voert rename uit


Data Storage

SQLite:

session state
rename logs

JSON:

tvdb_auth.json


Naming Format

Bestandsnaam:

{series} ({year}) - S{season:02}E{episode:02} - {title}{ext}

Voorbeeld:

Elsbeth (2024) - S02E03 - Devil's Night.mkv


Invariants

Deze eigenschappen mogen niet veranderen:

  • API endpoints
  • rename template
  • token renew logic
  • container runtime