⚡ nzbfast

Descărcătorul rapid de Usenet - manual de utilizare

1 · Bun venit

nzbfast descarcă de pe Usenet atât de repede pe cât permit linia ta, providerii tăi și mașina ta - și de obicei asta înseamnă atât de repede pe cât permite linia ta. Este un singur program de sine stătător: motorul, un panou web, un browser media de tip perete de postere, un indexer integrat, previzualizare în timp real, reparare PAR2 nativă și extragerea RAR nativă sunt toate într-un singur executabil. Nu mai e nimic altceva de instalat.

Ce îl face rapid este arhitectura, nu ajustările:

Măsurat față de concurență pe hardware, joburi și provideri identici, nzbfast a terminat o descărcare de 190 GB în aproximativ 5 minute pe o linie de 10 GbE - cu alternativele de top rămase în urmă cu 30–220% la aceleași teste, acolo unde le-au finalizat. Cifrele sunt în §3.

2 · Pornire rapidă

macOS

  1. Deschide nzbfast-<version>-macos.dmg și trage NzbFast în Applications (universal: Apple Silicon + Intel).
  2. Prima lansare: macOS avertizează că nzbfast nu este încă notarizat de Apple. Clic dreapta pe aplicație → Open - sau deschide System Settings → Privacy & Security, derulează în jos și dă clic pe Open Anyway. Este un pas unic.
  3. Fereastra aplicației arată panoul cu un card de bun venit - dă clic pe el și adaugă cel puțin un server Usenet (host, portul 563, nume de utilizator, parolă). Poți adăuga mai multe ulterior în Setări.
  4. Trage un .nzb oriunde pe panou - sau doar dublu-clic pe fișiere .nzb în Finder. Descărcările ajung în ~/Downloads/nzbfast. Închide din meniu; descărcările se reiau de unde au rămas.

Preferi fără aplicație? Zip-ul simplu (binar + launcherul Start nzbfast.command, același motor) funcționează în continuare ca înainte - pașii de mai jos, la „Dintr-un terminal”.

Windows

  1. Rulează nzbfast-<version>-windows-x64-setup.exe. Se instalează doar pentru utilizatorul tău (fără parolă de administrator). Deoarece acest release nu este încă semnat digital, SmartScreen ar putea afișa „Windows protected your PC” - dă clic pe More infoRun anyway.
  2. nzbfast stă în bara de sistem (system tray): dublu-clic pe iconița din tray (sau folosește Open Dashboard din meniul contextual) pentru a deschide panoul, apoi adaugă serverul tău Usenet din cardul de bun venit. Meniul din tray are și Pauză/Reluare, folderul tău de descărcări și Quit.
  3. Dublu-clic pe un fișier .nzb îl pune în coadă. Windows Defender ar putea cere o dată permisiunea de ascultare pe rețeaua locală - permite-o.

Preferi o copie portabilă? -windows-x64.zip funcționează în continuare: dezarhivează oriunde și dublu-clic pe nzbfast.exe (sau Start nzbfast.bat) pentru asistentul din terminal.

Dintr-un terminal (orice platformă)

nzbfast setup            # interactive server setup (writes config.local.json)
nzbfast serve --open     # start the daemon and open the dashboard
SfatAi rulat deja SABnzbd sau NZBGet? Sari peste tastarea credențialelor: Setări → Servere Usenet → Importă din SABnzbd / NZBGet… îți găsește instalarea existentă și îi copiază serverele. Există și nzbfast import-sab pe linia de comandă.

Cardul de bun venit te întreabă și cum ai de gând să folosești nzbfast, cu patru răspunsuri: o aplicație precum Sonarr sau Radarr îl conduce, treci de la SABnzbd, treci de la NZBGet, sau doar tu, din acest panou. Alegerea uneia nu schimbă nimic de la sine. Afișează o listă scurtă de revizuit - fiecare recomandare cu numele propriu al setării, valoarea ei curentă, valoarea recomandată și un rând de motivație - iar Aplică setează doar rândurile pe care le bifezi. Fiecare rând este o setare obișnuită pe care o poți schimba înapoi de una singură după aceea, iar aceeași listă rămâne disponibilă și mai târziu sub Setări → Setări recomandate după felul în care îl folosești.

Cheia ta API

La o instalare cu adevărat nouă, nzbfast își face singur o cheie API prima dată când pornește daemonul și o afișează o singură dată într-un banner chiar sub adresa panoului. De atunci înainte fiecare cerere are nevoie de acea cheie, așa că panoul și API-ul nu rămân deschise pentru tot ce poate ajunge la mașină.

Ce faci cu ea depinde de cum ai pornit nzbfast:

Cheia se păstrează într-un fișier numit apikey lângă fișierul tău de configurare, așa că rămâne aceeași peste reporniri și o poți citi înapoi oricând ai nevoie. Pe macOS și Linux acel fișier poate fi citit doar de contul care rulează nzbfast. Apare și în ieșirea proprie a daemonului, deci cardul Jurnal din panou o are dacă terminalul a derulat între timp.

Actualizarea nu schimbă nimic.O instalare care există deja este lăsată exact cum era, cu cheie sau fără. O cheie se face doar la o primă rulare - una fără setări de panou și fără coadă salvată - fiindcă o cheie apărută peste o instalare care merge ar bloca fiecare Sonarr, Radarr și aplicație de telefon pe care le conectaseși deja, la o repornire pe care nu ai lega-o niciodată de o schimbare de setări.

Ca să folosești o cheie proprie, scrie-o în Setări → Securitate; se aplică imediat. Panoul acela schimbă cheia, dar nu arată niciodată cheia curentă, așa că citește fișierul apikey dacă ai nevoie înapoi de valoarea generată. Ca să rulezi fără nicio cheie, fiindcă ceva din fața lui nzbfast se ocupă deja de autentificare, pornește-l cu NZBFAST_OPEN=1 în mediu. nzbfast rămâne atunci deschis și o spune clar la pornire.

Ce mașini pot ajunge la daemon este o alegere separată: serve --bind. Valoarea implicită este 0.0.0.0, adică fiecare interfață de rețea, pentru că un NAS, un telefon și un Sonarr de pe alt calculator trebuie să se poată conecta toate. --bind 127.0.0.1 îl restrânge la mașina pe care rulează nzbfast, ceea ce vrei pe un desktop singur unde nimic altceva nu are nevoie de acces.

3 · Cum funcționează nzbfast

O scurtă terminologie ca restul manualului să se citească ușor:

TermenSens
Provider / serverUn serviciu Usenet la care ai un cont (Newshosting, Eweka, XS News…). Fiecare permite un anumit număr de conexiuni simultane.
BackboneInfrastructura din spatele unui provider. Mai multe branduri revând adesea același backbone - util de știut, deoarece doi provideri pe un backbone ratează aceleași articole. Vezi Diversitatea serverelor.
NZBUn mic fișier XML care listează articolele ce compun o postare. Asta îi dai lui nzbfast.
PAR2Date de recuperare postate alături de un release. nzbfast verifică în raport cu ele în timpul descărcării și repară automat când articolele sunt deteriorate sau lipsesc.
RAR în mod storeMajoritatea release-urilor sunt împachetate în volume RAR fără compresie. nzbfast recunoaște acest lucru și scrie fișierul interior direct în locația sa finală în timpul descărcării - fără pas de dezarhivare ulterior.

Pipeline-ul rulează descărcare → decodare → verificare → extragere concurent. Cardul Pipeline din panou arată toate cele trei benzi mișcându-se simultan. Când sosește ultimul octet, verificarea e deja făcută și fișierul e deja extras; timpul de „post-procesare” al unui job tipic este zero. Dacă e nevoie de reparare, abia atunci volumele sunt materializate pe disc, reparate pe loc de motorul nativ GF(2¹⁶) (datele obfuscate redenumite sau deplasate cu octeți sunt găsite și adoptate printr-o scanare glisantă de blocuri) și reextrase - totul automat.

Descărcările întrerupte (blocare, pană de curent, kill -9) se reiau din jurnalul de articole: octeții deja pe disc nu sunt preluați niciodată de două ori. Jurnalul înregistrează unde au aterizat fizic octeții fiecărui articol - chiar și octeții care au fost extrași direct în fișierul final - astfel încât o reluare reconstruiește din discul local și reverifică tot ce a restaurat în raport cu harta de blocuri PAR2 înainte de a-i acorda încredere.

Cum se compară

Măsurat față de SABnzbd 5.0.4 și NZBGet 26.2 pe aceeași mașină, aceiași provideri și aceleași NZB-uri, cronometrat până la un fișier utilizabil - descărcare, verificare, reparare și extragere incluse, pentru că atunci este jobul cu adevărat gata:

Dimensiunea jobuluinzbfastNZBGet 26.2SABnzbd 5.0.4
7 GB13.7 s+26%+39%
35 GB67 s+61%+325%
87 GB272 s+36%+160%
190 GB9 m 00 s+30%+111%

Diferența este post-procesarea pe care ceilalți încă trebuie s-o facă după ce aterizează ultimul octet. Ambii concurenți au fost reglați pentru comparație, nu lăsați pe valorile implicite - SABnzbd în special vine cu pipelining-ul cererilor oprit, ceea ce îl costă scump, așa că a fost pornit.

Două diferențe contează la fel de mult ca timpii:

Reluare după blocare, măsuratăOmoară o descărcare în plin zbor (kill -9 la 15 GB dintr-un job de 34.5 GB) și reluarea repreia ~0.3 GB - doar articolele aflate cu adevărat în tranzit la momentul opririi - față de 0.2 GB ai NZBGet în același test. Aceasta era cândva o pierdere pe care o publicam (15.3 GB repreluați, când jurnalul nu putea contabiliza octeții extrași direct); jurnalul de plasare a rezolvat-o: reluarea restaurează acei octeți din fișierele de ieșire locale și reverifică fiecare octet restaurat în raport cu harta de blocuri PAR2 înainte de a-i acorda încredere. Fiecare scenariu pe care îl pierdem este publicat alături de câștiguri, cu metoda completă și cifrele brute.

4 · Panoul

Deschide http://localhost:6789 (sau adresa mașinii tale de pe alt dispozitiv - aspectul pentru telefon se adaptează automat). Totul se actualizează live, o dată pe secundă. Cardurile, de sus în jos:

Bara de sus

Debit

MB/s în timp real cu un grafic derulant; filigranele punctate marchează maximul/minimul acestei sesiuni, linia estompată este o medie mobilă. Sub el, o histogramă arată cum se distribuie mostrele de viteză din sesiune - tipic vs vârf. Lărgește fereastra și graficele arată mai mult istoric (până la o oră).

Plăci statistice

Descărcat în această sesiune, adâncimea cozii, numărul de finalizate/eșuate, viteza de vârf a sesiunii.

Resurse - o mașină, patru plafoane

CPU, RAM (față de bugetul de memorie al nzbfast), rata de scriere pe disc și rețeaua pe un singur grafic normalizat, cu valori reale în legendă și un avertisment de spațiu redus. Niciun alt client NZB nu-ți arată asta; există pentru a demonstra un lucru - nzbfast îți va satura linia, nu mașina.

Pipeline - etapele se suprapun

Trei benzi: descărcare, verificare (blocuri PAR2 verificate), extragere. La un job sănătos toate trei se mișcă împreună.

Provideri

Rata în timp real per server, utilizarea conexiunilor, ponderea din trafic, GB pe sesiune și un scor de completitudine a articolelor pe toată durata (colorat când un server scade sub 98%). Un grafic cu arii stivuite arată contribuția fiecărui provider în timp. Rândurile se reordonează după performanța în timp real la fiecare 10 s (configurabil în Setări → Interfață), astfel încât providerul tău cel mai rapid să fie mereu în frunte.

Coadă

Răsfoiește indexul

Caută tot ce a catalogat indexerul integrat din grupurile tale urmărite (vezi Automatizare) și descarcă cu un singur clic - fără indexer extern. Linia de stare arată progresul scanării; Scanează acum forțează o trecere.

Watchlist

Adaugă titluri după nume - inclusiv unele nepostate încă. Când un release potrivit apare în index, este preluat automat, cu preferințe de calitate și reguli de upgrade (o copie mai bună o înlocuiește pe una mai slabă).

Cardul poate urmări și o listă pe care o ții în Plex. Adaugă o sursă de listă: fie îți conectezi contul Plex (aprobi un cod scurt chiar pe pagina Plex, așa că nicio parolă nu ajunge vreodată la nzbfast), fie lipești adresa watchlist-ului tău Plex. Tratează adresa ca pe o parolă - oricine o are îți poate citi lista - motiv pentru care este mascată după salvare. Titlurile sincronizate apar ca rânduri doar-citire lângă ale tale. Un cont conectat vede întreaga listă, așa că un titlu șters acolo nu mai este urmărit nici aici (descărcările finalizate nu sunt atinse niciodată); o adresă arată doar cele mai noi intrări, deci un titlu lipsă poate pur și simplu să fi ieșit din listă și nimic nu este șters. Oricare dintre comportamente poate fi schimbat per sursă.

Istoric

Descărcări recente, câte un rând fiecare. Joburile eșuate oferă Reîncearcă (reia din jurnal). Arhivele criptate arată un control de deblocare 🔑 - introdu parola și jobul se termină pe loc. Fâșia de sănătate a verificării trasează blocurile PAR2 defecte per descărcare - o coadă în creștere înseamnă că articolele sosesc deteriorate. Sertarul fiecărui rând spune cine a adăugat jobul și are același buton Descarcă fișierul .nzb ca în coadă - util pentru a descărca un release din nou în altă parte, sau pentru a atașa fișierul .nzb la un raport de problemă.

Cardul listează implicit zece descărcări, iar restul sunt la un clic distanță, pe butonul ▤. Starea, locația și motivul pentru care un job a eșuat stau în spatele unui clic pe rândul însuși, astfel încât cazul obișnuit - ce s-a terminat, cât de mare, când - rămâne lizibil fără derulare. Trage în schimb de marginea de jos a cardului ca lista să deruleze la o înălțime aleasă de tine. History rows din Setări → Interfață schimbă acel zece; fiind o proprietate a daemonului și nu a browserului tău, se aplică fiecărui dispozitiv care se uită la această instalare. Colour History names, alături, colorează numele terminate în verde și pe cele eșuate în roșu; dezactivat, numele rămân neutre, iar punctul colorat și detaliile rândului spun în continuare care e care.

Consum de date

Bare zilnice per provider și totaluri Azi / 7 zile / 30 de zile - esențiale pentru conturile contorizate și cu bloc. Conturile cu bloc arată utilizarea pe toată durata față de dimensiunea lor.

Jurnal, Benchmark de sistem, Reglarea conexiunilor, Diversitatea serverelor

Un vizualizator de jurnal în pagină și cele trei instrumente de auto-măsurare descrise în Instrumente de performanță.

Aranjarea panoului

Panoul este al dumneavoastră, ca să îl aranjați. Patru operații, numite la fel oriunde le întâlniți: Mută un card, Compactează-l, Redimensionează-l sau Ascunde-l. Fiecare alegere este reținută de browserul în care ați făcut-o, așa că fiecare dispozitiv își păstrează propria aranjare, iar Resetează aspectul din Setări → Interfață readuce fiecare card, dimensiune și coloană așa cum au venit.

Personalizează aspectul este calea ghidată și cel mai rapid mod de a vedea ce poate face un card. Deschideți-l din legătura discretă chiar deasupra primului card sau din Setări → Interfață, unde este primul buton de pe rândul Aspectul panoului. Cât timp este pornit, fiecare card care poate fi rearanjat este conturat, cele trei unelte de pe rândul titlului sunt desenate la intensitate maximă, cu cuvântul lor lângă pictogramă, iar fiecare bară de redimensionare este trasată în culoarea de accent; un card fără bară spune de ce pe un rând al lui, în loc să vă lase să căutați una. Gata sau tasta Escape iese. Modul este un fel de a privi pagina, nu o setare: nu schimbă nimic din aranjarea dumneavoastră și, după o reîncărcare, este din nou oprit.

Pe un panou pe care nu l-a aranjat încă nimeni, un rând de deasupra cardurilor spune că ele pot fi mutate, redimensionate, compactate sau ascunse și arată spre acea legătură. Apare o singură dată: Am înțeles îl închide, la fel ca deschiderea modului sau aranjarea oricărui lucru.

Un clic dreapta pe titlul unui card adună aceleași operații într-o singură listă: Mută în sus, Mută în jos, Compactează, Redimensionează și Ascunde, plus o cale spre Personalizează aspectul când nu sunteți deja acolo. Redimensionează este oferit doar pe un card care are o bară de tras. Mută în sus și Mută în jos se estompează la capete și numără doar cardurile pe care le vedeți: un card ascuns este sărit, deci primul și ultimul înseamnă primul și ultimul vizibil.

Acel meniu este o cale de tastatură la fel de mult ca una de maus. Ajungeți cu Tab la mânerul de mutare al unui card, apăsați tasta Meniu contextual sau Shift+F10 și se deschide sub antet. Săgețile sus și jos îl parcurg și sar peste tot ce este estompat; Escape îl închide și dă focalizarea înapoi mânerului din care l-ați deschis. Alegerea Redimensionează duce focalizarea la bara acelui card, unde săgețile sus și jos stabilesc înălțimea, iar Shift face un pas mai mare.

Escape închide întotdeauna doar stratul de deasupra. Închiderea meniului unui card cât timp modul este pornit lasă modul pornit; un al doilea Escape iese din mod.

Cardurile panoului din Setări → Interfață oferă aceeași aranjare sub forma unei liste obișnuite de controale: o casetă Afișează pentru fiecare card, o casetă Compact alături și butoanele Mută în sus și Mută în jos. Pe un telefon, pe o tabletă sau în orice fereastră îngustă, uneltele cardului și tragerea sunt oprite, pentru că tragerea unui card pe o pagină care se derulează sub deget este un control prost: acolo lista aceasta aranjează panoul. Ea scrie ceea ce citește calculatorul, așa că o ordine stabilită pe telefon este ordinea pe care o arată calculatorul. Butoanele ei urmează regula meniului: se estompează la capetele cardurilor vizibile, iar un card pe care l-ați ascuns nu poate fi mutat până nu îl afișați din nou.

Coloanele tabelelor se aranjează pe loc, nu din cele de mai sus. În tabelele cozii, istoricului și indexului, trageți antetul unei coloane în lateral ca să mutați coloana, sau marginea lui din spate ca să o redimensionați; un dublu clic pe acea margine readuce lățimile. Cu un antet focalizat, tastele săgeată stânga și dreapta îl mută, iar Shift cu o săgeată îl redimensionează.

5 · Adăugarea descărcărilor

MetodăCum
Trage și plaseazăTrage unul sau mai multe fișiere .nzb oriunde pe panou.
Folder monitorizatSetează un folder în Setări; orice .nzb salvat în el este preluat în 5 secunde și mutat la coșul de gunoi, iar un panou deschis anunță fiecare preluare pe nume ("… preluat din Downloads"), astfel încât un fișier care dispare din folder nu e niciodată un mister. Preferi să-ți păstrezi fișierele? Activează Păstrează fișierele .nzb după preluare (vezi §9). Îndreaptă directorul de descărcări al browserului tău spre el pentru preluări cu un singur clic de pe site-urile de indexer.
Dintr-un URLLipește un link NZB (API mode=addurl, sau prin orice aplicație conectată).
Legături nzblnk:Lipește o legătură nzblnk: oriunde pe panou, sau trage-o înăuntru. Dacă ai instalat din DMG-ul macOS sau din instalatorul Windows, poți și să dai clic pe una direct pe un board. Vezi legăturile nzblnk mai jos.
Răsfoiește indexulDă clic pe orice release complet din cardul Răsfoiește.
Caută pe indexereCaută pe conturile de indexer pe care le-ai adăugat și pune un rezultat în coadă direct din listă. Vezi Căutarea pe conturile tale de indexer mai jos.
Watchlist / RSSAutomat - vezi Automatizare.
Sonarr/Radarr etc.Trimit preluările direct în coadă - vezi §11.
Linia de comandănzbfast get file.nzb descarcă fără daemon.

Categorii, priorități, parole

Căutarea pe conturile tale de indexer

Dacă ai cont pe un site indexer de NZB, nzbfast poate căuta acolo de aici și poate pune în coadă ce alegi, în loc să te duci pe site, să descarci un NZB și să-l aduci înapoi. Vorbește interfața de indexer obișnuită pe care o oferă toate acele site-uri, așa că nu e nimic de configurat de la site la site: NZBGeek, NZBFinder, DrunkenSlug, DOGnzb și celelalte funcționează la fel. O instanță Prowlarr sau NZBHydra2 este tot o singură intrare și aduce cu ea fiecare indexer din spatele ei.

Adăugarea unui cont. Setări → Caută pe indexere → + Adaugă indexer. Completează un nume la alegerea ta, adresa de API a site-ului (adresa lui web obișnuită e de ajuns; o intrare Prowlarr arată așa: http://host:9696/1/api) și cheia API din pagina ta de cont de acolo, apoi Aplică indexerele. Testează întreabă site-ul ce acceptă și arată ce a venit înapoi, ceea ce dovedește adresa și cheia dintr-un clic. O cheie salvată nu mai este arătată niciodată: căsuța o spune, iar dacă o lași goală păstrezi cheia care este deja acolo.

Căutarea. Deschide 🎬 peretele din antet și treci la lista de release-uri. Meniul de lângă caseta de căutare hotărăște unde se uită o căutare: Acest index, adică ce a scanat singură mașina asta, Indexere sau Ambele. Alegerea ta este ținută minte. Ca să întrebi conturile trebuie să scrii ceva în casetă, fiindcă răsfoirea lor cu o interogare goală ar cheltui alocarea unei zile pe o listă pe care nu a cerut-o nimeni. Cu indexerul încorporat oprit, așa cum vine nzbfast, nu sunt afișe de arătat, iar pagina este exact atât: o casetă de căutare, conturile tale și rezultatele.

Rezultatele. Un rând pe release, cele mai noi întâi, cu mărimea, vechimea și de câte ori l-au luat utilizatorii acelui indexer. Un release pe care îl au mai multe dintre conturile tale apare o singură dată. La Ambele, copia pe care indexul tău o are deja câștigă, iar cea din exterior cade, fiindcă a lua ce ai indexat deja nu te costă nimic. Descarcă îl pune în coadă cu prioritate mare: nzbfast aduce singur NZB-ul, iar de acolo sarcina e ca oricare alta, cu reparare, extragere, categorii și scripturi neschimbate.

Întrebarea despre un singur titlu. Deschide fișa unui titlu de pe perete și apasă ⌕ Caută pe indexerele mele. La filme întrebarea merge pe numărul IMDb oriunde site-ul acceptă unul, iar asta e diferența dintre filmul la care te gândeai și orice release al cărui nume conține din întâmplare acele cuvinte. nzbfast caută singur numărul, așa că pagina nu ține niciodată vreunul. Site-urile care nu oferă potrivire după număr sunt întrebate în cuvinte.

Alocarea ta. Conturile de indexer sunt măsurate: atâtea căutări și atâtea descărcări pe zi, după planul tău. Pune cele două numere pe intrare și nzbfast scade din ele, luând-o de la capăt la miezul nopții UTC. 0, valoarea implicită, înseamnă nelimitat, iar numărătoarea continuă oricum. Un cont care și-a cheltuit alocarea stă deoparte cât lucrează celelalte, iar un rând deasupra rezultatelor îl numește pe cel sărit: epuizarea nu este niciodată tăcută. Un site care răspunde cu o limită proprie, sau care ne cere să încetinim, este pus deoparte pentru o oră.

Unde ajunge cheia ta. Doar la indexerul căruia îi aparține. Cheile rămân pe mașina asta, nu ajung niciodată la browser - fiecare rând de rezultat poartă un tichet valabil o jumătate de oră în locul unei legături - și sunt scoase din jurnal și din orice eroare întoarsă de site, așa că un mesaj de eroare lipit nu poate scăpa niciuna. O descărcare poate aduce doar o legătură pe care a întors-o una dintre căutările tale.

Sunt aceleași conturi la care recurge o legătură nzblnk când indexul local nu îi recunoaște antetul, și cele pe care watchlistul le poate întreba despre elementele dorite (§10).

Legăturile nzblnk

Unele board-uri, mai ales germane și olandeze, publică o legătură nzblnk: în loc de un fișier NZB. Postarea este ofuscată, deci nu există niciun nume de fișier către care s-ar putea trimite. Legătura duce în schimb un antet, h=, care este o cheie de căutare și nu o locație, plus un titlu t=, o parolă p= și un grup g= opționale. Cineva trebuie mai întâi să se ducă și să găsească postarea.

nzbfast caută antetul mai întâi în propriul index, ceea ce nu cere deloc rețea, și abia dacă acolo nu îl găsește întreabă indexatoarele de căutare pe care le-ai configurat (Setări → Caută pe indexere, §9), sub aceleași bugete zilnice și aceeași retragere ca orice altă căutare. Titlul devine numele sarcinii, iar parola se aplică automat.

6 · Peretele de postere

Dă clic pe 🎬 perete în bara de sus. Peretele transformă indexul tău într-un browser media: fiecare film și release TV recunoscut ca o placă de poster cu notă, an, genuri, distribuție și sinopsis - newsgroup-urile tale, navigabile ca un catalog.

7 · Previzualizare și verificare

Nu trebuie să aștepți să se termine o descărcare ca să știi că e fișierul potrivit. Deschide-l în timp ce se descarcă, verifică dacă conținutul, limba și calitatea sunt cele așteptate și anulează din timp dacă nu sunt - în loc să afli abia după descărcarea completă.

Prima jumătate din asta este deja pe pagină. Deschide rândul unei descărcări în coadă (sau în istoric), iar sertarul arată ce se află în fișierul video, citit din baiții sosiți până acum: rezoluție, codecuri video și audio, limbi audio, subtitrări, capitole. O lansare care este montajul greșit, limba greșită sau un upscale se dă de gol în acel panou cu mult înainte ca descărcarea să se termine.

Pagina își dă seama și dacă acest browser poate reda fișierul, și o spune în loc să ghicească: browserele diferă (Safari decodează HEVC acolo unde Chrome nu, și aproape niciunul nu decodează audio AC-3 sau DTS), așa că întrebarea este pusă browserului în care te afli de fapt. Când răspunsul e da, ▶ Redă deschide un player chiar în pagină, care arată fișierul în timp ce se descarcă. Majoritatea lansărilor sunt MKV, pe care multe browsere refuză să îl deschidă deși pot decoda tot ce se află înăuntru, așa că nzbfast le reîmpachetează în timpul redării. Nimic nu este recodat: imaginea și sunetul sunt octeții originali într-un alt ambalaj, iar saltul la alt moment funcționează în continuare. Dacă pista audio este una pe care acest browser nu o poate decoda, iar lansarea poartă o a doua pe care o poate, acea a doua pistă este cea care se aude, ca imaginea să nu ajungă mută. Doar când browserului îi lipsește decodorul pentru video în sine butonul predă fișierul propriului tău player multimedia, așa cum se descrie mai jos.

O singură setare le guvernează pe toate: Setări → Interfață → Verifică un fișier în timp ce se descarcă. Doar detalii, valoarea implicită, arată panoul și nu oferă player în pagină; Detalii și un player adaugă playerul; Oprit oprește cu totul citirea fișierului - cu ea oprită, nimic nu va deschide un fișier descărcat pe jumătate pentru nimeni.

Pentru a verifica în schimb în propriul player media:

Notă despre playerVLC, IINA, mpv și Infuse deschid toate URL-urile /stream. Pentru a verifica de pe altă mașină, folosește adresa LAN a mașinii tale în locul lui localhost.
Notă despre autentificareCu o cheie API setată, deschiderea unei intrări de bibliotecă parcate prin /stream/<id> necesită un token per job (?t=…) - playerele nu pot trimite chei API, așa că predarea /m3u și pointerul .strm îl încorporează pentru tine; generarea lui (/m3u) necesită cheia. Servirea simplă de octeți a unei descărcări deja active rămâne deschisă, iar instalările fără cheie se comportă ca înainte.

8 · Servere Usenet

Setări → Servere Usenet este editorul complet: adăugare, editare, ștergere, reordonare și includerea sau excluderea oricărui server din pool. Fiecare server are:

CâmpNote
Host / portFolosește portul SSL 563. TLS nu costă nimic măsurabil - nzbfast criptează întotdeauna.
Nume de utilizator / parolăStocate local în config.local.json, nearătate niciodată înapoi browserului. Lăsând parola goală la editare, se păstrează cea stocată. Parolele sunt ofuscate pe disc, nu criptate.
ConexiuniConexiuni simultane per server. Folosește Reglarea conexiunilor (§13) pentru a găsi punctul optim al fiecărui provider în loc să ghicești mare.
Nivel (treaptă)0 = primar; nivelurile mai mari sunt servere de umplere, întrebate doar pentru articolele pe care le-a ratat fiecare nivel inferior. Pune conturile nelimitate la 0, conturile cu bloc la 1+.
Dimensiunea blocului (GB)Pentru conturile cu bloc (plată-per-GB): nzbfast urmărește utilizarea pe toată durata față de aceasta și nu mai folosește serverul când e consumat (avertisment la 85%).
Fiecare bait este facturatActiveaz-o pentru un cont contorizat. Descărcările tale folosesc serverul exact ca înainte; ce încetează este traficul propriu pe care i-l trimite nzbfast - regulatorul automat de conexiuni, etapa de rețea a benchmark-ului de sistem și scanările de antete pentru indexul încorporat îl sar toate. Independentă de nivel și de dimensiunea blocului, pentru că un cont contorizat poate fi singurul tău provider, iar unul nelimitat poate sta la nivelul 2. Dezactivată implicit. Testul manual din Reglarea conexiunilor (§13) funcționează în continuare pe un server marcat și întreabă mai întâi, fiindcă acolo tu ești cel care alege să cheltuiască.

Lasă puțină marjă sub limita de conexiuni a contului tău. Setarea conexiunilor puțin sub limită nu costă nimic: debitul se aplatizează cu mult înainte de ultimele una sau două conexiuni, iar Reglarea conexiunilor (§13) rămâne oricum sub ea. Acele locuri libere sunt cele care lasă un al doilea dispozitiv, alt client sau o reîncercare după un socket căzut să intre totuşi, în loc să fie refuzate în timp ce acesta ocupă fiecare loc.

Nu trebuie să te ocupi de limita de fișiere deschise a mașinii tale. Sistemul socotește fiecare conexiune drept un fișier deschis, iar macOS pornește un program cu o limită de 256, pe care un set complet de conexiuni răspândite pe mai multe servere o poate depăși. Pe macOS și Linux, nzbfast ridică singur această limită la pornire: cere 65536 de fișiere deschise și coboară prin 16384, 4096 și 1024 până când sistemul acceptă, fără să treacă vreodată de limita dură fixată de sistem, și merge mai departe cu limita pe care o avea dacă fiecare pas este refuzat. Windows nu are o limită de acest fel per proces. Ceilalți clienți rămân cu limita pe care le-a dat-o shell-ul, iar unul care rămâne fără fișiere deschise în mijlocul unei sarcini se poate opri fără să scrie în jurnal de ce. Așa că setează conexiunile fiecărui server după cât permite abonamentul tău, minus marja de mai sus, nu după cât crezi că duce mașina.

Cum sunt păstrate parolele furnizorilor tăi

Parolele de furnizor din config.local.json sunt ofuscate, nu criptate. Sunt scrise ca obf1: urmat de o formă codificată, așa încât fișierul să nu se citească drept text simplu dacă apare într-o captură de ecran, într-un mesaj de forum, într-un raport de eroare sau pe un ecran pe care îl vede altcineva.

Să fim limpezi cu ce îți aduce și ce nu:

Prin comparație, NZBGet și SABnzbd păstrează amândouă parolele de furnizor ca text lizibil în fișierele lor de configurare. Considerăm ofuscarea o mică îmbunătățire față de asta, nu o funcție de securitate.

De ce nu inelul de chei al sistemului? Keychain pe macOS, Managerul de credențiale din Windows și serviciile de secrete din Linux ar da o protecție reală și poate revenim asupra ei. Astăzi ne opresc două lucruri. Accesul la inelul de chei ține de identitatea aplicației, iar nzbfast încă nu este semnat, așa că solicitările și comportamentul după fiecare actualizare sunt proaste. Și o parte mare a instalărilor sunt Docker, servere fără ecran și cutii NAS unde nu există niciun inel de chei, ceea ce ar lăsa două căi diferite de stocare de ținut corecte. Un singur format bine înțeles, care se poartă la fel peste tot, este deocamdată târgul mai bun.

Alte două opțiuni per server nu au încă un control în panou: adaugă-le manual în intrarea acelui server din config.local.json (vezi §17) și repornește.

CheieNote
bind_ipLeagă conexiunile de ieșire ale acestui server de o adresă locală anume, pentru mașini cu mai multe ieșiri și tuneluri VPN divizate. Familia de adrese alege și familia țintă: o legare v4 se conectează la adresa v4 a serverului.
socks5Trimite traficul NNTP al acestui server printr-un proxy SOCKS5: host:port sau user:pass@host:port. Numele gazdei este rezolvat de proxy, deci nu există scurgere DNS locală.
RecomandareDoi provideri pe backbone-uri diferite întrec trei pe același. Rulează Diversitatea serverelor (§13) pentru a vedea care dintre providerii tăi îți diversifică efectiv acoperirea și care sunt copii redundante unul al altuia.

9 · Referință de setări

Aproape tot se poate configura din panou, la ⚙ Setări; cele patru excepții sunt enumerate la finalul acestei secțiuni. Valorile marcate live se aplică imediat, cele restart la următoarea pornire. Fiecare modificare făcută aici este salvată în settings.json și supraviețuiește repornirilor (valorile din interfață bat opțiunile din linia de comandă).

Viteză și programare live

SetareCe face
Limită de vitezăPlafon în octeți/sec (50M, 1G, 0 = nelimitat). Aplicațiile la distanță pot trimite procentaje - setează Viteza liniei ca ele să se traducă corect.
Viteză automatăPlafon guvernat de RTT care cedează celuilalt trafic din casă și se reextinde când linia e liniștită.
Amână automat descărcările lenteUn job blocat pe un singur server lent în timp ce altele așteaptă este mutat la coada cozii (progresul e păstrat). Vezi §13.
Preîncărcare pe serverele inactiveServerele inutile pentru jobul activ pornesc următorul job din coadă. Vezi §13.
Actualizare automată / URL de verificare a actualizărilorVezi §14.
Viteza linieiViteza nominală a conexiunii tale - activează limitele procentuale de la aplicațiile compatibile SABnzbd.
Program săptămânalEditor de rânduri pentru reguli după momentul săptămânii: pauză, reluare sau setarea unei limite de viteză la anumite zile/ore (ora locală). Ex. limitează la 20 MB/s în zilele lucrătoare 9–17, nelimitat altfel.

Următoarea descărcare live

Conexiuni (per server), fereastra (adâncimea de pipelining per conexiune), decodoare (fire de decodare paralele). Eșantionate când pornește fiecare job. Valorile implicite sunt potrivite pentru majoritatea liniilor; folosește instrumentele de reglare înainte de a mări orbește.

Verificare în timpul descărcării alege cât se verifică pe măsură ce datele sosesc. Completă confirmă fiecare bloc PAR2 cu MD5. Rapidă (implicită) revendică blocurile prin CRC32, ceea ce e de 2-3x mai rapid pe un procesor lent, și verifică în continuare suma de control proprie fiecărui articol. Sobră sare în plus peste acele sume ale articolelor de îndată ce PAR2 acoperă un fișier: dauna apare atunci o clipă mai târziu, la blocul ei. În toate trei, trecerea finală și orice reparație folosesc MD5 complet, iar o descărcare fără fișiere PAR2 își păstrează sumele articolelor.

Disc și cotă live

Spațiu liber minim (pune în pauză joburile noi sub el; 2 GB implicit, 0 îl dezactivează), cotă de descărcare pe zi sau lună (UTC; joburile Forțate ignoră), limită de memorie - bugetul de RAM al motorului (implicit: ¼ din RAM, limitat; mărește-l pe o mașină cu mult RAM pentru viteză maximă la joburi uriașe și vezi cât costă memoria redusă înainte de a-l scădea) repornire.

Mută finalizatele în: după dezarhivare, curățare și redenumire, descărcările finalizate se mută aici - un share NAS, un disc media, oriunde îți stă biblioteca. Structura pe categorii se păstrează (un job terminat sub tv/ ajunge sub tv/ la destinație), iar istoricul urmează mutarea, așa că aplicațiile conectate importă și șterg din noua locație. Dacă destinația nu e accesibilă când se termină un job (share offline, spațiu epuizat), fișierele rămân în folderul de descărcare și jobul se încheie oricum normal. Gol = dezactivat. Destinații per categorie trimit anumite categorii în altă parte (tv=/Volumes/NAS/TV, movies=/Volumes/NAS/Movies); fiecare cale listată este folderul acelei categorii, deci în ea nu se creează niciun subfolder de categorie suplimentar. Categoriile nelistate urmează Mută finalizatele în.

Adâncimea arhivelor imbricate (implicit 5) este numărul de straturi arhivă-în-arhivă dezarhivate automat: un set RAR care conține un 7z care conține alt RAR este ceva obișnuit pe Usenet, iar nzbfast urmează lanțul fără o a doua trecere. La limită, arhiva cea mai adâncă este pur și simplu lăsată pe loc, nedezarhivată, iar descărcarea se finalizează oricum. Mărește valoarea doar pentru release-uri neobișnuit de adânci.

Redenumire automată și curățare live

Redenumește descărcările finalizate (activată implicit) dă folderului și fișierului principal un nume curat și clar: un film devine Example Movie (2024), serialele păstrează Show - S01E02. Numele ofuscate sau nerecunoscute sunt lăsate exact așa cum au fost postate, în loc să fie ghicite.

SetareCe face
Include rezoluțiaAdaugă 1080p, 2160p… în nume. Activată implicit; celelalte patru marcaje sunt dezactivate.
Include codecul videox265, x264, AV1
Include codecul audioAtmos, DTS-HD, AC3
Include sursaBluRay, WEB, REMUX
Include grupul de releaseMarcajul -GROUP de la final.
Elimină fișierele inutileActivată implicit. Șterge fișierele .par2, .nzb, .sfv, .nfo rămase și clipurile-eșantion din folderele de film și serial finalizate. Niciodată videoclipul sau subtitrările lui.
Păstrează doar fișierul mediaDezactivată implicit și distructivă: șterge definitiv tot din folder în afară de videoclip(uri) și subtitrări. Fiecare episod dintr-un pachet de sezon este păstrat. Are întâietate față de Elimină fișierele inutile când ambele sunt active.
Numește descărcările după fișierul .nzbDezactivată implicit. Folderul finalizat și fișierul lui principal iau numele fișierului .nzb, în locul numelui pus la punct dedus din lansare. Doar cel mai mare fișier este redenumit: restul unui pachet de episoade, eșantionul, subtitrările și .nfo păstrează numele cu care au sosit. Orice categorie poate să o permită sau să o interzică pe cont propriu sub Categoriile tale, și așa o obții pentru un fel de descărcare și nu pentru altul.
Keep the other words in the nameActivat implicit. Sportul, cursele și alte evenimente sunt adesea un singur titlu repetat tot sezonul, la un cuvânt sau două distanță - "Round11 Hungary Race" față de "Round11 Hungary Qualifying". Păstrarea acelor cuvinte este ceea ce împiedică un sezon întreg să se reducă la același nume. Se aplică doar acolo unde numele nu a putut fi pus la punct altfel, așa că filmele și episoadele obișnuite rămân neatinse.

Întregul grup rulează după reparare și dezarhivare și înainte de Mută finalizatele în, și este sărit complet pentru o sarcină care încă așteaptă o parolă. Ambii pași de ștergere se aplică doar release-urilor recunoscute ca film sau serial: o încărcătură software sau un set neclasificabil (ofuscat) nu este niciodată curățat.

Fișierele șterse ajung în Coșul de gunoi decide ce înseamnă "ștergere" mai sus. Cu ea activă, curățarea mută fișierele în Coșul de gunoi al sistemului (Recycle Bin), astfel încât o presupunere greșită despre ce era gunoi poate fi anulată; cu ea oprită, fișierele sunt șterse definitiv. Este activată implicit pe macOS și Windows, unde Coșul de gunoi este un loc pe care îl vezi și îl poți goli, și dezactivată implicit pe Linux, unde de obicei nu este.

Pe un NAS sau într-un container, las-o oprită. Când descărcările tale sunt pe alt disc decât directorul tău home - aranjamentul obișnuit pe Unraid, Synology, un seedbox sau orice instalare Docker cu un share montat - regulile de coș de gunoi din Linux nu folosesc deloc un coș de desktop. Ele creează un folder ascuns .Trash-1000 (numărul este id-ul tău de utilizator) la rădăcina discului de descărcare și mută fișierele acolo. Nimic nu îți arată acel folder, nimic nu îl golește, iar spațiul ocupat de el nu se mai întoarce niciodată.

Dacă ai rulat o versiune mai veche de nzbfast pe Linux cu setarea activă, caută acel folder la rădăcina share-ului de descărcare. Este sigur de golit: tot ce e în el este un fișier despre care curățarea a decis deja că nu îl voiai. nzbfast nu îl va goli pentru tine, pentru că e pe discul tău și e judecata ta.

Foldere și procesare

Folder de descărcare repornire, folder monitorizat, script de post-procesare (rulat după fiecare job cu argumente compatibile SABnzbd și mediul SAB_* - scripturile SAB existente funcționează neschimbate), extensii de curățare (fișiere gunoi șterse după finalizare), Foldere inteligente și arhivare TV (vezi §10).

Păstrează fișierele .nzb după preluare (dezactivată implicit) lasă fișierul .nzb original în folderul monitorizat după ce a fost pus în coadă, în loc să-l mute la coșul de gunoi - pentru colecționari, și pentru a da fișierul cuiva când o descărcare face probleme. Un fișier păstrat este ținut minte, inclusiv peste reporniri, și nu mai este pus în coadă; salvează-l din nou pentru a-l descărca încă o dată. Oricum ai alege, sertarul fiecărui job are un buton Descarcă fișierul .nzb, așa că o copie a fișierului .nzb al oricărui job nu e niciodată la mai mult de un clic distanță.

Caută pe indexere live

Conturile tale pe site-uri indexer de NZB, câte un rând fiecare, ca o căutare de pe perete să le poată întreba și pe ele. Ce face funcția, și cum cauți cu ea, este la §5.

CâmpCe face
NumeO etichetă la alegerea ta, și identitatea sub care sunt ținute contoarele și limitele zilei. Redenumirea unui rând începe o intrare nouă, deci reintrodu cheia.
Adresă APIAdresa de API a site-ului. Adresa lui web obișnuită e de ajuns; o intrare Prowlarr sau NZBHydra2 arată așa: http://host:9696/1/api.
Cheie APIDin pagina ta de cont de pe acel site. Rămâne pe mașina asta, se trimite doar site-ului căruia îi aparține, nu mai este arătată și nu se scrie niciodată în jurnal. Gol păstrează cheia salvată.
Căutări pe ziCâte căutări poate cheltui contul acesta pe zi. 0 = nelimitat, și valoarea implicită.
Descărcări pe ziCâte preluări poate cheltui pe zi. 0 = nelimitat. Ambele contoare o iau de la capăt la miezul nopții UTC.
pornit, Testeazăpornit este ce face un rând căutabil; scoate bifa ca să păstrezi un cont fără să-l folosești. Testează întreabă site-ul ce acceptă și arată răspunsul, sau eroarea, pe loc.

Indexare live

Indexatorul încorporat este oprit implicit. Găsește postările făcute sub un nume de fișier real, iar o parte mare și în creștere din Usenet este postată intenționat fără unul: subiect aleator, nume de fișiere aleatoare înăuntru, aruncate într-un grup de-a valma. Numele adevărat trăiește doar într-un NZB pe care uploaderul îl publică în altă parte, deci nu a fost niciodată pe Usenet ca vreun scaner să îl citească. Măsurat pe propriul nostru index, 14,8 milioane de postări scanate au dat cam 31.000 de release-uri de răsfoit, aproximativ unul din cinci sute. Folosește mai departe indexatoare comerciale și adaugă-le la Setări → Caută pe indexere, ca să le poți interoga din perete. Pornește asta dacă urmărești grupuri anume în care lumea încă postează sub nume reale, sau dacă vrei să vezi ce duce de fapt furnizorul tău. Cu comutatorul oprit nu se scanează și nu se descarcă nimic și nu se creează nicio bază de date; Răsfoiește și fluxul newznab dispar, peretele devine o simplă pagină de căutare pentru conturile de indexer pe care le-ai adăugat, iar Watchlist lucrează cu acele conturi.
SetareCe face
Indexator încorporatComutatorul principal, oprit până nu îl pornești. Oprit înseamnă fără scanare, fără căutări de metadate, fără eșantionare a disponibilității și fără flux newznab; un index deja aflat pe disc este păstrat (există un buton de ștergere), așa că repornirea reia în loc să rescaneze.
GrupuriNewsgroup-urile pe care le scanează indexerul integrat (ex. alt.binaries.teevee).
Interval de scanareSecunde între treceri (implicit 900).
Articole de backfillAntete preluate la prima scanare a unui grup.
Aprofundare per scanareFiecare trecere indexează și acest număr de articole mai vechi, extinzând istoricul tău căutabil în fundal până la atingerea Vârstei maxime (implicit 200.000 per trecere ≈ zeci de milioane de articole per zi de funcționare).
Vârsta maximăIgnoră postările mai vechi de atât (90d, 6m, 2y) - limitează dimensiunea indexului și timpul de scanare.
Restrânge la fereastra de vârstăActivată implicit. Șterge și release-urile deja stocate odată ce depășesc vârsta maximă, astfel încât indexul să țină aproximativ acea fereastră în loc să crească la nesfârșit. Dezactivată = doar postările noi sunt filtrate, iar ce e stocat rămâne. Fragmentele moarte (ascunse, încă incomplete după o săptămână) sunt strânse oricum.
Filtre de preluareReguli JSON care filtrează ce intră în index: tipuri (gunoiul obfuscat este eliminat implicit), an/rezoluție/limbă, limite de dimensiune.
Scanează acum / rescanare profundăRulează imediat o trecere; cu o adâncime, rescanează acel număr de antete recente.
Cheie OMDb / reîmprospătare metadate / golireControale de îmbogățire a peretelui (§6). Golirea reconstruiește baza de date de la zero - soluția de recuperare dacă e vreodată coruptă.
Flux de pre-uriOprit până îl pornești. Multe încărcări sunt publicate fără nume, iar o scanare nu are ce citi. Canalele publice de retransmisie anunță numele adevărat, singura cale deschisă de a lega astfel de postări. Pornirea ține deschisă o conexiune la o rețea IRC și ascultă: nu se trimite niciodată nimic și nu se creează niciun cont. Cere indexatorul pornit, fiindcă un flux fără unde să pună ce aude e doar un socket ținut deschis degeaba.
Server de retransmisie, CanaleRețeaua IRC care poartă anunțurile (gazdă sau gazdă:port) și canalele de ascultat, separate prin virgulă. O schimbare are efect la următoarea conectare: oprește și repornește fluxul ca s-o aplici imediat.
Denumire prin corelareRetransmisiile publice în direct nu poartă nume de fișiere, așa că majoritatea postărilor ofuscate nu pot fi legate direct. Ce fixează totuși un anunț este momentul apariției unei lansări și cât de mare este. Aceasta compară ora și dimensiunea anunțate cu postările fără nume și, când se potrivesc, sugerează numele adevărat în Răsfoire. O sugestie este marcată ca atare, cere clicul tău și nu redenumește niciodată fișiere pe disc.
Aplică automat potrivirile puterniceOprit implicit, și strict când e pornit: dimensiunea trebuie să se potrivească strâns, niciun alt anunț nu are voie să se potrivească aproape la fel de bine, iar anunțul trebuie să aleagă înapoi această postare la verificarea în sens invers. Un nume aplicat schimbă doar felul în care e afișată lansarea, e marcat ca dedus și se retrage singur dacă o descărcare încheiată îl contrazice. Tot ce e mai slab rămâne sugestie.
Istoric de anunțuriFluxul în direct aude doar anunțurile de după pornire. Aceasta aduce cam șase luni de anunțuri vechi dintr-o bază publică de pre-uri, politicos și o singură dată, ca să poată fi legate și postările deja indexate. Rulează în fundal cam o jumătate de oră.

Bibliotecă, Securitate, Interfață

Bibliotecă: categorii tratate ca intrări instantanee de bibliotecă + interval de reverificare. Securitate: cheia API completă (tot) și cheia NZB (doar adăugare - sigur de dat site-urilor de indexer), ambele rotibile live. Fiecare casetă înlocuiește cheia de care ține de îndată ce ieși din câmp, iar o casetă lăsată goală păstrează cheia pe care o are deja. Cheia API are în plus Show, care dezvăluie și copiază cheia curentă ca s-o lipești în Sonarr, Radarr sau NZB360 când ai chef, și Create new, care bate una de schimb - cheia veche încetează să funcționeze imediat, așa că tot ce este deja conectat trebuie să primească pe cea nouă. Ambele depind de cheia API însăși: cheia NZB doar-adăugare nu o poate citi, ceea ce este chiar rostul acelei chei. Pentru de unde vine cheia pe o instalare nouă, vezi §2. Interfață: sunete la clic, notificări desktop la finalizare, interval de resortare a providerilor.

Unități de viteză live decide cum este afișată fiecare viteză din panou: megaocteți (MB/s, norma managerelor de descărcare, valoarea implicită) sau megabiți (Mb/s, așa cum își anunță furnizorii liniile). Dimensiunile fișierelor rămân în octeți. Este o proprietate a daemonului, nu a navigatorului tău, deci se aplică oricărui dispozitiv care privește această instalare.

Avansat: butoanele din spatele celor evidente

Șase setări fără opțiune în linia de comandă. Fiecare are acum un rând avansat pe cardul de setări căruia îi aparține și rămâne accesibilă prin API (§16), de ex. /api?mode=config&name=verify_mode&value=lean&apikey=…. Ca toate celelalte, ajung în settings.json.

NumeCe face
verify_modefull | fast | lean (implicit fast). lean este impulsul pentru procesoare lente: ca fast, dar sare în plus peste CRC-ul yEnc per articol de îndată ce PAR2 acoperă un fișier, lăsând un singur strat CRC32 în loc de două. Descărcările fără PAR2 își păstrează CRC-urile de articol, iar verificarea și repararea de la finalul sarcinii rămân neschimbate în ambele cazuri. Selectorul Verificare în timpul descărcării de mai sus este această setare.
auto_retry_minsAșteptarea dinaintea singurei reîncercări automate pe care o primește un prim eșec cu articole lipsă (implicit 20). Întârzierea de propagare este o cauză reală a articolelor lipsă și se rezolvă de la sine; datorită jurnalului, reluarea aduce doar ce încă lipsește. Eșecurile din cauza parolei sau a retragerii nu se califică niciodată.
index_scan_parCâte grupuri scanează indexatorul în paralel (implicit 3, limitat la 1-8).
oracle_sampleBugetul de STAT în repaus al oracolului de disponibilitate (§13), sondaje pe oră și pe server. Implicit 300, maximum 3600, 0 dezactivează complet eșantionarea.
predb_max_rowsCâte anunțuri pre păstrează tabelul fluxului (implicit 250000, limitat la 10000-5000000). Curățarea orară taie până la acest număr, iar importul istoric refuză să pornească dacă l-ar depăși, așa că un import nu adaugă niciodată rânduri pe care următoarea curățare le șterge.
predb_seed_daysCât de departe în urmă ajunge un import istoric pornit fără o fereastră proprie (implicit 180 de zile, maximum 366). O fereastră mai mare înseamnă mai multe cereri către sursa pre, care merge cu o cerere la două secunde.

10 · Automatizare

Watchlist

Cea mai simplă automatizare: adaugă un titlu pe panou, setează preferințele de calitate, gata. Release-urile noi sunt preluate pe măsură ce apar în grupurile tale indexate; copiile de calitate mai bună fac upgrade preluărilor anterioare; o vizualizare de tip calendar arată ce urmează.

O sursă de listă alimentează watchlist-ul dintr-o listă pe care o ții în Plex, în unul din două moduri: îți conectezi contul Plex aprobând un cod scurt pe pagina Plex, sau lipești o adresă de watchlist Plex. Adresa este o cheie de acces - îi dă oricui o deține dreptul de a citi lista - așa că este mascată după salvare. Sincronizarea ștergerilor diferă intenționat după mod: un cont conectat vede întreaga listă, deci un titlu șters acolo nu mai este urmărit aici (descărcările deja finalizate rămân); un feed pe bază de adresă aduce doar cele mai recente intrări, deci absența nu dovedește nimic și titlurile sunt doar adăugate. Ambele valori implicite pot fi schimbate per sursă.

Caută ce vreau și pe conturile mele de indexer, la baza cardului watchlistului, îl lasă să întrebe conturile din Setări → Caută pe indexere pe lângă indexul tău (§5). Începe oprit, fiindcă este singurul lucru de aici care cheltuie un cont contorizat fără să dai tu clic. Pornit, fiecare element urmărit întreabă de vreo două ori pe zi, și doar despre ce nu a găsit deja, sub aceleași limite zilnice și cu aceleași note când un cont este sărit. Un candidat venit de la un indexer este judecat exact ca unul local, așa că pragurile de calitate, upgrade-urile, pachetele de sezon și tratarea duplicatelor se aplică toate, iar o copie locală câștigă orice egalitate fiindcă nu costă alocare. Cu indexerul încorporat oprit, asta este ce îi dă watchlistului ceva cu care să lucreze.

Feeduri RSS

Setări → RSS: orice URL RSS newznab/indexer cu interval per feed, categorie și reguli de filtrare (tipare de titlu, limite de dimensiune). Elementele care se potrivesc sunt descărcate automat.

Foldere inteligente

Reguli evaluate când un job este adăugat: potrivire după tipar/cuvinte-cheie și dimensiune, atribuie o categorie (prima potrivire câștigă). Cu arhivarea TV activă, episoadele TV terminate sunt redenumite și arhivate ca Show/Season 01/Show - S01E02.mkv - gata pentru Plex/Jellyfin fără un instrument extern.

Planificator

Programul săptămânal (vezi §9) automatizează pauza/reluarea/viteza după ora zilei.

Scripturi

Un script de post-procesare primește argumentele poziționale ale SABnzbd și variabilele de mediu SAB_*: ecosistemul mare de scripturi SAB rulează ca atare. Dialectul NZBGet este oferit alături - variabilele NZBPP_* (DIRECTORY, NZBNAME, CATEGORY, TOTALSTATUS, PARSTATUS, UNPACKSTATUS, FINALDIR) și codurile de ieșire 93/94/95 - astfel că rulează și logica de bază a unui script de extensie NZBGet. Maparea este onestă, nu o emulare: repararea și dezarhivarea se petrec în interiorul descărcării într-o singură trecere, așa că o finalizare curată raportează PARSTATUS=0, iar una reparată PARSTATUS=2. Formele de opțiuni per script (NZBPO_*) nu sunt oferite. Un script poate lăsa un ajutor rulând în fundal când iese, iar nzbfast nu îl va omorî, dar nzbfast chiar încetează să citească ieșirea scriptului în clipa în care scriptul însuși se termină: dă-i unui ajutor trecut în fundal propria redirecționare a ieșirii, altfel va fi oprit prima dată când încearcă să afișeze ceva.

Script pre-coadă

Un al doilea hook rulează înainte ca o descărcare să intre în coadă (Setări → Foldere → Script pre-coadă), cu contractul pre-coadă al SABnzbd: argumentele name, pp, category, script, priority, size, group plus mediul SAB_*. Primul rând al ieșirii sale acceptă (1) sau respinge (0) descărcarea; rândurile 2-7 o pot redenumi, pot seta pp, pot schimba categoria, pot alege un script sau pot schimba prioritatea (rândurile goale păstrează valoarea implicită). O descărcare respinsă merge în istoric ca Eșuată, cu motivul, iar Reîncearcă din istoric o aduce înapoi fără a mai întreba scriptul. Hook-ul nu poate pierde niciodată o descărcare: dacă scriptul lipsește, cade, își depășește bugetul de timp sau afișează ceva ce nu este un verdict, adăugarea continuă neatinsă, iar jurnalul spune de ce.

Evenimente de ciclu de viață și webhook-uri semnate

Fiecare etapă a unui job este un eveniment versionat: job.added, job.started, job.finishing, job.repaired, job.completed, job.failed, plus queue.idle, giveup.tripped, disk.low, storage.slow și quota.reached. Fiecare poartă schema_version (acum 1; chei noi pot apărea fără o incrementare - ignoră ce nu cunoști), un seq monoton și un marcaj de timp at în milisecunde.

Pentru a le primi, adaugă o țintă de notificare webhook (Setări → Automatizare) și trece în câmpul ei events felurile de evenimente pe care trebuie să le primească - feluri exacte sau un prefix precum job.*. Ținta primește apoi un POST per eveniment: JSON-ul evenimentului drept corp plus un id delivery (<boot>-<seq>, mânerul după care deduplici), antetele X-NzbFast-Event și X-NzbFast-Delivery, și - când ținta are un secret de semnare - X-NzbFast-Signature: sha256=<hex>, un HMAC-SHA256 al baiților exacți ai corpului sub secretul tău (aceeași formă pe care o folosesc webhook-urile GitHub). Verifică în Python:

expected = "sha256=" + hmac.new(secret, body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(expected, request.headers["X-NzbFast-Signature"])

Livrarea este cel-puțin-o-dată: o țintă care nu poate fi atinsă este reîncercată după 10 s, 60 s și 5 min, apoi abandonată, cu eșecul afișat pe rândul de setări al țintei. Un răspuns de eroare HTTP (404, 401...) nu este reîncercat - repară receptorul și folosește Testul. Fiecare țintă are propria bandă de livrare, așa că una lentă sau de neatins nu o ține niciodată pe loc pe alta; în interiorul unei benzi, livrările păstrează ordinea în care s-au petrecut evenimentele, iar dacă una este abandonată, numerele de secvență arată golul. Cuvintele clasice de evenimente (completed, failed, repaired, disk, quota) își păstrează sensul de notificare umană pe aceeași țintă.

11 · Sonarr, Radarr și prietenii

nzbfast vorbește nativ API-ul SABnzbd, așa că fiecare *arr funcționează imediat - și poate acționa și ca indexer al lor.

Ca client de descărcare

  1. În Sonarr/Radarr: Settings → Download Clients → adaugă SABnzbd.
  2. Host: mașina ta nzbfast · Port: 6789 · Cheie API: cheia ta API completă (unde o găsești: §2).
  3. Categorie după preferință (ex. tv / movies). Test → bifă verde → Save.

Panoul îți întinde adresa: pe o instalare care nu a descărcat încă nimic, ruta „Lasă Sonarr, Radarr sau o aplicație să adauge descărcări” din cardul de bun venit arată adresa exactă cu un buton Copiază alături. Cheia API nu este pe acel rând în mod deliberat; rămâne în spatele propriei dezvăluiri în Setări → Securitate (§2).

Coada, istoricul, starea per job, „remove & delete”, reîncercarea și rutarea pe categorii se comportă toate cum se așteaptă *arr-urile.

Ca indexer (newznab)

  1. Settings → Indexers → adaugă Newznab.
  2. URL: http://<host>:6789/ · Calea API: /api · cheie: cheia ta API.
  3. nzbfast servește interogările caps, search, tvsearch și movie din propriul index al grupurilor tale urmărite, iar /getnzb/<id> returnează NZB-ul.
Pornește mai întâi indexatorul încorporat (Setări → Indexare). Este oprit implicit, iar cât timp este oprit această fațadă răspunde la orice interogare cu <error code="101"> în loc de un rezultat gol, așa că o greșeală se vede când adaugi indexatorul, nu peste săptămâni.

De ce să te obosești? Un indexator găzduit de tine exact peste grupurile care te interesează: fără conturi, fără limite de apeluri API, cu retenție atât de adâncă pe cât îl lași să scaneze. Este un adaos la indexatoarele tale obișnuite, nu un înlocuitor, pentru că găsește doar ce a fost postat sub un nume de fișier real.

12 · Telefon și aplicații la distanță

nzbfast implementează ambele protocoale majore de control la distanță, așa că aproape fiecare aplicație de mobil/tabletă funcționează. Alege protocolul pe care îl acceptă aplicația ta:

Aplicații care vorbesc NZBGet (nzb360, LunaSea, NZB Unity…)

Câmpul din aplicațieValoare
TipNZBGet
Host / portmașina ta : 6789
Nume de utilizatororice (ex. nzbfast)
Parolăcheia ta API

Întreaga suprafață JSON-RPC folosită de aceste aplicații este servită: stare, coadă cu reordonare/pauză/ștergere, istoric, adăugare-NZB, limită de viteză, pauză/reluare, jurnal.

Aplicații care vorbesc SABnzbd

Câmpul din aplicațieValoare
TipSABnzbd
Host / portmașina ta : 6789
Cheie APIcheia ta API (sau cheia NZB pentru acces doar-adăugare)

Panoul pe telefonul tău

Doar deschide http://<machine>:6789 într-un browser mobil - întregul panou și perete au un aspect tactil. Panoul Setări → Acces la distanță arată URL-urile exacte și un cod QR de scanat.

Accesul la nzbfast din afara casei

Nu există o pagină de autentificare, iar asta este intenționat. Un login cu cookie de sesiune este o suprafață de securitate de întreținut la nesfârșit și ar rămâne oricum cea mai slabă încuietoare a oricărui lucru expus pe internet. nzbfast se autentifică în schimb cu cheia ta API și acceptă cheia atât într-un antet al cererii, cât și în URL (X-Api-Key sau Authorization: Bearer) - exact ceea ce permite unui serviciu aflat în față să se ocupe cum trebuie de autentificare.

Cel mai simplu este să nu îl publici deloc. Instalează Tailscale pe această mașină și pe telefon, iar amândouă intră în aceeași rețea privată: nimic nu este expus, nu e nevoie de router sau certificate, iar Setări → Acces la distanță afișează o adresă care funcționează de oriunde de îndată ce vede Tailscale pornit. Alege această cale dacă nu ai nevoie explicit de un domeniu public.

nzbfast poate servi și el însuși HTTPS. Îndreaptă Setări → Securitate → Certificat HTTPS / Cheie privată HTTPS spre un certificat PEM și cheia lui (sau pornește cu --tls-cert cert.pem --tls-key key.pem), repornește, iar panoul și API-ul răspund pe https:// în loc de HTTP simplu - un singur ascultător, o singură schemă. Folosește certificatul pe care domeniul tău îl are deja (de exemplu de la Let's Encrypt prin certbot) sau unul auto-semnat pentru LAN, pe care browserele îl acceptă după un avertisment o singură dată. Un certificat stricat sau expirat refuză pornirea cu fișierul numit, așa că greșeala este vizibilă acolo unde ai făcut-o; reînnoiește înlocuind fișierele și repornind. HTTPS-ul nativ criptează traficul, dar nu adaugă o autentificare, așa că păstrează cheia API setată.

Dacă ai nevoie de un domeniu public, pune în față un proxy invers, dă-i certificatul și lasă-l pe el să facă autentificarea. Pornește nzbfast cu --bind 127.0.0.1, ca proxy-ul să fie singura cale de intrare, și îndreaptă proxy-ul spre http://127.0.0.1:6789:

# Caddy
example.com {
    reverse_proxy 127.0.0.1:6789
}

# nginx
location / {
    proxy_pass http://127.0.0.1:6789;
    proxy_set_header Host              $host;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Adaugă deasupra ce oferă proxy-ul tău: autentificare basic, un serviciu de forward-auth precum Authelia sau Authentik, ori certificate de client. Un lucru îi prinde pe toți - Sonarr, Radarr și aplicațiile de telefon nu pot parcurge o autentificare din browser, așa că lasă-le o cale pe lângă. Majoritatea proxy-urilor pot lăsa să treacă o cerere cu un antet X-Api-Key valid și pot cere autentificare pentru tot restul.

Nu redirecționa pur și simplu portul 6789 pe router. Fără un certificat configurat, panoul vorbește HTTP simplu, deci cheia ta API și tot ce faci cu ea ar traversa internetul lizibile pentru oricine de pe traseu, iar o instalare fără nicio cheie setată este deschisă oricui o găsește. Dacă redirecționezi totuși un port, setează mai întâi o cheie API și activează HTTPS.

13 · Instrumente de performanță

Benchmark de sistem

Un singur clic măsoară cele trei plafoane ale tale - debitul de rețea (o sondă reală de 8 secunde cu mai multe conexiuni), rata de verificare CPU și viteza de scriere pe disc - și începe cu răspunsul: viteza maximă de descărcare estimată și care plafon este limita. Bara cea mai scurtă este strangularea ta; celelalte arată marja lor. Programează-l (la 6 ore → săptămânal) și fiecare rulare este înregistrată într-un tabel de istoric, ca să poți vedea când providerul, ISP-ul sau hardware-ul tău și-au schimbat comportamentul. Rulările programate au loc doar când coada e inactivă.

Reglarea conexiunilor

Măsoară un provider la numere crescânde de conexiuni și recomandă setarea - mai multe socketuri ajută până când providerul sau linia ta se saturează, iar unii provideri penalizează cererea excesivă. Testează tot compară fiecare provider, apoi le pornește pe toate împreună pentru a verifica dacă pool-ul îți saturează linia.

Diversitatea serverelor

Eșantionează cu STAT articole de diferite vârste pe fiecare server și grupează providerii după lacunele comune: providerii cu ~100% articole lipsă comune sunt același backbone (redundant pentru recuperare); cei independenți îți extind cu adevărat acoperirea. Se încheie cu o recomandare în limbaj clar.

Inteligență automată a cozii

Oracolul de disponibilitate

Retragerile sunt principalul motiv pentru care eșuează o descărcare Usenet și sunt previzibile: același release dispare de pe un backbone în timp ce altul încă îl are. nzbfast ține un mic registru al a ceea ce au servit efectiv propriii tăi provideri și cheltuiește un buget minuscul de sondaje STAT în repaus (câteva sute pe oră și pe server, niciodată în timpul unei descărcări) ca să-l țină la zi. Nu descarcă niciodată încărcătură utilă pentru asta.

Ce obții din asta:

Verdictul este o predicție pornind de la indicii, nu o garanție. Pentru un răspuns ferm despre un NZB, nzbfast check (§15) numără articolele reale.

Buget de memorie - și cât costă memoria redusă

Toate cache-urile motorului împart un singur buget (implicit ¼ din RAM-ul fizic, limitat la 256 MB–16 GB). Setează-l explicit cu Limită de memorie în Setări sau cu --mem-limit pe linia de comandă.

nzbfast este construit să-ți satureze rețeaua și discul în același timp, iar RAM-ul este ce îi permite să facă ambele într-o singură trecere: articolele sunt decodate, verificate și scrise direct la offset-urile lor finale, așa că volumele de arhivă nu trebuie să atingă deloc discul. Înfometează-l de memorie și nimic nu se rupe - fiecare cache are o cale de spill, iar motorul degradează spre mai mult I/O pe disc în loc să facă swap sau să eșueze. Dar acel spill nu e gratuit, iar la joburi mari îl poți măsura.

Măsurat pe o singură mașină și o singură linie (M1 Ultra, 10 GbE), aceleași fișiere la fiecare buget. Fiecare rulare a produs un rezultat corect, complet verificat și extras:

Dimensiunea jobuluiSuficient RAMBuget 2 GB
≈ mașină 8 GB
Buget 1 GB
≈ mașină 4 GB
Buget 256 MB
≈ NAS 2 GB
7 GB15 s15 s15 s15 s
35 GB65 s70 s70 s65 s
87 GB148 s206 s +39%196 s +32%180 s +22%
190 GB330 s427 s +29%402 s +22%411 s +25%

Memoria de vârf urmărește bugetul, nu jobul: acea descărcare de 190 GB se finalizează în aproximativ 1.1 GB de RAM. Ce plătești în schimb este timp - și doar la joburi mari.

RecomandareDă-i nzbfast aproximativ 2 GB de buget per 100 GB din cel mai mare job pe care îl descarci și lasă valoarea implicită în pace altfel - ¼ din RAM este deja răspunsul corect pe majoritatea mașinilor. În practică: 4 GB RAM acoperă joburi până la ~35 GB la viteză maximă; 8–16 GB le ține acolo și pe cele de peste 100 GB; un NAS de 2 GB va termina orice îi dai, dar tratează-l ca pe un descărcător de fundal, nu ca pe ceva care va satura o linie rapidă.

Pe un NAS mic, scade și Conexiunile (2–4) odată cu bugetul. La un buget de 256 MB și 2 conexiuni, memoria de vârf rămâne aproape de 190 MB - confortabil în ce are liber un NAS de 2 GB. Ține cont că în acel punct numărul de conexiuni, nu memoria, este ce te limitează: același job de 35 GB a durat 286 s în loc de 65 s. Aceasta este forma onestă a compromisului - va termina întotdeauna și va termina corect; doar nu va satura linia.

Benchmark-urile sunt rerulate pentru fiecare release; metoda și cifrele per mașină sunt publicate alături de rezultate.

14 · Actualizări

Actualizarea fără să-ți pierzi setările

O singură regulă acoperă fiecare instalare: o actualizare înlocuiește programul, niciodată setările tale. Tot ce ai configurat - serverele, căile, cheia API, coada - trăiește într-o mână de fișiere dintr-un singur folder (§17), și niciun program de instalare, pull de imagine sau upgrade de pachet nu atinge acel folder. Când setările chiar par dispărute după o actualizare, aproape întotdeauna e pentru că noua instalare citește un folder diferit, gol, nu pentru că ceva ar fi fost șters; fișierele vechi sunt tot acolo unde au fost mereu. §18 are pașii de recuperare.

InstalareCum actualizezi
Aplicația macOSDeschide noul DMG și trage NzbFast în Applications, înlocuind-o pe cea veche. Folderul tău de date este separat și nu este atins.
Programul de instalare WindowsRulează noul setup peste instalarea veche. Folderul tău de date este separat și nu este atins.
Docker (linia de comandă)docker pull nzbfast/nzbfast, șterge containerul vechi, apoi rulează-l pe cel nou cu exact aceleași mapări -v. Imaginea e de unică folosință; folderul /config mapat este instalarea ta. Dacă comanda ta de rulare folosește o cale relativă precum -v ./config:/config, ruleaz-o de fiecare dată din același director - de oriunde altundeva, ./config este un folder diferit, gol.
Docker Composedocker compose pull && docker compose up -d, cu același fișier compose în același loc. ./config din fișier este ancorat la folderul fișierului însuși, așa că lasă fișierul unde este.
WatchtowerNimic de făcut: recreează containerul cu aceleași mapări când apare o imagine nouă.
UnraidFila Docker → Check for UpdatesApply Update. Nu șterge și readăuga niciodată aplicația ca s-o actualizezi; dacă vreodată chiar reinstalezi, păstrează aceeași cale appdata ca să-ți găsească /config-ul existent.
Synology (Container Manager)Descarcă imaginea nouă, oprește containerul și recreează-l cu aceleași setări de volume - ghidul Synology acoperă totul clic cu clic, inclusiv cum să faci asta programat.
Synology (pachet)Instalează noul .spk în Package Center; se actualizează pe loc.
QNAP (pachet, beta)Instalează noul .qpkg în App Center; se actualizează pe loc. Setările și descărcările tale stau în afara folderului aplicației, așa că nici o actualizare, nici o dezinstalare nu le ia cu ele.
Debian / Ubuntu (.deb)
Fedora / RHEL (.rpm)
Instalați noul pachet peste cel vechi: sudo dpkg -i nzbfast_*.deb sau sudo rpm -U nzbfast-*.rpm. Folderul cu setări nu face parte din pachet, așa că o actualizare nu poate înlocui nimic din el, iar modificările dumneavoastră din /etc/nzbfast/nzbfast.env se păstrează. Serviciul este repornit doar dacă rula deja.
Homebrewbrew upgrade nzbfast
Binar simpluÎnlocuiește binarul. Configul tău rămâne oriunde l-ai făcut (§17).
SfatUtilizatorii Docker care leagă Sonarr sau Radarr: pune cheia API chiar în definiția containerului (-e NZBFAST_APIKEY=…, sau în blocul environment al fișierului tău compose ori al șablonului Unraid). O cheie păstrată acolo supraviețuiește oricărei pățanii a containerului, pentru că trăiește pe gazdă, în definiție, și este reaplicată la fiecare pornire. O cheie pe care o setezi ulterior în Setări tot are prioritate față de ea.

15 · Linia de comandă

Tot ce face daemonul poate fi și scriptat. Comenzile de zi cu zi:

ComandăScop
nzbfast setupConfigurare interactivă a serverului.
nzbfast serveRulează daemonul (panou + API + automatizare). --open deschide browserul; --apikey setează cheia manual (§2); --bind alege adresa de ascultare, implicit 0.0.0.0 (fiecare interfață), 127.0.0.1 doar pentru această mașină. Vezi --help pentru lista completă de flaguri - fiecare setare din panou are un flag geamăn.
nzbfast get file.nzbDescarcă un NZB, pipeline complet, fără daemon. --preflight abandonează devreme dacă postarea nu se poate finaliza; --password pentru seturi criptate.
nzbfast check file.nzbVerdict de disponibilitate - COMPLETE / REPAIRABLE / IMPOSSIBLE - fără a descărca payload-ul.
nzbfast verify DIRVerifică fișierele în raport cu setul PAR2 dintr-un director.
nzbfast sysbenchBenchmark-ul de sistem + raportul de diversitate, în terminal.
nzbfast index / searchScanează grupurile în index / caută în el, fără daemon.
nzbfast import-sabImportă servere dintr-un ini SABnzbd.

Disponibile și: inspect, probe, bench, bench-cpu, soak, fetch, spots/spot-search/spot-get (Spotnet), predb-seed (umple baza de pre-uri cu perioada de dinainte de pornirea fluxului), make-release-nzb/make-test-nzb (fixturi de test). Fiecare comandă acceptă --config și --help. Li se adaugă post: încarcă fișiere ca articole yEnc și scrie NZB-ul corespunzător. Este o unealtă de operare, cere un --post-server explicit și nu alege niciodată un server în locul tău.

16 · Prezentare API

Endpoint de bază: http://host:6789/api?mode=…&apikey=…&output=json - compatibil SABnzbd, așa că integrările SAB existente funcționează neschimbate. Două chei: cheia API (control complet) și cheia NZB (doar adăugare: addfile/addurl). addnzblnk lipsește intenționat din setul de doar adăugare: rezolvarea unei legături poate consuma cotă contorizată de indexator, ceea ce nu este treaba unei credențiale de doar adăugare.

ZonăModuri
Coadăqueue (cu name=delete/pause/resume/priority/switch), pause, resume, addfile, addurl, addnzblnk, retry, set_password
Infohistory, status/fullstatus, stats, version, server_stats, usage, log, warnings, plus /jobnzb/<nzo_id> (fișierul .nzb păstrat al jobului, înapoi la tine - din coadă sau din istoric; doar cu cheia API completă)
Configget_config, config&name=<setting>&value=… (fiecare câmp din Setări), server_save/delete/test/enable/reorder, import_probe/apply
Index și pereteindex_search, index_get, index_stats, index_scan_now, wall, wall_search/fix/refresh/art, plus newznab la /api?t=caps|search|tvsearch|movie și /getnzb/<id>
Automatizarewatchlist, watchlist_check_now, watch_calendar, feeds, smart_folders, schedule
Diagnosticesysbench, bench_history, connladder, pooltest, diversity, update_check
NZBGet JSON-RPC/jsonrpc - status, listgroups, history, append, editqueue, rate, pause, log (autentificare Basic: orice utilizator, cheia API drept parolă)
Previzualizare / redare/stream/<nzo_id> (intervale HTTP; pornirea unui job de bibliotecă parcat necesită token ?t= sau cheie), /m3u/<id> (necesită cheie; generează tokenul), /wall, /art/…

17 · Fișiere și locații

Unde se află folderul de setări depinde de felul în care a fost instalat nzbfast. Acest singur folder conține tot ce merită salvat într-un backup:

InstalareFolderul de setări
Aplicația macOS~/Library/Application Support/nzbfast/
Windows%LOCALAPPDATA%\nzbfast\
Docker / containere NAS/config din interiorul containerului, adică folderul de pe gazdă pe care l-ai mapat la el. Pe Unraid, acesta este folderul appdata al aplicației.
Pachetul Synology/var/packages/nzbfast/var/
Pachetul QNAPDe obicei /share/Download/nzbfast/config/. Folderul este ales la instalare și apare în jurnalul App Center; fișierul nzbfast.env al aplicației îl notează și el.
Pachet Debian / RPM/var/lib/nzbfast/
TerminalFolderul în care ai rulat nzbfast setup, sau oriunde arată --config / $NZBFAST_CONFIG.

Și ce se află în el:

FișierConținut
config.local.jsonCredențiale de server și opțiuni per server. Creat de asistent; editabil în Setări. Păstrează-l privat. Parolele sunt ofuscate, nu criptate.
settings.jsonFiecare setare schimbată în panou. Se află lângă config; valorile din interfață au prioritate față de flagurile din linia de comandă. Șterge o cheie (sau fișierul) pentru a reveni la flaguri/valori implicite.
apikeyCheia API pe care nzbfast și-a făcut-o singur la o primă rulare (§2). Se află lângă config; pe macOS și Linux poate fi citită doar de contul care rulează nzbfast. Nu îl șterge ca să obții o cheie nouă: pe o instalare care a rulat deja, nimic nu o înlocuiește, iar daemonul revine fără nicio cheie. Setează una nouă din Setări → Securitate în schimb.
index.dbIndexul de release-uri (SQLite) + metadatele peretelui. Sigur de șters - se reconstruiește prin scanare (Setări → Indexare → Golire face asta pentru tine).
<config>/.spool/Starea cozii (supraviețuiește repornirilor), NZB-uri per job, registrul de utilizare, istoricul benchmark-urilor, cache-ul de imagini poster.
Jurnal de articoleÎn interiorul folderului de ieșire al fiecărui job cât timp e incomplet - alimentează reluarea după blocare și reîncercarea. Eliminat la succes.
Instrumente externeNu e nevoie de niciunul - extragerea RAR și repararea PAR2 sunt native. Dacă un set exotic are vreodată nevoie de un unrar sau par2 extern ca rezervă, nzbfast caută lângă executabilul său, apoi în $PATH.

18 · Depanare

SimptomVerificare
Descărcări lenteRulează Benchmark de sistem - numește strangularea direct. Dacă e rețeaua: rulează Reglarea conexiunilor, verifică numărul de conexiuni per server și confirmă că providerii tăi nu sunt toți un singur backbone (Diversitatea serverelor).
Lent doar la joburi foarte mari
(NAS sau mașină cu RAM redus)
De așteptat și măsurabil: un buget de memorie înfometat face spill cache-urilor pe disc și costă 20–40% peste ~87 GB. Vezi Buget de memorie pentru cifre și câtă memorie să-i dai. Joburile mai mici nu sunt afectate.
Descărcarea eșuează cu „articole lipsă”Postarea a expirat sau a fost retrasă la providerii tăi. Un al doilea provider pe un backbone diferit salvează majoritatea acestora. nzbfast check prezice asta înainte de descărcare. Iar peretele semnalează din timp release-urile probabil dispărute prin punctul său de disponibilitate (§13). Un prim eșec de acest fel se reia singur o dată după o așteptare, fiindcă întârzierea de propagare arată exact la fel și se rezolvă de la sine.
Arhiva terminată cere o parolăRândul din Istoric arată 🔑 - introdu parola acolo; jobul se finalizează pe loc.
O arhivă nu se despacheteazăEșecurile de parolă și de reparare se numesc singure în rândul din Istoric. Pentru orice altceva există o supapă de siguranță: Setări → Folder monitorizat și post-procesare → Despachetează cu unrar extern (o setare avansată) predă despachetarea programului unrar instalat pe mașina ta în locul extractorului integrat. Altfel las-o dezactivată: calea integrată este mai rapidă pe fiecare formă pe care am măsurat-o, iar postările obfuscate cu nume hash o folosesc oricum întotdeauna, pentru că unrar nu le poate urmări redenumirea. Același comutator pentru rulările nzbfast get este variabila de mediu NZBFAST_NO_NATIVE_UNRAR=1. Dacă unrar despachetează o arhivă pe care extractorul integrat a refuzat-o, te rugăm să ne-o semnalezi ca să reparăm calea integrată.
Sonarr/Radarr nu se poate conectaPortul 6789 e accesibil? Cheia API e corectă (cheia completă, nu cheia NZB)? Tipul de client setat pe SABnzbd?
Panoul cere o cheie API pe care nu am setat-o niciodatăO instalare nouă își face una singură și o afișează o dată la pornire (§2). Se află în fișierul apikey de lângă configul tău și în ieșirea de pornire. Sau scrie o cheie proprie în Setări → Securitate dintr-un browser care este deja autentificat.
Toate setările mele par dispărute după o actualizare
(servere, căi, cheia API)
Nimic dintr-o actualizare nu șterge setări; asta înseamnă că nzbfast citește un folder diferit, gol. Mai întâi: câmpul cheii API din Setări apare gol prin design - dă clic pe Show înainte să tragi concluzia că s-a pierdut. Pe Docker, compară maparea /config a containerului nou cu cea a celui vechi: o cale schimbată pe gazdă, o cale relativă rulată din alt director sau un folder appdata proaspăt pornesc toate nzbfast de la zero, în timp ce setările tale reale stau neatinse la calea de dinainte. Găsește folderul vechi (caută settings.json, fișierul tău de config și apikey - locațiile în §17), apoi fie îndreaptă maparea înapoi spre el, fie copiază acele fișiere în folderul nou și repornește. Jurnalul de pornire numește exact fișierul de setări folosit: [settings] applying saved settings from …
Nimic din rețea nu ajunge la daemonVerifică --bind: 127.0.0.1 servește doar mașina pe care rulează nzbfast. Valoarea implicită, 0.0.0.0, servește fiecare interfață. Apoi verifică firewallul mașinii pentru portul 6789.
Cardul Răsfoiește rămâne micIndexerul crește în fundal - verifică dacă grupurile din Setări → Indexare sunt setate și dă-i timp Aprofundării per scanare să acumuleze istoric. „Scanează acum” forțează o trecere; linia de stare arată progresul în timp real.
Peretele arată grafică greșită/lipsăFișa de detalii → ✎ Corectează potrivirea sau ↻ Reîmprospătează metadatele. Căutările de filme se îmbunătățesc cu o cheie OMDb gratuită.
macOS spune că aplicația "nzbfast" nu poate fi deschisăDouă cauze, ambele rapide. Dacă folosești arhiva simplă -macos-universal.zip, dă dublu clic pe Start nzbfast.command, nu pe fișierul nzbfast de lângă el: acela e programul propriu-zis, iar Finder răspunde la un dublu clic pe el exact cu acest mesaj. Lansatorul e cel care pregătește totul și pornește programul. Dacă și lansatorul dă același mesaj, copia și-a pierdut bitul Unix de execuție pe drum: macOS păstrează acel bit în interiorul arhivei .zip, dar aplicațiile de chat, discurile din cloud și rearhivarea nu îl păstrează, așa că o copie dată din mână în mână ajunge fără drept de execuție. Descarcă .dmg sau .zip direct de pe pagina de release-uri și nu se întâmplă. Ca să salvezi copia pe care o ai deja: deschide Terminalul, scrie chmod +x cu un spațiu la final, trage Start nzbfast.command și fișierul nzbfast în fereastră și apasă Return, apoi dă din nou dublu clic pe lansator.
Daemonul nu pornește: portul e ocupatRulează altă instanță - sau schimbă --port.
Unde sunt jurnalele?Cardul Jurnal din panou sau terminalul/fișierul de jurnal cu care ai lansat serve.
Tot blocat?Cardul Jurnal numește de obicei vinovatul - include coada lui când raportezi o problemă, împreună cu nzbfast --version.

nzbfast - acest manual vine cu fiecare release. Setările, endpointurile și valorile implicite menționate aici corespund versiunii cu care a fost livrat.