Jellyfin nu are un raport pentru problemele care se adună într-o bibliotecă: același film adăugat de două ori ca două titluri separate, filme pe care nu le-a potrivit niciodată, fișiere care au dispărut, s-au deteriorat sau au fost copiate doar pe jumătate. Library Doctor le găsește, arată cât spațiu ocupă fiecare și te lasă să le rezolvi fără să ștergi vreodată un fișier.
Ce face
- Duplicate: același film sau același episod (același serial, sezon și număr de episod) în iteme separate. Filmele se potrivesc după id-ul TMDb sau IMDb; filmele fără niciunul dintre id-uri se potrivesc după titlu (fără să conteze majusculele, diacriticele și semnele de punctuație) și an, iar aceste grupuri sunt marcate după titlu și an — verifică, pentru că două filme diferite pot avea același titlu și același an. Fiecare grup arată versiunile una lângă alta — rezoluție, HDR, codec, debit și mărime — cu cea mai bună prima și spațiul pe care l-ai recupera păstrând-o doar pe ea. Două acțiuni: Grupează ca versiuni păstrează toate fișierele și le arată ca versiuni ale aceluiași titlu (gruparea de versiuni a Jellyfin), iar Carantină dă la o parte o versiune mai slabă.
- Filme nepotrivite: filmele fără niciun id de metadate, ceea ce înseamnă de obicei titlu, an sau poster greșite și un film care lipsește din colecții și recomandări. Fiecare are legătura spre film, unde Identifică din Jellyfin îl corectează.
- Fișiere lipsă, stricate sau tăiate: o verificare în fundal a fișierului fiecărui film și episod, cu ffprobe și ffmpeg din jellyfin-ffmpeg. Arată fișierele care lipsesc de pe disc, nu pot fi citite (cu eroarea), sunt fără pistă video reală (doar o imagine, de exemplu un fișier cu octeți aleatori în care ffprobe ghicește o poză), sunt fără durată (antet stricat), au durată zero sau sunt tăiate: ultimele 3 secunde ale videoului se decodează, iar un fișier al cărui sfârșit nu se poate decoda e raportat ca descărcare sau copiere incompletă.
- Raport de spațiu: totalul, apoi spațiul pe biblioteci, pe rezoluții (4K, 1080p, 720p, SD) și pe codecuri video, plus cele mai mari 20 de fișiere pe care nu le-a vizionat niciun utilizator.
- Carantină în loc de ștergere: vezi mai jos. Plugin-ul nu șterge niciodată nimic.
- În română și engleză.
Carantina: nu se șterge nimic
Când apeși Carantină la o versiune (și confirmi), plugin-ul mută fișierul video și fișierele de lângă el cu același nume — subtitrări, .nfo, imagini, de exemplu Film.srt, Film.ro.srt, Film.nfo, Film-poster.jpg — într-un folder numit .medialab-de-sters din rădăcina folderului de bibliotecă în care se află, păstrând subfolderele. Fiind în același folder de bibliotecă, e de regulă pe același disc, iar mutarea e instantanee. Jellyfin rescanează apoi biblioteca.
Mutarea se notează înainte să fie atins vreun fișier. Dacă un fișier nu se poate muta (de exemplu din cauza drepturilor), fișierele deja mutate se pun la loc și nu rămâne nicio copie în .medialab-de-sters; dacă nici punerea la loc nu reușește, intrarea rămâne în lista carantinei ca s-o poți readuce.
Lista Carantină arată fiecare titlu mutat, cu locul lui inițial și mărimea. Readu mută fișierele înapoi exact de unde au plecat și rescanează; refuză, fără să atingă nimic, dacă un fișier se află și în carantină, și pe calea lui inițială. Plugin-ul nu suprascrie și nu șterge niciun fișier: după ce ești sigur, ștergi tu folderul .medialab-de-sters de pe disc.
Fișierele din afara folderelor de bibliotecă și cele aflate deja într-un folder .medialab-de-sters sunt refuzate. Grupează ca versiuni nu mută niciun fișier.
Cerințe
- Jellyfin Server 12.2 sau mai nou.
- Pentru verificarea fișierelor: ffprobe și ffmpeg, care vin cu jellyfin-ffmpeg (plugin-ul folosește căile pe care Jellyfin le folosește la transcodare).
- Pentru carantină: utilizatorul Jellyfin are nevoie de drept de scriere în folderele bibliotecilor (ca să creeze
.medialab-de-stersîn rădăcina folderului de bibliotecă și să mute fișierele din folderele lor). În Docker, volumele cu filme nu trebuie montate doar pentru citire. Fără drept de scriere, toate rapoartele merg; doar carantina nu poate muta fișiere.
Întrebări frecvente
Îmi poate șterge filmele? Nu. Plugin-ul nu are nicio funcție de ștergere. Carantina doar mută fișierele în același folder de bibliotecă, iar ele revin cu Readu.
De ce apare același film de două ori în Jellyfin? De obicei două fișiere ale aceluiași film stau în foldere diferite, așa că Jellyfin face două iteme. Library Doctor le găsește după id-ul TMDb sau IMDb (sau după titlu și an când nu au id) și te lasă să le grupezi ca versiuni sau să muți în carantină versiunea mai slabă. Vezi ghidul.
Găsește orice fișier stricat? Găsește fișierele care lipsesc, nu pot fi citite, n-au pistă video reală sau n-au durată și fișierele al căror sfârșit nu se poate decoda. Un fișier tăiat foarte aproape de final (de exemplu pe la 98%) poate avea încă în ultimele secunde cadre care se decodează și poate trece verificarea, iar deteriorările din mijlocul fișierului nu sunt căutate.
Ce trimite și unde
- Niciun contact extern în afara clientului de licență. Nu face căutări de metadate online: duplicatele și titlurile nepotrivite se calculează din id-urile (TMDb/IMDb…) deja salvate de server.
- Indirect: după mutarea în carantină sau restaurare, plugin-ul pornește scanarea obișnuită a bibliotecii, care poate contacta furnizorii de metadate configurați pe server (comportamentul serverului, nu al plugin-ului). „Grupează ca versiuni” folosește funcția nativă a serverului.
- Verificarea fișierelor (doar la cerere) rulează ffprobe-ul serverului pe fiecare film/episod, local. Fără scanări programate.
- Plus clientul de licență, același în toate plugin-urile: vezi Licențierea și confidențialitatea în plugin-urile noastre.
Stocat local:
- Carantina nu șterge nimic: fișierul și însoțitoarele lui (subtitrări, nfo, imagini) sunt mutate în
<rădăcina bibliotecii>/.medialab-de-sters/; ștergerea definitivă o faci tu. state/quarantine.json: titlul, data, căile originală și din carantină, mărimea.- Rezultatele verificării fișierelor stau doar în memorie. Plugin-ul citește din bibliotecă dacă un titlu a fost văzut de vreun utilizator (pentru „cele mai mari nevăzute”), fără să salveze aceste date.
Compatibilitate cu clienții
- Doar pagina de administrare: Jellyfin Web / medialab Server ✅. Funcțiile sunt pe server, deci clienții (aplicații, TV) văd doar efectul (titluri mutate/grupate).
- Teste: cap-coadă la nivel de API (16/16), verificarea sfârșitului fișierelor pe 400/400 fișiere reale fără fals pozitiv.
- Limitări: serverul are nevoie de drept de scriere în folderele bibliotecii pentru carantină; un
.tstăiat nu poate fi detectat (nu are durată salvată).
Legendă: ✅ verificat (test cap-coadă sau pe dispozitiv) · 🟢 funcționează prin server, independent de client (prin design, fără test pe fiecare client) · ➖ nu se aplică · ❔ netestat.
Licență
Plugin-ul este cu sursă deschisă (GPL-3.0). Versiunile gata de instalat sunt publice, ca și codul sursă. Ce cumperi este abonamentul: licența de folosire a plugin-ului pe un server Jellyfin, actualizările incluse în planul tău și suportul: toate actualizările cât timp abonamentul e activ, prin depozitul tău privat de plugin-uri, și ajutor când ceva nu merge. Plugin-ul verifică cheia o dată pe zi; fără un abonament valabil se oprește până la reînnoire (nu se șterge nimic). Lunar, anual sau lifetime (lifetime include un an de actualizări), sau inclus în Pachetul Jellyfin. 30 de zile de probă gratuită.
Codul sursă. Pentru fiecare versiune, sursa completă corespunzătoare este publică, lângă versiunea gata de instalat, în istoricul versiunilor, și se găsește și în cont (Cont → Licențe, Cod sursă); fiecare arhivă conține textul complet al GPL-3.0 (LICENSE). Dacă ai nevoie de sursa unei versiuni pe care nu o mai poți descărca, ne scrii și ți-o trimitem. Vezi secțiunea 10 din EULA.
