1. Iniziare

AniRena è un indice di torrent focalizzato su anime, manga, audio e media correlati. Puoi navigare e scaricare torrent senza un account. Un account è necessario per caricare torrent, postare nei gruppi o usare l'API.

La barra di navigazione in alto fornisce accesso alle aree principali del sito:

  • Home — la pagina di elenco e ricerca torrent.
  • Carica — invia un nuovo torrent (richiede login).
  • Guida — questa pagina.
  • Statistiche — statistiche del sito (torrent, peer, upload nel tempo).
  • Gruppi — directory dei gruppi di rilascio.
  • RSS — feed RSS degli ultimi upload, filtrabile per categoria.

Il tuo menu account (in alto a destra quando sei loggato) apre un pannello profilo dove puoi regolare le impostazioni, gestire le opzioni di sicurezza e accedere alla tua chiave API.

2. Navigare e cercare

La home page elenca tutti i torrent ordinati per data di upload. Usa la barra di ricerca in alto per filtrare i risultati.

Ricerca di base

Digita qualsiasi parola nella barra di ricerca e premi Invio (o clicca l'icona di ricerca). I risultati sono classificati per rilevanza quando una query è attiva.

Operatori di ricerca

I seguenti operatori possono essere combinati con una query normale:

OperatoreEsempioEffetto
user:"name"user:"SubsPlease"Mostra solo i torrent caricati da quell'utente.

Cliccando il nome di un caricatore nell'elenco torrent si esegue automaticamente una ricerca utente.

Categorie e sottocategorie

Usa il selettore categoria (l'icona griglia accanto alla barra di ricerca) per limitare i risultati a una categoria.

  • Anime
  • Manga/Manhwa/Comic
  • Audio
  • Letteratura
  • Live Action
  • Immagini
  • Software
  • Hentai
  • Altro

Ogni categoria ha sottocategorie (es. Anime in RAW, Sub/Audio, Video musicale) selezionabili nel modal categoria.

Ordinamento e filtri

Le intestazioni delle colonne nell'elenco torrent sono cliccabili per ordinare per quella colonna. Nota: seeders e leechers sono valori in tempo reale da Redis e non possono essere usati per l'ordinamento.

Filtro lingua

Usa il selettore lingua (icona bandiera) per mostrare solo i torrent con una lingua specifica.

Feed RSS

Il feed RSS su /rss fornisce gli ultimi upload. Aggiungi ?category=anime (o qualsiasi altro slug categoria) per filtrare il feed.

3. Scaricare torrent

Clicca su qualsiasi nome di torrent per aprire il pannello dettagli. Da lì puoi:

  • Scarica .torrent — salva il file .torrent direttamente. L'URL diretto è /torrents/{id}.torrent
  • Link Magnet — si apre direttamente nel tuo client torrent tramite il protocollo URI magnet. L'URL è /torrents/{id}/magnet

Il pannello dettagli mostra anche la descrizione del torrent, l'elenco file, la lista tracker e i conteggi seeder/leecher.

Link di download legacy

I vecchi link di download AniRena sono ancora supportati e reindirizzano automaticamente al file .torrent corretto usando l'ID legacy: /dl/{old_id}

Client BitTorrent consigliati

Qualsiasi client BitTorrent moderno funziona. I client di seguito sono consigliati e supportano completamente BitTorrent v2 / torrent ibridi:

qBittorrent Nella pagina di download, fai clic su Opzioni di download aggiuntive e scegli la versione etichettata lt20 (libtorrent 2.0). Il programma di installazione predefinito utilizza libtorrent 1.2 che non supporta i torrent v2 puri.v2 supportato
PicoTorrent Client Windows leggero con supporto nativo BitTorrent v2 pronto all'uso.v2 supportato
BiglyBT Client multipiattaforma ricco di funzionalità basato su Azureus/Vuze con pieno supporto v2.v2 supportato

4. Creare un account

Registrazione

Clicca su Registrati nella barra di navigazione. Scegli un nome utente, fornisci un indirizzo email e imposta una password.

Attivazione email

Dopo la registrazione, un'email di verifica viene inviata al tuo indirizzo. Clicca il link nell'email per attivare il tuo account.

Recupero password

Se dimentichi la password, clicca su Password dimenticata nella pagina di login e inserisci il tuo indirizzo email.

5. Caricare torrent

Vai su Carica nella barra di navigazione. Devi essere loggato con un account attivo e non bannato.

Tab Upload — invia un file .torrent esistente

Trascina o seleziona un file .torrent. Una volta caricato, compila i campi:

CampoObbligatorioDescrizione
File torrentIl file .torrent da caricare.
NomeNoSostituisci il nome visualizzato del torrent.
CategoriaLa categoria del contenuto (Anime, Manga, Audio, ecc.).
SottocategoriaNoUn tipo più specifico all'interno della categoria.
LingueNoUno o più tag lingua che descrivono la lingua del contenuto.
GruppoNoAssocia questo rilascio a un gruppo di cui fai parte.
DescrizioneNoDescrizione in formato Markdown mostrata nella pagina dettagli (max 65535 caratteri).
PrivatoNoImposta il flag privato nel torrent, disabilitando DHT/PEX.
URL AnnounceNoSostituisci o aggiungi l'URL announce principale del tracker.
Tracker extraNoLetto dal file torrent. Non può essere modificato durante il caricamento — usa la scheda Crea se vuoi personalizzare l'elenco dei tracker.
CommentoNoSostituisci il campo commento torrent incorporato nel file.
Requisito tracker AniRena

Il tuo torrent deve includere almeno un URL tracker di AniRena nella sua lista announce (in qualsiasi tier). Il sito lo verifica al momento del caricamento e rifiuterà i torrent che non includono un tracker AniRena. Se hai creato il torrent senza aggiungere prima il tracker AniRena, caricalo e poi riscaricaricalo dal sito — il file scaricato avrà i tracker corretti iniettati automaticamente.

Tab Crea — crea un nuovo torrent

Il tab Crea ti permette di generare un nuovo .torrent da zero specificando percorsi file, URL tracker e altri parametri direttamente nel browser.

Moderazione

Gli upload vengono automaticamente verificati rispetto a una lista di pattern di contenuto vietato. I torrent corrispondenti vengono rifiutati. I torrent duplicati (stesso info hash) vengono anch'essi rifiutati.

6. Il tuo account

Clicca sul tuo nome utente in alto a destra per aprire il pannello profilo.

Impostazioni

Cambia il tema UI, la dimensione del font, lo schema colori, la lingua dell'interfaccia e le preferenze di visualizzazione torrent.

Password

Inserisci la password attuale e la nuova password due volte. Un codice di verifica viene inviato alla tua email registrata.

Autenticazione a due fattori (2FA)

Abilita l'autenticazione a due fattori basata su TOTP usando qualsiasi app di autenticazione. Quando abiliti il 2FA:

  1. Scansiona il codice QR (o inserisci il segreto manualmente) nella tua app di autenticazione.
  2. Inserisci il codice a 6 cifre mostrato nella tua app per confermare la configurazione.
  3. Salva i codici di recupero mostrati — sono codici monouso per recuperare l'accesso.

Per disabilitare il 2FA, inserisci il tuo codice TOTP attuale e conferma.

Sessioni attive

Visualizza tutte le sessioni di login attualmente attive. Clicca Revoca su qualsiasi sessione non riconosciuta.

Chiave API

Genera una chiave API personale usata per caricare torrent programmaticamente tramite l'API AniRena.

Elimina account

Richiedere l'eliminazione dell'account avvia un periodo di grazia di 30 giorni. Puoi annullare l'eliminazione in qualsiasi momento entro quel periodo.

7. API AniRena

AniRena fornisce un'API JSON che ti permette di caricare torrent programmaticamente usando una chiave API personale.

Autenticazione

L'API utilizza un flusso di autenticazione in due fasi. Prima scambia la tua chiave API permanente con un bearer token di breve durata, poi passa quel token nell'intestazione Authorization di ogni richiesta API.

La tua chiave API è disponibile in Il tuo account > Chiave API. Tienila segreta — chiunque la possieda può ottenere bearer token e caricare a tuo nome. Se viene compromessa, revocala immediatamente e genera una nuova.

Fase 1 — Ottieni un bearer token
POST/api/v1/auth/token

Invia una richiesta POST all'endpoint del token con la tua chiave API nell'intestazione Authorization. Non è richiesto un corpo della richiesta.

Authorization: ApiKey <your-api-key>
Risposta del token
{
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600
}
Durata del token

I token Bearer rimangono validi fino a 3600 secondi dall'emissione e possono essere riutilizzati per ogni chiamata fino alla scadenza. Quando un token scade, genera un nuovo token tramite POST /api/v1/auth/token. Ogni risposta restituisce comunque il token corrente nell'intestazione X-New-Token per compatibilità con i client esistenti.

X-New-Token: <next-bearer-token>
Accesso in un'unica richiesta (con 2FA)
POST/api/v1/auth/login

Autenticati con nome utente o email e password in un'unica richiesta e ricevi direttamente un token bearer. Se sul tuo account è attiva la 2FA, includi il codice attuale dell'app di autenticazione in totp_code (o un codice di recupero in recovery_code). Facoltativamente imposta new_api_key su true per generare, nella stessa risposta, anche una nuova chiave API permanente.

Corpo della richiesta
{
  "login":         "username or email",
  "password":      "your-password",
  "totp_code":     "123456",   // obbligatorio se la 2FA è attiva (6 cifre)
  "recovery_code": "",         // alternativa a totp_code
  "new_api_key":   false       // imposta true per generare anche una nuova chiave API
}
Risposta del token
{
  "ok":         true,
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600,
  "api_key":    "<new-api-key>"   // presente solo quando new_api_key era true
}

Il token bearer funziona esattamente come quello ottenuto da ‎/api/v1/auth/token. Il campo api_key viene restituito solo quando new_api_key è true — salvalo subito, poiché viene mostrato una sola volta e sostituisce qualsiasi chiave precedente.

Esempio — accedi e (facoltativamente) ottieni una nuova chiave API
# pip install requests
import requests

BASE_URL = "https://www.anirena.com"

# One request: authenticate (with 2FA if enabled) and get a bearer token.
# Set new_api_key=True to also receive a brand-new permanent API key.
resp = requests.post(
    f"{BASE_URL}/api/v1/auth/login",
    json={
        "login":       "your-username",  # username or email
        "password":    "your-password",
        "totp_code":   "123456",         # omit if 2FA is not enabled
        "new_api_key": True,             # optional
    },
)
resp.raise_for_status()
data  = resp.json()
token = data["token"]  # use as: Authorization: Bearer <token>
if "api_key" in data:
    print("New API key — store it now:", data["api_key"])

Fase 2 — Carica un torrent

POST/api/v1/torrents

Invia una semplice richiesta POST JSON con il bearer token nell'intestazione Authorization.

Corpo della richiesta
CampoTipoObbligatorioDescrizione
torrentstringContenuto del file .torrent codificato in Base64.
categorystringSlug categoria: anime, manga, audio, literature, live, pictures, software, hentai, other.
namestringNoSostituisci il nome visualizzato del torrent.
sub_categorystringNoSlug sottocategoria (es. raw, sub-audio). Deve appartenere alla categoria scelta.
languagesstring[]NoArray di codici lingua BCP 47 (es. en, ja).
group_idstringNoUUID di un gruppo di cui fai parte per associare questo rilascio.
descriptionstringNoDescrizione del rilascio in formato Markdown (max 65535 caratteri).
commentstringNoSostituisci il campo commento torrent incorporato.
is_privatebooleanNoImpostare su true per abilitare il flag privato nel torrent.
comments_enabledbooleanNoConsenti commenti su questo torrent. Il valore predefinito è true (abilitato).
anime_idstringNoUUID di un'entry anime da collegare a questo torrent. Ottieni l'UUID tramite GET /api/v1/anime/search. Restituisce 400 se l'UUID non corrisponde a nessuna entry conosciuta.
announcestringNoSostituisci o aggiungi l'URL announce principale.
trackersstringNoLista separata da newline di URL tracker aggiuntivi.
testbooleanNoImposta su true per eseguire una simulazione: la richiesta viene completamente validata ma il torrent non viene salvato. Usalo per verificare che il tuo payload sia corretto prima dell'invio reale.
Simulazione / modalità di test Aggiungi "test": true a qualsiasi richiesta di caricamento per verificare se avrebbe esito positivo senza aggiungere effettivamente il torrent. Si applicano tutte le regole di validazione — autenticazione, ricerca categoria, rilevamento duplicati, modelli vietati, requisiti tracker — quindi la risposta riflette esattamente ciò che restituirebbe un invio reale. Il token viene comunque ruotato in caso di successo.
Risposta di successo simulazione — 200 OK
{
  "ok":           true,
  "test":         true,
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Codici lingua disponibili
ababAbkhazian
aaaaAfar
afafAfrikaans
akakAkan
sqsqAlbanian
amamAmharic
ararArabic
ar-001ar-001Arabic (Modern Standard)
ananAragonese
hyhyArmenian
asasAssamese
avavAvaric
aeaeAvestan
ayayAymara
azazAzerbaijani
bmbmBambara
babaBashkir
eueuBasque
bebeBelarusian
bnbnBengali
bhbhBihari
bibiBislama
bsbsBosnian
brbrBreton
bgbgBulgarian
mymyBurmese
yueyueCantonese
cacaCatalan
chchChamorro
ceceChechen
nynyChichewa
zhzhChinese
zh-HKzh-HKChinese (Hong Kong)
zh-Hanszh-HansChinese (Simplified)
zh-SGzh-SGChinese (Singapore)
zh-TWzh-TWChinese Traditional
cucuChurch Slavic
cvcvChuvash
kwkwCornish
cocoCorsican
crcrCree
hrhrCroatian
cscsCzech
dadaDanish
dvdvDivehi
nlnlDutch
nl-BEnl-BEDutch (Belgian)
dzdzDzongkha
enenEnglish
en-USen-USEnglish (US)
eoeoEsperanto
etetEstonian
eeeeEwe
fofoFaroese
fjfjFijian
filfilFilipino
fifiFinnish
frfrFrench
fr-CAfr-CAFrench (Canadian)
ffffFula
glglGalician
lglgGanda
kakaGeorgian
dedeGerman
de-ATde-ATGerman (Austrian)
elelGreek
gngnGuarani
guguGujarati
hthtHaitian Creole
hahaHausa
heheHebrew
hzhzHerero
hihiHindi
hohoHiri Motu
huhuHungarian
isisIcelandic
ioioIdo
igigIgbo
ididIndonesian
iaiaInterlingua
ieieInterlingue
iuiuInuktitut
ikikInupiaq
gagaIrish
ititItalian
jajaJapanese
jvjvJavanese
klklKalaallisut
knknKannada
krkrKanuri
ksksKashmiri
kkkkKazakh
kmkmKhmer
kikiKikuyu
rwrwKinyarwanda
rnrnKirundi
kvkvKomi
kgkgKongo
kokoKorean
kjkjKuanyama
kukuKurdish
kykyKyrgyz
loloLao
lalaLatin
lvlvLatvian
liliLimburgish
lnlnLingala
ltltLithuanian
luluLuba-Katanga
lblbLuxembourgish
mkmkMacedonian
mgmgMalagasy
msmsMalay
mlmlMalayalam
mtmtMaltese
gvgvManx
mimiMaori
mrmrMarathi
mhmhMarshallese
mnmnMongolian
nanaNauru
nvnvNavajo
ngngNdonga
neneNepali
ndndNorth Ndebele
seseNorthern Sami
nonoNorwegian
nbnbNorwegian Bokmål
nnnnNorwegian Nynorsk
ococOccitan
ororOdia
ojojOjibwe
omomOromo
ososOssetic
pipiPali
pspsPashto
fafaPersian
plplPolish
ptptPortuguese
pt-BRpt-BRPortuguese (Brazil)
papaPunjabi
ququQuechua
roroRomanian
rmrmRomansh
ruruRussian
smsmSamoan
sgsgSango
sasaSanskrit
scscSardinian
gdgdScottish Gaelic
srsrSerbian
sr-Latnsr-LatnSerbian (Latin)
snsnShona
iiiiSichuan Yi
sdsdSindhi
sisiSinhala
skskSlovak
slslSlovenian
sosoSomali
nrnrSouth Ndebele
ststSouthern Sotho
esesSpanish
es-419es-419Spanish (Latin America)
es-MXes-MXSpanish (Mexico)
susuSundanese
swswSwahili
ssssSwati
svsvSwedish
tltlTagalog
tytyTahitian
tgtgTajik
tataTamil
ttttTatar
teteTelugu
ththThai
boboTibetan
titiTigrinya
totoTongan
tstsTsonga
tntnTswana
trtrTurkish
tktkTurkmen
twtwTwi
ukukUkrainian
ururUrdu
ugugUyghur
uzuzUzbek
veveVenda
viviVietnamese
vovoVolapük
wawaWalloon
cycyWelsh
fyfyWestern Frisian
wowoWolof
xhxhXhosa
yiyiYiddish
yoyoYoruba
zazaZhuang
zuzuZulu
Richiesta di esempio
# pip install requests
import base64, pathlib, requests

API_KEY  = "YOUR_API_KEY"
BASE_URL = "https://www.anirena.com"

# Step 1: exchange API key for a short-lived bearer token
auth = requests.post(
    f"{BASE_URL}/api/v1/auth/token",
    headers={"Authorization": f"ApiKey {API_KEY}"},
)
auth.raise_for_status()
token = auth.json()["token"]

# Step 2: upload — plain JSON with the bearer token
torrent_b64 = base64.b64encode(pathlib.Path("file.torrent").read_bytes()).decode()
resp = requests.post(
    f"{BASE_URL}/api/v1/torrents",
    json={
        "torrent":      torrent_b64,
        "category":     "anime",
        "sub_category": "raw",
        "languages":    ["ja"],
        "description":  "# My Release\n\nRelease notes here.",
        "is_private":   False,
    },
    headers={"Authorization": f"Bearer {token}"},
)
resp.raise_for_status()
data  = resp.json()
token = resp.headers.get("X-New-Token", token)  # save for next request
print(data["id"], data["name"])  # torrent UUID and title
Risposta di successo — 200 OK
{
  "ok":           true,
  "id":           "550e8400-e29b-41d4-a716-446655440000",
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Risposte di errore
Stato HTTPSignificato
400Corpo della richiesta non valido o campo obbligatorio mancante.
401Bearer token mancante, scaduto o già ruotato. Ri-autenticati tramite POST /api/v1/auth/token.
403Account bannato, disabilitato o IP bloccato.
409Torrent duplicato — stesso info hash già esistente.
422File torrent non analizzabile o validazione fallita.
429Limite di frequenza superato. Riprova dopo il reset della finestra.
503Il sito è in modalità manutenzione o sola lettura.

Limitazione della frequenza

Gli upload API sono soggetti a un limite di frequenza configurabile separato dall'interfaccia web. Il limite è per chiave API.

Mantieni privata la tua chiave API. Garantisce accesso completo all'upload sotto il tuo account. Revocala e rigenerala immediatamente se sospetti che sia stata compromessa.

Generare file torrent con torrent-builder

torrent-builder è uno strumento CLI open source costruito su libtorrent-rasterbar che consente di creare file .torrent BitTorrent v1, v2 e hybrid dalla riga di comando. Si abbina perfettamente con l'AniRena upload API — genera il file in locale, poi fai un POST direttamente al tracker. cantalupo555/torrent-builder.

Compilare dal sorgente

Richiede CMake >= 3.28.3 e libtorrent-rasterbar >= 2.0.11. Clona il repository e compila con CMake:

# Install system dependencies
sudo apt-get install build-essential cmake libtorrent-rasterbar-dev

# Clone & build
git clone https://github.com/cantalupo555/torrent-builder.git
cd torrent-builder
mkdir build && cd build
cmake .. && cmake --build .
Flag principali
CampoDescrizione
--pathPercorso al file o alla directory da pacchettizzare (obbligatorio).
--outputNome del file .torrent di output (obbligatorio).
--versionFormato BitTorrent — 1 = v1, 2 = v2, 3 = hybrid (predefinito: 3).
--trackerAggiunge un URL di announce del tracker. Ripeti il flag per aggiungere più tracker.
--commentIncorpora una stringa di commento nei metadati del torrent.
--privateImposta il flag privato per limitare la distribuzione ai soli tracker elencati.
--piece-sizeDimensione del pezzo in KB (16-32768). Lascia non impostato per la selezione automatica.
-iAvvia la modalità di configurazione interattiva passo dopo passo.
Flusso di lavoro end-to-end: build -> upload

Gli esempi seguenti creano un torrent hybrid con torrent-builder, poi si autenticano con l'AniRena API e caricano il risultato in un unico script.

# pip install requests
import base64, subprocess, requests

API_KEY  = "YOUR_API_KEY"
BASE_URL = "https://www.anirena.com"

# Step 1: build the torrent with torrent-builder
# --version 1=v1  2=v2  3=hybrid (default)
subprocess.run([
    "./torrent-builder/build/torrent_builder",
    "--path",    "/data/my_release",
    "--output",  "my_release.torrent",
    "--version", "3",                      # hybrid
    "--tracker", "udp://open.tracker.gg:6969/announce",
    "--comment", "My Release",
    "--creator", "--creation-date",
], check=True)

# Step 2: authenticate
token = requests.post(
    f"{BASE_URL}/api/v1/auth/token",
    headers={"Authorization": f"ApiKey {API_KEY}"},
).json()["token"]

# Step 3: upload
torrent_b64 = base64.b64encode(open("my_release.torrent", "rb").read()).decode()
resp = requests.post(
    f"{BASE_URL}/api/v1/torrents",
    json={
        "torrent":          torrent_b64,
        "category":         "anime",
        "sub_category":     "raw",
        "languages":        ["ja"],
        "comments_enabled": True,
    },
    headers={"Authorization": f"Bearer {token}"},
)
resp.raise_for_status()
data = resp.json()
print(data["id"], data["name"])

Cercare metadati torrent

POST/api/v1/torrents/search

Invia una semplice richiesta POST JSON per recuperare elenchi di torrent con le stesse opzioni di ricerca e filtro disponibili sul sito web. Il file .torrent stesso non viene restituito — usa la normale route di download per quello.

# pip install requests  (token already obtained — see upload example)
resp = requests.post(
    f"{BASE_URL}/api/v1/torrents/search",
    json={"q": "Sword Art Online", "category": "anime", "per_page": 25},
    headers={"Authorization": f"Bearer {token}"},
)
resp.raise_for_status()
data  = resp.json()
token = resp.headers.get("X-New-Token", token)  # save for next request
for t in data["torrents"]:
    print(t["title"], "-", t["magnet"])
Parametri di ricerca
CampoTipoObbligatorioDescrizione
qstringNoRicerca testo libero. Supporta i prefissi group:slug, group:"Name", user:name.
categorystringNoSlug categoria (es. "anime").
sub_categorystringNoSlug sottocategoria (es. "raw").
languagesstring[]NoArray di codici lingua BCP 47 (es. en, ja).
sortstringNoCampo di ordinamento: date (predefinito), size, seeders, leechers, completed, title.
orderstringNoDirezione di ordinamento: desc (predefinito) o asc.
pageintegerNoNumero pagina, a partire da 1 (predefinito 1).
per_pageintegerNoRisultati per pagina, 1–250 (predefinito 50).
hide_adultbooleanNoEsclude i torrent di categoria adulti. Predefinito true per gli utenti normali.
show_deadbooleanNoQuando è false (predefinito), i torrent più vecchi del periodo di tolleranza per i torrent morti e senza seeder attivi vengono esclusi. Imposta su true per includerli.
Risposta
{
  "total":       1234,
  "page":        1,
  "per_page":    50,
  "total_pages": 25,
  "from":        1,
  "to":          50,
  "torrents": [
    {
      "id":            "550e8400-e29b-41d4-a716-446655440000",
      "title":         "My Release Title",
      "info_hash_v1":  "aabbccddeeff...",
      "info_hash_v2":  null,
      "size_fmt":      "1.4 GB",
      "completed":     42,
      "seeders":       10,
      "leechers":      3,
      "languages":     ["ja", "en"],
      "comment_count": 7,
      "created_at":    "2024-01-15 12:34",
      "cat_slug":      "anime",
      "sub_slug":      "raw",
      "group_name":    null,
      "uploader":      "username",
      "magnet":        "magnet:?xt=urn:btih:..."
    }
  ]
}

comment_count — Numero di commenti non eliminati su questo torrent.

Limitazione della frequenza ricerca

Le richieste di ricerca sono soggette a un limite di frequenza configurabile separato (predefinito 60 richieste per 60 secondi per chiave API). Gli account staff sono esenti.

Ottieni dettagli del torrent

GET/api/v1/torrent/{id}

Recupera i metadati completi di un singolo torrent — inclusi i campi che l'endpoint di ricerca omette, come la descrizione in Markdown, il commento .torrent incorporato, l'elenco dei file con la dimensione di ciascuno e il layout completo dei tier dei tracker. Quando disponibili, i conteggi live di seeders e leechers vengono letti dal tracker.

Risposta
{
  "id":                "550e8400-e29b-41d4-a716-446655440000",
  "title":             "My Release Title",
  "info_hash_v1":      "aabbccddeeff...",
  "info_hash_v2":      null,
  "size_fmt":          "1.4 GB",
  "completed":         42,
  "seeders":           10,
  "leechers":          3,
  "ext_seeders":       128,
  "ext_leechers":      14,
  "created_at":        "2024-01-15 12:34",
  "torrent_created":   "2024-01-15 12:30",
  "created_by_client": "mktorrent 1.1",
  "cat_name":          "Anime",
  "cat_slug":          "anime",
  "sub_name":          "Raw",
  "sub_slug":          "raw",
  "group_name":        null,
  "group_slug":        null,
  "uploader":          "username",
  "uploader_id":       "...",
  "description":       "# My Release\n\nRelease notes here.",
  "comment":           "",
  "is_private":        false,
  "magnet":            "magnet:?xt=urn:btih:...",
  "languages": [
    { "code": "ja", "name": "Japanese", "country_code": "jp" }
  ],
  "tracker_tiers": [
    { "tier": 0, "urls": ["udp://tracker.example.org:6969/announce"] }
  ],
  "files": [
    { "path": "My Release/episode-01.mkv", "size": 1503238553 }
  ],
  "comments_enabled":  true,
  "comments_locked":   false,
  "comment_count":     7
}

seeders, leechers — Conteggi live dal tracker interno; entrambi riportano 0 quando l'archivio del tracker non ha una voce per questo info hash o non è raggiungibile.

ext_seeders, ext_leechers — Numero massimo di seeder e leecher segnalato da un singolo tracker esterno scrapato per questo torrent. I tracker che seguono lo stesso swarm si sovrappongono, quindi si usa il massimo invece della somma; entrambi riportano 0 quando nessun tracker dispone di dati di scrape per questo info hash.

Risposte di errore
Stato HTTPSignificato
400L'id del torrent deve essere un UUID di 36 caratteri con trattini o una stringa esadecimale di 32 caratteri.
401Bearer token mancante, scaduto o già ruotato. Ri-autenticati tramite POST /api/v1/auth/token.
404Torrent non trovato.
429Limite di frequenza superato. Riprova dopo il reset della finestra.
503Il sito è in modalità manutenzione o sola lettura.

Recuperare i commenti del torrent

GET/api/v1/torrents/{id}/comments

Recupera i commenti paginati per un torrent. Il numero di commenti per pagina è controllato dall'impostazione COMMENT_PER_PAGE nel file .env del server (predefinito 20). Solo i torrent con i commenti abilitati restituiranno risultati — tutti gli altri restituiscono 403.

Parametri di query
CampoTipoObbligatorioDescrizione
pageintegerNoNumero di pagina, a partire da 1 (predefinito 1).
# pip install requests  (token already obtained — see upload example)
TORRENT_ID = "550e8400-e29b-41d4-a716-446655440000"
resp = requests.get(
    f"{BASE_URL}/api/v1/torrents/{TORRENT_ID}/comments",
    params={"page": 1},
    headers={"Authorization": f"Bearer {token}"},
)
resp.raise_for_status()
data  = resp.json()
token = resp.headers.get("X-New-Token", token)  # save for next request
for c in data["comments"]:
    print(c["username"], "-", c["body"])
Risposta
{
  "torrent_id":  "550e8400-e29b-41d4-a716-446655440000",
  "page":        1,
  "per_page":    20,
  "total":       45,
  "total_pages": 3,
  "comments": [
    {
      "id":                 "...",
      "user_id":            "...",
      "username":           "uploader",
      "role":               "user",
      "author_banned":      false,
      "body":               "Great release!",
      "created_at":         "2024-01-15 12:34:00",
      "edited_at":          null,
      "edited_by_username": null,
      "deleted_at":         null
    }
  ]
}

Il campo body è una stringa vuota quando l'autore del commento è bannato o il commento è stato eliminato. Il flag author_banned indica quale caso si applica.

Risposte di errore
Stato HTTPSignificato
401Bearer token mancante, scaduto o già ruotato. Ri-autenticati tramite POST /api/v1/auth/token.
403I commenti sono disabilitati per questo torrent.
404Torrent non trovato.
503Il sito è in modalità manutenzione o sola lettura.

Cercare voci anime

GET/api/v1/anime/search?q=<query>

Cerca entry anime per titolo per ottenere il loro UUID. L'UUID può essere passato come anime_id nel corpo dell'upload per collegare un torrent a un'entry anime al momento del caricamento, oppure usato con PUT /api/torrents/{id}/anime dopo il caricamento. Non è richiesta autenticazione. Soggetto allo stesso limite di frequenza della ricerca torrent (predefinito 60 richieste per 60 secondi per IP).

# pip install requests  (no authentication required)
resp = requests.get(
    f"{BASE_URL}/api/v1/anime/search",
    params={"q": "Sword Art Online", "page": 1, "per_page": 10},
)
resp.raise_for_status()
for item in resp.json()["results"]:
    print(item["id"], "-", item["title"])
Parametri di query
CampoTipoObbligatorioDescrizione
qstringStringa di ricerca titolo (obbligatoria). Corrisposta a titolo e sinonimi.
pageintegerNoNumero pagina, a partire da 1 (predefinito 1).
per_pageintegerNoRisultati per pagina, 1–50 (predefinito 10).
Risposta
{
  "total":       42,
  "page":        1,
  "per_page":    10,
  "total_pages": 5,
  "results": [
    {
      "id":           "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "title":        "Sword Art Online",
      "anime_type":   "TV",
      "episodes":     25,
      "status":       "FINISHED",
      "season":       "FALL",
      "season_year":  2012,
      "picture":      "https://cdn.myanimelist.net/images/anime/...",
      "thumbnail":    "https://cdn.myanimelist.net/images/anime/...",
      "duration_secs": 1440
    }
  ]
}

Elenco e recupero dei gruppi

GET/api/v1/groups

Restituisce un elenco paginato di gruppi pubblici (abilitati e non bloccati). Richiede autenticazione Bearer token.

GET/api/v1/groups/{id_or_slug}

Restituisce un singolo gruppo pubblico tramite ID numerico o slug. Restituisce 404 se il gruppo è disabilitato o bloccato.

Parametri di query (solo elenco)
CampoTipoObbligatorioDescrizione
qstringNoFiltra per nome gruppo (facoltativo, corrispondenza parziale).
pageintegerNoNumero di pagina (predefinito 1).
per_pageintegerNoRisultati per pagina, 1–100 (predefinito 20).
sortstringNoColonna di ordinamento: name | slug | members | torrents | created (predefinito name).
orderstringNoDirezione di ordinamento: asc o desc (predefinito asc).
Risposta (elenco)
{
  "total":       12,
  "page":        1,
  "per_page":    20,
  "total_pages": 1,
  "groups": [
    {
      "id":             1,
      "name":           "SubsPlease",
      "slug":           "subsplease",
      "subdomain_slug": "subsplease",
      "description":    "Weekly simulcast batches.",
      "owner":          "admin",
      "member_count":   42,
      "torrent_count":  1337,
      "created_at":     "2024-01-15 12:34"
    }
  ]
}
Risposta (singolo)
{
  "id":             1,
  "name":           "SubsPlease",
  "slug":           "subsplease",
  "subdomain_slug": "subsplease",
  "description":    "Weekly simulcast batches.",
  "owner":          "admin",
  "member_count":   42,
  "torrent_count":  1337,
  "created_at":     "2024-01-15 12:34"
}
Risposte di errore
Stato HTTPSignificato
401Bearer token mancante, scaduto o già ruotato. Ri-autenticati tramite POST /api/v1/auth/token.
404Gruppo non trovato o non accessibile pubblicamente.
429Limite di frequenza superato. Riprova dopo il reset della finestra.
503Il sito è in modalità manutenzione o sola lettura.

8. Donazioni

Se desideri supportare AniRena e contribuire a coprire i costi di hosting dei nostri server e servizi, puoi inviare una donazione a uno dei seguenti portafogli di criptovalute:

Bitcoinbc1qy2h3ddq6ak5damvnf4r5vu3ydehhxrcq8gllwn
Ethereum0xCbaFe03832F95F86AF2536d52710e78C63b62Cd3
Solana3ucetj2XDGHQg9PVRPMxerNi7c6kX7GJkjQNg9yjwGeg
LitecoinLbpt61yX3RjGtB1Ef8vgVz6Hr6baQsTjVk

Qualsiasi donazione, grande o piccola, è molto apprezzata e va direttamente al mantenimento di AniRena. Grazie per il tuo supporto!

9. Software

AniRena Player è un'app desktop gratuita che consente di trasmettere video direttamente dai torrent indicizzati su questo sito — senza dover attendere il completamento dell'intero download. Basta incollare un link magnet o aprire un file .torrent, e la riproduzione inizia non appena sono disponibili dati sufficienti.

Entrambe le versioni sono completamente autonome — tutte le dipendenze sono incluse all'interno dell'eseguibile. Nessun installer, nessun ambiente di runtime — basta scaricare ed eseguire.

Windows auto-aggiornamento
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_x64-setup.exe · 43.9 MB (64 download)
  • v0.3.0 AniRena-Player_0.3.0_x64-setup.exe · 43.7 MB (8 download)
  • v0.2.9 AniRena-Player_0.2.9_x64-setup.exe · 43.5 MB (6 download)
  • v0.2.8 AniRena-Player_0.2.8_x64-setup.exe · 43.5 MB (17 download)
  • v0.2.7 AniRena-Player_0.2.7_x64-setup.exe · 43.5 MB (20 download)
  • v0.2.6 AniRena-Player_0.2.6_x64-setup.exe · 43.4 MB (3 download)
  • v0.2.5 AniRena-Player_0.2.5_x64-setup.exe · 43.4 MB (8 download)

Programma di installazione (.exe). Si aggiorna da solo nell'app.

macOS · Apple Silicon auto-aggiornamento

Immagine disco (.dmg) per Mac con Apple Silicon (M1 e successivi). Si aggiorna da solo nell'app.

macOS · Intel auto-aggiornamento

Immagine disco (.dmg) per Mac con Intel. Si aggiorna da solo nell'app.

Linux · AppImage auto-aggiornamento
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_amd64.AppImage · 138.1 MB (20 download)
  • v0.3.0 AniRena-Player_0.3.0_amd64.AppImage · 138.0 MB (4 download)
  • v0.2.9 AniRena-Player_0.2.9_amd64.AppImage · 137.7 MB (35 download)
  • v0.2.8 AniRena-Player_0.2.8_amd64.AppImage · 137.6 MB (23 download)
  • v0.2.7 AniRena-Player_0.2.7_amd64.AppImage · 137.6 MB (20 download)
  • v0.2.5 AniRena-Player_0.2.5_amd64.AppImage · 137.6 MB (18 download)

File singolo portatile, nessuna installazione necessaria. L'unico formato Linux con aggiornamento automatico nell'app.

Debian / Ubuntu
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_amd64.deb · 62.5 MB (4 download)
  • v0.3.0 AniRena-Player_0.3.0_amd64.deb · 62.4 MB (3 download)
  • v0.2.9 AniRena-Player_0.2.9_amd64.deb · 62.1 MB (4 download)
  • v0.2.8 AniRena-Player_0.2.8_amd64.deb · 62.0 MB (27 download)
  • v0.2.7 AniRena-Player_0.2.7_amd64.deb · 62.0 MB (13 download)
  • v0.2.5 AniRena-Player_0.2.5_amd64.deb · 62.0 MB (11 download)

Installazione: sudo apt install ./<file>.deb — aggiornamenti tramite apt o tramite un nuovo download, non nell'app.

Fedora / RHEL
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1-1_x86_64.rpm · 62.5 MB (3 download)
  • v0.3.0 AniRena-Player_0.3.0-1_x86_64.rpm · 62.4 MB (2 download)
  • v0.2.9 AniRena-Player_0.2.9-1_x86_64.rpm · 62.1 MB (23 download)
  • v0.2.8 AniRena-Player_0.2.8-1_x86_64.rpm · 62.0 MB (5 download)
  • v0.2.7 AniRena-Player_0.2.7-1_x86_64.rpm · 62.0 MB (8 download)
  • v0.2.5 AniRena-Player_0.2.5-1_x86_64.rpm · 62.0 MB (7 download)

Installazione: sudo dnf install ./<file>.rpm — aggiornamenti tramite dnf o tramite un nuovo download, non nell'app.

Android · arm64
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_arm64.apk · 110.3 MB (62 download)
  • v0.3.0 AniRena-Player_0.3.0_arm64.apk · 110.1 MB (8 download)
  • v0.2.9 AniRena-Player_0.2.9_arm64.apk · 109.1 MB (12 download)
  • v0.2.8 AniRena-Player_0.2.8_arm64.apk · 109.1 MB (22 download)
  • v0.2.7 AniRena-Player_0.2.7_arm64.apk · 109.0 MB (17 download)

Sideload su dispositivi Android ARM a 64 bit (la maggior parte di telefoni / tablet moderni). Aggiornamenti scaricando un nuovo APK.

Android · arm7
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_arm7.apk · 97.8 MB (15 download)

Sideload su dispositivi Android ARM a 32 bit (telefoni / tablet meno recenti). Si aggiorna scaricando un nuovo APK.

Android · x86_64
Versioni precedenti
  • v0.3.1 AniRena-Player_0.3.1_x86_64.apk · 114.3 MB (12 download)
  • v0.3.0 AniRena-Player_0.3.0_x86_64.apk · 114.1 MB (4 download)
  • v0.2.9 AniRena-Player_0.2.9_x86_64.apk · 113.1 MB (4 download)
  • v0.2.8 AniRena-Player_0.2.8_x86_64.apk · 113.0 MB (9 download)
  • v0.2.7 AniRena-Player_0.2.7_x86_64.apk · 113.0 MB (11 download)

Sideload su dispositivi Android x86 a 64 bit o emulatori. Aggiornamenti scaricando un nuovo APK.