1. Aloittaminen

AniRena on torrent-hakemisto, joka keskittyy animeen, mangaan, ääneen ja aiheeseen liittyvään mediaan. Voit selata ja ladata torrentteja ilman tiliä. Tili vaaditaan torrenttien lataamiseen palveluun, ryhmiin kirjoittamiseen tai API:n käyttämiseen.

Yläosan navigointipalkki tarjoaa pääsyn sivuston pääalueille:

  • Etusivu — torrentien listaus- ja hakusivu.
  • Lataa — lähetä uusi torrent (vaatii kirjautumisen).
  • Opas — tämä sivu.
  • Tilastot — koko sivuston tilastot (torrentit, vertaisverkko, lataukset ajan mittaan).
  • Ryhmät — julkaisuryhmien hakemisto.
  • RSS — RSS-syöte viimeisimmistä latauksista, suodatettavissa kategorian mukaan.

Tilivaikkosi (oikeassa yläkulmassa kirjautuneena) avaa profiilipaneelin, jossa voit säätää asetuksia, hallita turvallisuusvaihtoehtoja ja käyttää API-avaintasi.

2. Selaaminen ja hakeminen

Etusivu listaa kaikki torrentit latauksen päivämäärän mukaan järjestettynä. Käytä yläosan hakupalkkia suodattaaksesi tuloksia.

Perus haku

Kirjoita mitä tahansa sanoja hakupalkkiin ja paina Enter (tai napsauta hakukuvaketta). Tulokset järjestetään relevanssin mukaan, kun haku on aktiivinen.

Hakuoperaattorit

Seuraavia operaattoreita voidaan yhdistää tavalliseen hakuun:

OperaattoriEsimerkkiVaikutus
user:"name"user:"SubsPlease"Näytä vain kyseisen käyttäjän lataamat torrentit.

Lataajan nimen napsauttaminen torrenttilistassa suorittaa automaattisesti käyttäjähaun.

Kategoriat ja alakategoriat

Käytä kategorianvalitsinta (ristikkokuvake hakupalkin vieressä) rajoittaaksesi tulokset yhteen kategoriaan. Käytettävissä olevat kategoriat ovat:

  • Anime
  • Manga/Manhwa/Sarjakuva
  • Ääni
  • Kirjallisuus
  • Live Action
  • Kuvat
  • Ohjelmisto
  • Hentai
  • Muut

Jokaisella kategorialla on alakategorioita (esim. Anime: RAW, Sub/Audio, Musiikkivideo) valittavissa kategoria-modaalissa.

Lajittelu ja suodattimet

Torrentilistan sarakeotsikot ovat napsautettavia lajitellaksesi kyseisen sarakkeen mukaan (nouseva tai laskeva). Käytettävissä olevat lajittelun sarakkeet: päivämäärä, nimi, koko, valmistuneet lataukset. Huomaa: seederit ja leecherit ovat Redisistä haettavia reaaliaikaisia arvoja, eikä niitä voi käyttää lajitteluun.

Kielisuodatin

Käytä kielenvalitsinta (lippukuvake) näyttääksesi vain tietyllä kielellä merkityt torrentit.

RSS-syöte

RSS-syöte osoitteessa /rss tarjoaa uusimmat lataukset. Lisää ?category=anime (tai mikä tahansa muu kategoriaslug) suodattaaksesi syötteen. Useimmat torrent-asiakasohjelmat tukevat RSS-automaattilatauksia suoraan tästä URL-osoitteesta.

3. Torrenttien lataaminen

Napsauta mitä tahansa torrentin nimeä avataksesi sen tietopaneelin. Sieltä voit:

  • Lataa .torrent — tallentaa .torrent-tiedoston suoraan. Suora URL on /torrents/{id}.torrent
  • Magneettilinkki — avautuu suoraan torrent-asiakkaassasi magneetti-URI-protokollan kautta. URL on /torrents/{id}/magnet

Tietopaneeli näyttää myös torrentin kuvauksen, tiedostolistan, trackerlit sekä seeder/leecher-määrät.

Vanhat latauslinkit

Vanhat AniRenan latauslinkit ovat edelleen tuettuja ja ohjaavat automaattisesti oikeaan .torrent-tiedostoon käyttäen vanhaa ID:tä: /dl/{old_id}

Suositellut BitTorrent-asiakkaat

Mikä tahansa moderni BitTorrent-asiakas toimii. Alla olevat asiakkaat ovat suositeltuja ja tukevat täysin BitTorrent v2 / hybriditorrentteja:

qBittorrent Lataussivulla klikkaa Lisää latausvaihtoehtoja ja valitse lt20 (libtorrent 2.0) -merkitty koontiversio. Oletusasennusohjelma käyttää libtorrent 1.2:ta, joka ei tue puhtaita v2-torrentteja.v2 tuettu
PicoTorrent Kevyt Windows-asiakas, jossa on alkuperäinen BitTorrent v2 -tuki heti asennuksesta.v2 tuettu
BiglyBT Monipuolinen monialustainen asiakas Azureus/Vuze-pohjalla ja täydellä v2-tuella.v2 tuettu

4. Tilin luominen

Rekisteröityminen

Napsauta Rekisteröidy navigointipalkissa. Valitse käyttäjänimi, anna sähköpostiosoite ja aseta salasana (vähimmäispituus vaaditaan). Sinun on luettava ja hyväksyttävä sivuston ehdot ennen tilin luomista.

Sähköpostin aktivointi

Rekisteröitymisen jälkeen vahvistussähköposti lähetetään osoitteeseesi. Napsauta sähköpostin linkkiä aktivoidaksesi tilisi. Jos et saanut sitä, käytä Aktivoi tilisi -linkkiä kirjautumissivulla uuden koodin pyytämiseen.

Salasanan palautus

Jos unohdat salasanasi, napsauta Unohditko salasanasi kirjautumissivulla ja anna sähköpostiosoitteesi. Palautuslinkki lähetetään sinulle. Linkki on kertakäyttöinen ja vanhenee lyhyen ajan kuluttua.

5. Torrenttien lataaminen palveluun

Siirry kohtaan Lataa navigointipalkissa. Sinun on oltava kirjautuneena aktiivisella, ei-estetyllä tilillä. Lataussivulla on kaksi välilehteä:

Lataa-välilehti — lähetä olemassa oleva .torrent-tiedosto

Vedä ja pudota tai valitse .torrent-tiedosto. Latauksen jälkeen täytä kentät:

KenttäPakollinenKuvaus
Torrent-tiedostoKylläLadattava .torrent-tiedosto.
NimiEiKorvaa torrentin näyttönimi. Jos jätetään tyhjäksi, käytetään torrent-tiedostoon upotettua nimeä.
KategoriaKylläSisältökategoria (Anime, Manga, Ääni jne.).
AlakategoriaEiTarkempi tyyppi kategorian sisällä (esim. RAW, Sub/Audio).
KieletEiYksi tai useampi kielitagi, joka kuvaa sisältökieltä.
RyhmäEiYhdistä tämä julkaisu ryhmään, jonka jäsen olet.
KuvausEiMarkdown-muotoinen kuvaus, joka näkyy torrentin tietosivulla (maks. 65535 merkkiä).
YksityinenEiAsettaa yksityislipun torrenttiin, poistaa DHT/PEX käytöstä. Hyödyllinen vain tracker -torrenteille.
Announce-URLEiKorvaa tai lisää ensisijaisen trackerin announce-URL.
LisätrackeritEiLuetaan torrent-tiedostosta. Ei voi muokata latauksen aikana — käytä Luo-välilehteä, jos haluat mukauttaa trackeriluetteloa.
KommenttiEiKorvaa tiedostoon upotettu torrentin kommenttikenttä.
AniRena-trackerivaatimus

Torrentisi täytyy sisältää vähintään yksi AniRenan tracker-URL announce-listallaan (missä tahansa tierissä). Sivusto tarkistaa tämän latauksen yhteydessä ja hylkää torrentit, joissa ei ole AniRenan trackeria. Jos loit torrentin lisäämättä AniRenan trackeria ensin, lataa se palvelimelle ja lataa se sitten uudelleen sivustolta — ladattu tiedosto sisältää oikeat trackerit automaattisesti.

Luo-välilehti — rakenna uusi torrent

Luo-välilehti antaa sinulle mahdollisuuden luoda uuden .torrent-tiedoston alusta alkaen määrittämällä tiedostopolut, tracker-URL-osoitteet ja muut torrent-parametrit suoraan selaimessa. Tuloksena oleva torrent lähetetään samoilla metadatakentillä kuin yllä.

Moderointi

Lataukset tarkistetaan automaattisesti estettyjen sisältökuvioiden (nimet, tiedostonimet, kuvaukset) listaa vasten. Kiellettyä kuviota vastaavat torrentit hylätään. Myös päällekkäiset torrentit (sama info hash) hylätään.

6. Tilisi

Napsauta käyttäjänimeäsi oikeassa yläkulmassa avataksesi profiilipaneelin. Se on järjestetty tiivistettäviin osioihin:

Asetukset

Vaihda käyttöliittymän teemaa, fonttikokoa, väripalettia, käyttöliittymän kieltä ja torrentteihin liittyviä näyttöasetuksia. Muutokset tallennetaan automaattisesti.

Salasana

Syötä nykyinen salasanasi ja uusi salasana kahdesti. Vahvistuskoodi lähetetään rekisteröityyn sähköpostiosoitteeseesi, ja se on syötettävä muutoksen vahvistamiseksi. Jos kaksivaiheinen todennus on käytössä, myös TOTP-koodisi vaaditaan.

Kaksivaiheinen todennus (2FA)

Ota käyttöön TOTP-pohjainen kaksivaiheinen todennus millä tahansa todennussovelluksella (esim. Google Authenticator, Aegis, Bitwarden). Kun otat 2FA:n käyttöön:

  1. Skannaa QR-koodi (tai syötä salaisuus manuaalisesti) todennussovelluksessasi.
  2. Syötä sovelluksesi 6-numeroinen koodi vahvistaaksesi asetuksen.
  3. Tallenna näytetyt palautuskoodit — nämä ovat kertakäyttöisiä koodeja pääsyn palauttamiseksi, jos menetät laitteesi.

Poistaaksesi 2FA:n käytöstä, syötä nykyinen TOTP-koodisi ja vahvista.

Aktiiviset istunnot

Tarkastele kaikkia tällä hetkellä aktiivisia kirjautumisistuntoja, mukaan lukien selain, käyttöjärjestelmä, IP-osoite ja viimeksi nähty aika. Napsauta Peruuta missä tahansa istunnossa, jota et tunnista. Voit myös peruuttaa kaikki istunnot kerralla kirjautuaksesi ulos kaikista laitteista.

API-avain

Luo henkilökohtainen API-avain, jota käytetään torrenttien ohjelmalliseen lataamiseen AniRena API:n kautta. Napsauta Luo avain luodaksesi sellaisen — koko avain näytetään kerran heti luomisen jälkeen. Säilytä se turvallisesti; sitä ei näytetä kokonaan enää. Käytä Peruuta-toimintoa avaimen pysyvään mitätöintiin.

Poista tili

Tilin poistamisen pyytäminen aloittaa 30 päivän odotusajan. Tilisi poistetaan käytöstä välittömästi ja poistetaan pysyvästi 30 päivän kuluttua. Voit peruuttaa poiston milloin tahansa kyseisen ajan sisällä kirjautumalla sisään ja napsauttamalla Peruuta poisto.

7. AniRena API

AniRena tarjoaa JSON API:n, jonka avulla voit ladata torrentteja ohjelmallisesti henkilökohtaisella API-avaimella. API soveltaa samoja sääntöjä kuin web-käyttöliittymä: estotarkistukset, nopeusrajoitukset ja sivuston tilarajoitukset kaikki pätevät. Jokainen API-lataus kirjataan tarkistuslokiin.

Todennus

API käyttää kaksivaiheista todennusvirtaa. Vaihda ensin pysyvä API-avaimesi lyhytikäiseksi bearer-tokeniksi, sitten välitä kyseinen token jokaisen API-pyynnön Authorization-otsikossa.

API-avaimesi on saatavilla kohdassa Tilisi > API-avain. Pidä se salassa — kuka tahansa avaimen omistava voi hankkia bearer-tokeneja ja ladata puolestasi. Jos se vaarantuu, peruuta se välittömästi ja luo uusi.

Vaihe 1 — Hanki bearer-token
POST/api/v1/auth/token

Lähetä POST-pyyntö token-endpointiin API-avaimellasi Authorization-otsikossa. Pyyntörunkoa ei tarvita.

Authorization: ApiKey <your-api-key>
Token-vastaus
{
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600
}
Tokenin elinaika

Bearer-tokenit pysyvät voimassa enintään 3600 sekuntia niiden myöntämishetkestä ja niitä voi käyttää uudelleen jokaisessa pyynnössä, kunnes ne vanhenevat. Kun token vanhenee, luo uusi POST /api/v1/auth/token -kutsulla. Jokainen vastaus toistaa edelleen nykyisen tokenin X-New-Token-otsakkeessa taaksepäin yhteensopivuuden vuoksi.

X-New-Token: <next-bearer-token>
Kirjautuminen yhdellä pyynnöllä (2FA:lla)
POST/api/v1/auth/login

Todenna käyttäjätunnuksella tai sähköpostilla ja salasanalla yhdellä pyynnöllä ja saat bearer-tunnuksen suoraan. Jos tililläsi on 2FA käytössä, sisällytä nykyinen todennussovelluksen koodi kenttään totp_code (tai palautuskoodi kenttään recovery_code). Halutessasi aseta new_api_key arvoon true luodaksesi samalla vastauksella myös aivan uuden pysyvän API-avaimen.

Pyyntörunko
{
  "login":         "username or email",
  "password":      "your-password",
  "totp_code":     "123456",   // pakollinen, jos 2FA on käytössä (6 numeroa)
  "recovery_code": "",         // vaihtoehto totp_code:lle
  "new_api_key":   false       // aseta true luodaksesi myös uuden API-avaimen
}
Token-vastaus
{
  "ok":         true,
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600,
  "api_key":    "<new-api-key>"   // läsnä vain, kun new_api_key oli true
}

Bearer-tunnus toimii täsmälleen samoin kuin ‎/api/v1/auth/token-päätepisteestä saatu. api_key-kenttä palautetaan vain, kun new_api_key on true — tallenna se heti, sillä se näytetään vain kerran ja korvaa aiemman avaimen.

Esimerkki — kirjaudu sisään ja (valinnaisesti) hae uusi API-avain
# 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"])

Vaihe 2 — Lataa torrent

POST/api/v1/torrents

Lähetä yksinkertainen JSON POST -pyyntö bearer-tokenilla Authorization-otsikossa.

Pyyntörunko
KenttäTyyppiPakollinenKuvaus
torrentstringKyllä.torrent-tiedoston sisältö Base64-koodattuna.
categorystringKylläKategoriaslug: anime, manga, audio, literature, live, pictures, software, hentai, other.
namestringEiKorvaa torrentin näyttönimi.
sub_categorystringEiAlakategoriaslug (esim. raw, sub-audio). Täytyy kuulua valittuun kategoriaan.
languagesstring[]EiTaulukko BCP 47 -kielikoodeista (esim. en, ja).
group_idstringEiUUID ryhmästä, jonka jäsen olet, yhdistääksesi tämän julkaisun.
descriptionstringEiMarkdown-muotoinen julkaisun kuvaus (maks. 65535 merkkiä).
commentstringEiKorvaa torrentin upotettu kommenttikenttä.
is_privatebooleanEiAseta true ottaaksesi käyttöön yksityislipun torrentissa.
comments_enabledbooleanEiSalli kommentit tähän torrenttiin. Oletusarvo on true (käytössä).
anime_idstringEiUUID anime-merkinnästä, joka linkitetään tähän torrentiin. Hanki UUID GET /api/v1/anime/search-pyynnöllä. Palauttaa 400, jos UUID ei vastaa mitään tunnettua merkintää.
announcestringEiKorvaa tai lisää ensisijainen announce-URL.
trackersstringEiLisätrackereiden URL-osoitteet uusilla riveillä erotettuina. Tyhjä rivi URL-osoitteiden välissä luo uuden trackerkerroksen.
testbooleanEiAseta arvoksi true kuivaharjoitusta varten: pyyntö validoidaan täysin, mutta torrenttia ei tallenneta. Käytä tätä varmistaaksesi, että pakettisi on oikein ennen todellista lähettämistä.
Kuivaharjoitus / testitila Lisää "test": true mihin tahansa latauspalvelupyyntöön tarkistaaksesi, onnistuisiko se ilman torrenttien todellista lisäämistä. Kaikki vahvistussäännöt pätevät — todennus, kategorian haku, kaksoiskappaleiden tunnistus, kielletyt mallit, seuraajapalvelimen vaatimukset — joten vastaus heijastaa täsmälleen sitä, mitä todellinen lähetys palauttaisi. Token kierrätetään silti onnistuessaan.
Kuivaharjoituksen onnistumisivastaus — 200 OK
{
  "ok":           true,
  "test":         true,
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Käytettävissä olevat kielikoodit
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
Esimerkkipyyntö
# 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
Onnistumisvastaus — 200 OK
{
  "ok":           true,
  "id":           "550e8400-e29b-41d4-a716-446655440000",
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Virhevastaukset
HTTP-tilaMerkitys
400Virheellinen pyyntörunko tai puuttuva pakollinen kenttä.
401Puuttuva, vanhentunut tai jo kierrätetty bearer-token. Todenna uudelleen POST /api/v1/auth/token kautta.
403Tili estetty, poistettu käytöstä tai IP estetty.
409Päällekkäinen torrent — sama info hash on jo olemassa.
422Torrent-tiedostoa ei voitu jäsentää tai se epäonnistui validoinnissa (estetty kuvio, virheellinen rakenne).
429Nopeusraja ylitetty. Yritä uudelleen ikkunan nollautumisen jälkeen.
503Sivusto on huolto- tai vain luku -tilassa.

Nopeusrajoitus

API-lataukset ovat erillisen, konfiguroitavan nopeusrajoituksen alaisia web-käyttöliittymästä. Rajoituksen ja ikkunan asettaa sivuston ylläpitäjä. Kun nopeusrajoitus ylitetään, API palauttaa 429 Too Many Requests. Rajoitus on per API-avain.

Pidä API-avaimesi salassa. Se myöntää täyden latausoikeuden tilillesi. Peruuta ja luo uudelleen välittömästi, jos epäilet sen paljastuneen.

Torrent-tiedostojen luominen torrent-builderilla

torrent-builder on avoimen lähdekoodin CLI-työkalu, joka on rakennettu libtorrent-rasterbar-kirjaston päälle ja jonka avulla voit luoda BitTorrent v1, v2 ja hybrid .torrent-tiedostoja komentorivillä. Se sopii täydellisesti AniRena upload API:n kanssa — luo tiedosto paikallisesti ja POST se sitten suoraan trackerille. cantalupo555/torrent-builder.

Rakentaminen lähdekoodista

Vaatii CMake >= 3.28.3 ja libtorrent-rasterbar >= 2.0.11. Kloonaa repositorio ja rakenna CMakella:

# 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 .
Tärkeimmät liput
KenttäKuvaus
--pathPolku pakattavaan tiedostoon tai hakemistoon (pakollinen).
--outputTulosteen .torrent-tiedostonimi (pakollinen).
--versionBitTorrent-muoto — 1 = v1, 2 = v2, 3 = hybrid (oletus: 3).
--trackerLisää tracker-ilmoituksen URL. Toista lippu lisätäksesi useita trackereitä.
--commentUpota metatietokommenttijono torrenttiin.
--privateAseta yksityislippu rajoittaaksesi jakelun vain luetelluille trackereille.
--piece-sizePalan koko KB:ssa (16-32768). Jätä asettamatta automaattista valintaa varten.
-iKäynnistä vaiheittainen interaktiivinen määritystila.
Täydellinen työnkulku: rakenna -> lataa

Alla olevat esimerkit rakentavat hybrid-torrentin torrent-builderilla, todentautuvat sitten AniRena API:lle ja lataavat tuloksen yhdessä skriptissä.

# 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"])

Torrentin metatietojen hakeminen

POST/api/v1/torrents/search

Lähetä yksinkertainen JSON POST -pyyntö noutaaksesi torrent-listauksia samoilla haku- ja suodatusvaihtoehdoilla kuin verkkosivustolla. .torrent-tiedostoa itsessään ei palauteta — käytä normaalia latausreittiä siihen.

# 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"])
Hakuparametrit
KenttäTyyppiPakollinenKuvaus
qstringEiVapaan tekstin haku. Tukee group:slug, group:"Nimi", user:nimi etuliitteitä.
categorystringEiKategoriaslug (esim. "anime").
sub_categorystringEiAlakategoriaslug (esim. "raw").
languagesstring[]EiTaulukko BCP 47 -kielikoodeista (esim. en, ja).
sortstringEiLajittelukenttä: date (oletus), size, seeders, leechers, completed, title.
orderstringEiLajittelusuunta: desc (oletus) tai asc.
pageintegerEiSivunumero, alkaen 1 (oletus 1).
per_pageintegerEiTuloksia per sivu, 1–250 (oletus 50).
hide_adultbooleanEiSulje pois aikuisille tarkoitetun kategorian torrentit. Oletusarvo true tavallisille käyttäjille.
show_deadbooleanEiKun false (oletus), kuolleiden torrenttien armoaikaa vanhemmat torrentit, joilla ei ole aktiivisia seedereitä, jätetään pois. Aseta true sisällyttääksesi ne.
Vastaus
{
  "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 — Poistamattomien kommenttien määrä tässä torrentissa.

Haun nopeusrajoitus

Hakupyynnöt ovat erillisen, konfiguroitavan nopeusrajoituksen alaisia (oletus 60 pyyntöä per 60 sekuntia per API-avain). Rajoituksen ylittäminen palauttaa 429 Too Many Requests. Henkilökunnan tilit on vapautettu.

Hae torrent-tiedot

GET/api/v1/torrent/{id}

Hakee yhden torrentin täydelliset metatiedot — mukaan lukien kentät, jotka haku-endpointti jättää pois, kuten Markdown-kuvauksen, upotetun .torrent-kommentin, tiedostoluettelon kunkin tiedoston koolla ja tracker-tasojen täydellisen rakenteen. Saatavilla olevat reaaliaikaiset seederi- ja leecheri-määrät luetaan trackerista.

Vastaus
{
  "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 — Reaaliaikaiset luvut sisäisestä trackerista; molemmat raportoidaan arvoksi 0, kun tracker-säilössä ei ole merkintää tälle info-tiivisteelle tai säilö ei ole tavoitettavissa.

ext_seeders, ext_leechers — Suurin yksittäisen ulkoisen trackerin tälle torrentille raportoima seederi- ja leecheri-määrä. Samaa parveakuvaavien trackerien tiedot menevät päällekkäin, joten käytetään maksimia summan sijaan; molemmat raportoivat 0, kun millään trackerilla ei ole scrape-tietoja tälle info-tiivisteelle.

Virhevastaukset
HTTP-tilaMerkitys
400Torrent-tunnuksen on oltava joko 36-merkkinen yhdysmerkkejä sisältävä UUID tai 32-merkkinen pelkkä heksadesimaalimerkkijono.
401Puuttuva, vanhentunut tai jo kierrätetty bearer-token. Todenna uudelleen POST /api/v1/auth/token kautta.
404Torrenttia ei löytynyt.
429Nopeusraja ylitetty. Yritä uudelleen ikkunan nollautumisen jälkeen.
503Sivusto on huolto- tai vain luku -tilassa.

Torrentin kommenttien hakeminen

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

Hae sivutetut kommentit torrentille. Kommenttien määrää per sivu hallitsee palvelimen .env-tiedoston COMMENT_PER_PAGE-asetus (oletus 20). Vain torrentit, joissa kommentit on otettu käyttöön, palauttavat tuloksia — kaikki muut palauttavat 403.

Kyselyparametrit
KenttäTyyppiPakollinenKuvaus
pageintegerEiSivunumero, alkaen 1 (oletus 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"])
Vastaus
{
  "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
    }
  ]
}

Kenttä body on tyhjä merkkijono, kun kommentin tekijä on estetty tai kommentti on poistettu. Lippu author_banned osoittaa, kumpi tapaus koskee.

Virhevastaukset
HTTP-tilaMerkitys
401Puuttuva, vanhentunut tai jo kierrätetty bearer-token. Todenna uudelleen POST /api/v1/auth/token kautta.
403Kommentit on poistettu käytöstä tässä torrentissa.
404Torrenttia ei löydy.
503Sivusto on huolto- tai vain luku -tilassa.

Anime-merkintöjen haku

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

Etsi anime-merkintöjä otsikon perusteella niiden UUID:n saamiseksi. UUID voidaan välittää anime_id-kenttänä latauksen rungossa, jotta torrent linkitetään anime-merkintään lataushetkellä, tai käyttää PUT /api/torrents/{id}/anime-pyynnön kanssa latauksen jälkeen. Todennusta ei tarvita. Samaan nopeusrajoitukseen kuin torrent-haku (oletus 60 pyyntöä per 60 sekuntia 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"])
Kyselyparametrit
KenttäTyyppiPakollinenKuvaus
qstringKylläNimihakumerkkijono (pakollinen). Täsmätään otsikkoon ja synonyymeihin.
pageintegerEiSivunumero, alkaen 1 (oletus 1).
per_pageintegerEiTuloksia per sivu, 1–50 (oletus 10).
Vastaus
{
  "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
    }
  ]
}

Ryhmien listaus ja hakeminen

GET/api/v1/groups

Palauttaa sivutetun listan julkisista ryhmistä (käytössä olevat ja lukitsemattomat). Vaatii Bearer-token-todennuksen.

GET/api/v1/groups/{id_or_slug}

Palauttaa yksittäisen julkisen ryhmän numeerisen ID:n tai slugin perusteella. Palauttaa 404, jos ryhmä on poistettu käytöstä tai lukittu.

Kyselyparametrit (vain lista)
KenttäTyyppiPakollinenKuvaus
qstringEiSuodata ryhmänimen mukaan (valinnainen, osamerkkijono).
pageintegerEiSivunumero (oletus 1).
per_pageintegerEiTuloksia per sivu, 1–100 (oletus 20).
sortstringEiLajittelusarake: name | slug | members | torrents | created (oletus name).
orderstringEiLajittelusuunta: asc tai desc (oletus asc).
Vastaus (lista)
{
  "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"
    }
  ]
}
Vastaus (yksittäinen)
{
  "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"
}
Virhevastaukset
HTTP-tilaMerkitys
401Puuttuva, vanhentunut tai jo kierrätetty bearer-token. Todenna uudelleen POST /api/v1/auth/token kautta.
404Ryhmää ei löydy tai se ei ole julkisesti saatavilla.
429Nopeusraja ylitetty. Yritä uudelleen ikkunan nollautumisen jälkeen.
503Sivusto on huolto- tai vain luku -tilassa.

8. Lahjoitukset

Jos haluat tukea AniRenaa ja auttaa kattamaan palvelintensa ja palveluidensa hosting-kulut, voit lähettää lahjoituksen johonkin seuraavista kryptovaluuttalompakoista:

Bitcoinbc1qy2h3ddq6ak5damvnf4r5vu3ydehhxrcq8gllwn
Ethereum0xCbaFe03832F95F86AF2536d52710e78C63b62Cd3
Solana3ucetj2XDGHQg9PVRPMxerNi7c6kX7GJkjQNg9yjwGeg
LitecoinLbpt61yX3RjGtB1Ef8vgVz6Hr6baQsTjVk

Jokainen lahjoitus, suuri tai pieni, on suuresti arvostettua ja menee suoraan AniRenan ylläpitoon. Kiitos tuestasi!

9. Ohjelmisto

AniRena Player on ilmainen työpöytäsovellus, jolla voit suoratoistaa videoita suoraan tämän sivuston indeksoimista torrenteista — eikä koko latauksen valmistumista tarvitse odottaa. Liitä vain magnet-linkki tai avaa .torrent-tiedosto, ja toisto alkaa heti, kun riittävästi dataa on saatavilla.

Molemmat versiot ovat täysin itsenäisiä — kaikki riippuvuudet on paketoitu suoritettavan tiedoston sisään. Ei asennusohjelmaa eikä ajoympäristöä, lataa vain ja suorita.

Windows auto-päivitys
Vanhemmat versiot
  • v0.3.1 AniRena-Player_0.3.1_x64-setup.exe · 43.9 MB (64 latausta)
  • v0.3.0 AniRena-Player_0.3.0_x64-setup.exe · 43.7 MB (8 latausta)
  • v0.2.9 AniRena-Player_0.2.9_x64-setup.exe · 43.5 MB (6 latausta)
  • v0.2.8 AniRena-Player_0.2.8_x64-setup.exe · 43.5 MB (17 latausta)
  • v0.2.7 AniRena-Player_0.2.7_x64-setup.exe · 43.5 MB (19 latausta)
  • v0.2.6 AniRena-Player_0.2.6_x64-setup.exe · 43.4 MB (3 latausta)
  • v0.2.5 AniRena-Player_0.2.5_x64-setup.exe · 43.4 MB (8 latausta)

Asennusohjelma (.exe). Päivittyy itsestään sovelluksessa.

macOS · Apple Silicon auto-päivitys

Levykuva (.dmg) Apple Silicon -Maceille (M1 ja uudemmat). Päivittyy itsestään sovelluksessa.

macOS · Intel auto-päivitys

Levykuva (.dmg) Intel-Maceille. Päivittyy itsestään sovelluksessa.

Linux · AppImage auto-päivitys
Vanhemmat versiot
  • v0.3.1 AniRena-Player_0.3.1_amd64.AppImage · 138.1 MB (19 latausta)
  • v0.3.0 AniRena-Player_0.3.0_amd64.AppImage · 138.0 MB (4 latausta)
  • v0.2.9 AniRena-Player_0.2.9_amd64.AppImage · 137.7 MB (35 latausta)
  • v0.2.8 AniRena-Player_0.2.8_amd64.AppImage · 137.6 MB (23 latausta)
  • v0.2.7 AniRena-Player_0.2.7_amd64.AppImage · 137.6 MB (20 latausta)
  • v0.2.5 AniRena-Player_0.2.5_amd64.AppImage · 137.6 MB (18 latausta)

Kannettava yksittäistiedosto, ei asennusta tarvita. Ainoa Linux-muoto, joka tukee päivitystä sovelluksen sisällä.

Debian / Ubuntu
Vanhemmat versiot
  • v0.3.1 AniRena-Player_0.3.1_amd64.deb · 62.5 MB (4 latausta)
  • v0.3.0 AniRena-Player_0.3.0_amd64.deb · 62.4 MB (3 latausta)
  • v0.2.9 AniRena-Player_0.2.9_amd64.deb · 62.1 MB (4 latausta)
  • v0.2.8 AniRena-Player_0.2.8_amd64.deb · 62.0 MB (26 latausta)
  • v0.2.7 AniRena-Player_0.2.7_amd64.deb · 62.0 MB (12 latausta)
  • v0.2.5 AniRena-Player_0.2.5_amd64.deb · 62.0 MB (11 latausta)

Asennus: sudo apt install ./<file>.deb — päivittyy aptin kautta tai lataamalla uudelleen, ei sovelluksen sisällä.

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

Asennus: sudo dnf install ./<file>.rpm — päivittyy dnf:n kautta tai lataamalla uudelleen, ei sovelluksen sisällä.

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

Sivulataa 64-bittisille ARM Android-laitteille (useimmat nykyaikaiset puhelimet / tabletit). Päivittyy lataamalla uusi APK.

Android · arm7
Vanhemmat versiot
  • v0.3.1 AniRena-Player_0.3.1_arm7.apk · 97.8 MB (15 latausta)

Asenna sivulatauksella 32-bittisiin ARM Android -laitteisiin (vanhemmat puhelimet / tabletit). Päivittyy lataamalla uusi APK.

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

Sivulataa 64-bittisille x86 Android-laitteille tai emulaattoreille. Päivittyy lataamalla uusi APK.