Skip to content

Repository files navigation

SHRI-Tools

Build & Push Docker Image Build & Release

Node.js Electron Docker Image Release License: SHRITPL v1.0

Applicazione desktop (Electron) per la gestione completa delle release su tracker Unit3D: rinomina file/cartelle secondo le rules del tracker, generazione BBCode, upload integrato e analisi di torrent gia` pubblicati.


Installazione (utente finale)

Scarica l'ultima versione dalla pagina Releases e lancia il file .exe — nessuna installazione richiesta, e` un eseguibile portabile.


Funzioni principali

1. Rinomina file/cartelle

  • Auto-detect di titolo, anno, stagione, episodio dal nome file e dai metadata.
  • Parsing MediaInfo/BDInfo per codec, audio, HDR e sorgente.
  • Rilevamento automatico del tag servizio streaming dal nome originale (NF, AMZN, HMAX, ATVP, DSNP, ecc.) — il tag viene sempre preservato nel nome rinominato anche se non selezionato manualmente.
  • Popup disambiguazione formato: quando il formato non è rilevabile dal nome file o da MediaInfo, compare un popup che chiede di selezionare il formato corretto (WEB-DL, WEBRip, Encode, Remux, Full Disc). Se si seleziona Encode viene chiesta anche la sorgente (BluRay, UHD BluRay, WEBRip, DVD, HDTV). Il popup compare anche per contenuti rilevati come Encode che potrebbero essere WEB-DL (es. NF/HMAX).
  • Gestione multi-episode (es. S01E01-E02).
  • Anteprima del piano di rinomina prima di applicare.
  • Regole di naming allineate al tracker (vedi docs/RULES.txt).

2. Modalita` Integrata (Upload Wizard)

  • Workflow guidato a step con suggerimento titolo automatico.
  • Generazione BBCode per la descrizione del torrent con footer Generated by SHRI-Tools vX.X.X.
  • Creazione .torrent (tramite create-torrent o mkbrr).
  • Dupe check automatico sul tracker con filtri dedicati.
  • Upload diretto al tracker + invio al client torrent (qBittorrent / Transmission).
  • Compatibile con qBittorrent 5.2.0+ (gestione cookie QBT_SID_<porta>, header CSRF, risposta HTTP 204).
  • Cartella job: al termine del flusso viene creata automaticamente una cartella <OutputDir>/<Titolo>/ con file a nome fisso:
    • BASE.torrent — torrent generato localmente
    • MEDIAINFO.txt — output MediaInfo completo
    • DEBUG.txt — log diagnostico
    • [SHRI]DESCRIPTION.txt — BBCode della descrizione
    • image_data.json — dati screenshot per ripristino automatico
    • image_urls.txt — URL degli screenshot caricati, uno per riga

3. Analisi Tracker

  • Inserisci un link Unit3D e ottieni:
    • titolo suggerito secondo le rules,
    • MediaInfo sintetico,
    • badge ID meta copiabili,
    • segnalazione mismatch ID,
    • BBCode generato automaticamente dai metadati del torrent analizzato.
  • Al termine dell'analisi si apre il modal BBCode con i tasti:
    • Modifica — abilita la modifica diretta del testo
    • Anteprima — rendering visivo del BBCode
    • Copia — copia negli appunti
  • Il footer del BBCode generato da analisi riporta Edited by SHRI-Tools vX.X.X per distinguerlo da una descrizione creata ex novo.
  • Il pulsante Anteprima BBCode nell'area azioni principali apre lo stesso modal in qualsiasi momento, anche senza passare dall'analisi tracker.

4. Generazione Screenshot

  • Cattura automatica dei frame tramite FFmpeg con tempi ottimizzati.
  • Supporto HDR con tonemapping automatico (fallback senza tonemap se necessario).
  • Upload su imgBB o PTScreens con fallback automatico.
  • I file screenshot vengono nominati automaticamente con il titolo e l'anno del contenuto (es. Cast_Away_1996_01.png, The_Flash_2022_01.png).
  • Pannello log diagnostico (Impostazioni -> Apri log) per analizzare ogni fase: durata rilevata, calcolo tempi, esito cattura e upload per ogni screen.

Modalita` operative

Modalita` Descrizione
File/Cartella Analisi locale e rinomina
Upload Wizard Integrata Upload completo gestito da SHRI-Tools
Analisi Tracker Analisi torrent gia` presenti sul tracker

Impostazioni (panoramica)

Generali (valide in tutte le modalita`)

  • TMDb key: auto-matching e metadata film/serie.
  • TVDb key: auto-matching per serie/episodi.
  • OMDb key: fallback metadata via IMDb.
  • Lingua preferita: influenza titoli/descrizioni recuperate (es. it-IT).
  • Lista servizi: elenco personalizzato servizi streaming per dropdown.
  • Lista tag gruppo: elenco personalizzato tag gruppo.
  • Auto-detect tag gruppo: rileva il tag dal nome file/cartella.
  • Auto-NoGroup: applica NoGroup se non esiste un tag gruppo.
  • Lingua nei nomi cartella / file: include o omette il tag lingua.
  • Ometti NoGroup in file/cartelle: non scrive NoGroup nei nomi (resta valido nei titoli).
  • Auto-apply suggerimenti: applica automaticamente i suggerimenti di formato/source/codec.
  • Percorso BDInfo: eseguibile BDInfo (per dischi Blu-ray).
  • Percorso FFmpeg: necessario per la generazione degli screenshot.
  • Numero screenshot: quanti frame catturare.
  • Host immagini primario / fallback: imgBB o PTScreens.
  • imgBB key / PTScreens key: API key per l'upload degli screenshot.

Modalita` Integrata (Upload Wizard)

  • Unit3D Base URL: URL del tracker di destinazione.
  • Unit3D API key: necessaria per upload, analisi e dupe check.
  • Upload anonimo / Personal release / Mod queue: flag upload.
  • Override category / type / resolution: mapping custom ID Unit3D.
  • Announce URL / passkey: per la generazione del .torrent.
  • Output torrent: cartella di destinazione del file .torrent.
  • mkbrr path / mkbrr workers: eseguibile e parallelismo per hashing.
  • Torrent private: flag private nel .torrent.
  • Client torrent: qBittorrent o Transmission.

qBittorrent

  • Host / Porta / HTTPS, Username / Password.
  • Save path, Categoria (supporto categorie multiple separate da virgola), Auto-start.
  • Path mapping locale/remoto (quando il client e` su altra macchina).

Transmission

  • Host / Porta / HTTPS, Username / Password.
  • Save path, Auto-start.
  • Path mapping locale/remoto.

Impostazioni avanzate

  • Override ID Unit3D (category/type/resolution) se l'istanza ha ID diversi dagli standard SHRI.
  • Dettagli path mapping client remoto.

Avvio in modalita` sviluppo

Richiede Node.js 20+ e Git.

git clone https://github.com/tiberio87/SHRI-Tools.git
cd SHRI-Tools
npm install
npm start

Build dell'eseguibile (.exe portabile)

npm run dist

Il file viene generato in dist/SHRI-Tools <versione>.exe.

Le release ufficiali vengono compilate automaticamente da GitHub Actions ad ogni nuovo tag v*.*.* e allegate direttamente alla pagina Releases.


Esecuzione con Docker

Il repository include una configurazione Docker per eseguire l'app Electron in un container Ubuntu 22.04 con:

  • TigerVNC (Xtigervnc + fluxbox) — accesso GUI via client VNC sulla porta 5901;
  • noVNC — accesso GUI via browser sulla porta 6080 (nessuna installazione richiesta);
  • ffmpeg, mkvtoolnix installati via apt;
  • mkbrr e bdinfo scaricati automaticamente durante il build come binari di sistema;
  • percorsi degli strumenti preconfigurati automaticamente al primo avvio su Linux.

Build e avvio

Opzione consigliata — immagine pre-buildata (nessun build locale)

docker compose pull && docker compose up -d

L'immagine ufficiale viene pubblicata automaticamente su GitHub Container Registry ad ogni release: ghcr.io/tiberio87/shri-tools:latest.

Opzione alternativa — build locale

docker compose build && docker compose up -d

Per fermare il container:

docker compose down

Accesso alla GUI

Opzione 1 — Browser (consigliata, nessun client richiesto)

Apri http://localhost:6080/vnc.html e clicca Connect.

Opzione 2 — Client VNC

Connettiti a localhost:5901 (o <host>:5901 da un'altra macchina) con qualsiasi client VNC. Non è richiesta password.

Sicurezza: l'accesso VNC non è autenticato. Usare solo in rete locale o privata. Non esporre le porte 5901/6080 su Internet senza un layer di autenticazione (es. reverse proxy con auth, tunnel SSH).

Personalizzazione (volumi, porte, PUID/PGID)

Il file docker-compose.yml è tracciato da git: non modificarlo direttamente, altrimenti ogni git pull potrebbe generare conflitti.

Per personalizzare la configurazione usa il meccanismo di override nativo di Docker Compose:

cp docker-compose.override.yml.example docker-compose.override.yml

Poi modifica docker-compose.override.yml con le tue impostazioni. Il file è già in .gitignore quindi le tue modifiche non interferiranno mai con gli aggiornamenti futuri. Docker Compose lo fonde automaticamente con docker-compose.yml ad ogni docker compose up.

PUID / PGID

Per evitare che i file creati nei volumi siano di proprietà di root sull'host, imposta PUID e PGID con i tuoi UID/GID:

# Trova i tuoi ID
id -u && id -g

Nel file docker-compose.override.yml:

services:
  shri-tools:
    environment:
      - PUID=1000   # sostituisci con il tuo UID
      - PGID=1000   # sostituisci con il tuo GID

Volumi personalizzati

Host (default) Container Contenuto
./data /data impostazioni Electron e dati sensibili
./media /media file video sorgente da processare
./output /output directory output job (torrent, screenshot, ecc.)

Per usare percorsi diversi (es. NAS) nel file docker-compose.override.yml:

services:
  shri-tools:
    volumes:
      - ./data:/data
      - /mnt/nas/video:/media
      - /mnt/nas/output:/output

Configurazione percorsi nell'app

Al primo avvio i percorsi degli strumenti vengono precompilati automaticamente. In Impostazioni trovi:

Strumento Percorso
FFmpeg /usr/bin/ffmpeg
BDInfo /usr/local/bin/bdinfo
mkbrr /usr/local/bin/mkbrr
mkvpropedit /usr/bin/mkvpropedit

La cartella output torrent va impostata a /output (mappata sul volume host).

Persistenza dati

Le impostazioni Electron vengono salvate in /data (volume ./data), quindi sono persistenti tra i riavvii del container. Le API key e le password vengono archiviate in una store separata cifrata; se l'ambiente supporta safeStorage, Electron usa quello, altrimenti usa un fallback cifrato persistito nel volume.

I segreti non vengono richiesti a ogni avvio finché resta presente il volume ./data. Se vuoi ripartire da zero basta svuotare la cartella ./data sull'host.

Se preferisci controllare esplicitamente la chiave di cifratura del fallback, puoi impostare SHRI_TOOLS_SECRET_KEY nel container.

Nota sul sandbox Electron

Nel container l'app viene avviata con --no-sandbox --disable-gpu, perché il processo Electron gira come utente root nell'immagine Docker e il rendering GPU non è disponibile in ambiente VNC. Questo è normale per un deployment containerizzato.


Diagnostica

In caso di problemi aprire Impostazioni -> Apri log per visualizzare il pannello di debug.


Licenza

Questo progetto e` distribuito sotto la SHRI - Tools Public License (SHRITPL) v1.0.

Testo completo: LICENSE Per gli screenshot, il log riporta in dettaglio: durata video, framerate, calcolo tempi, esito FFmpeg per ogni frame, host e URL di upload.


Documentazione tecnica

  • docs/DEVELOPMENT.md — architettura, flussi e note sviluppo.
  • docs/RULES.txt — regole di naming del tracker.

Note

  • Le impostazioni sono salvate in localStorage del profilo Electron — un reset dei dati dell'app equivale a un reset delle impostazioni.
  • La qualita dei suggerimenti dipende dalla qualita dei nomi file e dei metadata disponibili.

Ringraziamenti

Questo progetto e` un fork di SHRI-Tools creato da @exus85. Grazie per aver sviluppato e condiviso il progetto originale su cui si basa tutto il lavoro qui presente.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages