1. Bermula

AniRena ialah indeks torrent yang memfokuskan pada anime, manga, audio dan media berkaitan. Anda boleh melayari dan memuat turun torrent tanpa akaun. Akaun diperlukan untuk memuat naik torrent, menyiarkan ke kumpulan atau menggunakan API.

Bar navigasi di bahagian atas menyediakan akses ke kawasan utama laman web:

  • Laman Utama — halaman penyenaraian dan carian torrent.
  • Muat Naik — hantar torrent baharu (memerlukan log masuk).
  • Panduan — halaman ini.
  • Statistik — statistik seluruh laman web (torrent, rakan sebaya, muat naik dari masa ke masa).
  • Kumpulan — direktori kumpulan keluaran.
  • RSS — suapan RSS muat naik terkini, boleh ditapis mengikut kategori.

Menu akaun anda (sudut kanan atas apabila log masuk) membuka panel profil di mana anda boleh melaraskan tetapan, mengurus pilihan keselamatan dan mengakses kunci API anda.

2. Melayari & Mencari

Halaman utama menyenaraikan semua torrent mengikut tarikh muat naik. Gunakan bar carian di bahagian atas untuk menapis keputusan.

Carian asas

Taip sebarang perkataan ke dalam bar carian dan tekan Enter (atau klik ikon carian). Keputusan disusun mengikut kesesuaian apabila pertanyaan aktif.

Operator carian

Operator berikut boleh digabungkan dengan pertanyaan biasa:

PengendaliContohKesan
user:"name"user:"SubsPlease"Tunjukkan hanya torrent yang dimuat naik oleh pengguna tersebut.

Mengklik nama pemuat naik dalam senarai torrent secara automatik menjalankan carian pengguna untuk anda.

Kategori & sub-kategori

Gunakan pemilih kategori (ikon grid di sebelah bar carian) untuk mengehadkan keputusan kepada satu kategori. Kategori yang tersedia ialah:

  • Anime
  • Manga/Manhwa/Komik
  • Audio
  • Sastera
  • Aksi Langsung
  • Gambar
  • Perisian
  • Hentai
  • Lain-lain

Setiap kategori mempunyai sub-kategori (cth. Anime ke RAW, Sub/Audio, Video Muzik) yang boleh dipilih dalam modal kategori.

Penyusunan & penapis

Pengepala lajur dalam senarai torrent boleh diklik untuk menyusun mengikut lajur tersebut (menaik atau menurun). Lajur susun yang tersedia: tarikh, nama, saiz, muat turun selesai. Nota: seeder dan leecher ialah nilai masa nyata daripada Redis dan tidak boleh digunakan untuk menyusun.

Penapis bahasa

Gunakan pemilih bahasa (ikon bendera) untuk menunjukkan hanya torrent yang ditag dengan bahasa tertentu.

Suapan RSS

Suapan RSS di /rss menyediakan muat naik terkini. Tambah ?category=anime (atau slug kategori lain) untuk menapis suapan. Kebanyakan klien torrent menyokong muat turun automatik RSS terus dari URL ini.

3. Memuat Turun Torrent

Klik mana-mana nama torrent untuk membuka panel butirannya. Dari sana anda boleh:

  • Muat Turun .torrent — menyimpan fail .torrent secara langsung. URL terus ialah /torrents/{id}.torrent
  • Pautan magnet — membuka terus dalam klien torrent anda melalui protokol URI magnet. URL ialah /torrents/{id}/magnet

Panel butiran juga menunjukkan penerangan torrent, senarai fail, senarai tracker dan kiraan seeder/leecher.

Pautan muat turun lama

Pautan muat turun AniRena lama masih disokong dan mengalihkan secara automatik ke fail .torrent yang betul menggunakan ID warisan: /dl/{old_id}

Klien BitTorrent yang disyorkan

Mana-mana klien BitTorrent moden berfungsi. Klien di bawah disyorkan dan menyokong sepenuhnya BitTorrent v2 / torrent hibrid:

qBittorrent Pada halaman muat turun, klik Pilihan Muat Turun Tambahan dan pilih binaan berlabel lt20 (libtorrent 2.0). Pemasang lalai menggunakan libtorrent 1.2 yang tidak menyokong torrent v2 tulen.v2 disokong
PicoTorrent Klien Windows ringan dengan sokongan BitTorrent v2 asli dari kotak.v2 disokong
BiglyBT Klien pelbagai platform kaya ciri berdasarkan Azureus/Vuze dengan sokongan v2 penuh.v2 disokong

4. Mencipta Akaun

Pendaftaran

Klik Daftar dalam bar navigasi. Pilih nama pengguna, berikan alamat e-mel dan tetapkan kata laluan (panjang minimum dikuatkuasakan). Anda mesti membaca dan menerima terma laman web sebelum akaun anda dicipta.

Pengaktifan e-mel

Selepas mendaftar, e-mel pengesahan dihantar ke alamat anda. Klik pautan dalam e-mel untuk mengaktifkan akaun anda. Jika anda tidak menerimanya, gunakan pautan Aktifkan akaun anda di halaman log masuk untuk meminta kod baharu.

Pemulihan kata laluan

Jika anda terlupa kata laluan, klik Lupa kata laluan di halaman log masuk dan masukkan alamat e-mel anda. Pautan pemulihan akan dihantar kepada anda. Pautan ini untuk sekali guna dan tamat tempoh selepas masa yang singkat.

5. Memuat Naik Torrent

Navigasi ke Muat Naik dalam bar navigasi. Anda mesti log masuk dengan akaun aktif yang tidak diharamkan. Halaman muat naik mempunyai dua tab:

Tab Muat Naik — hantar fail .torrent sedia ada

Seret-dan-lepas atau pilih fail .torrent. Setelah dimuatkan, isi medan:

MedanDiperlukanPenerangan
Fail torrentYaFail .torrent untuk dimuat naik.
NamaTidakGantikan nama paparan torrent. Jika dibiarkan kosong, nama yang tertanam dalam fail torrent digunakan.
KategoriYaKategori kandungan (Anime, Manga, Audio, dsb.).
Sub-kategoriTidakJenis yang lebih spesifik dalam kategori (cth. RAW, Sub/Audio).
BahasaTidakSatu atau lebih tag bahasa yang menggambarkan bahasa kandungan.
KumpulanTidakKaitkan keluaran ini dengan kumpulan yang anda ahlinya.
PeneranganTidakPenerangan berformat Markdown yang ditunjukkan di halaman butiran torrent (maks 65535 aksara).
PeribadiTidakMenetapkan bendera peribadi dalam torrent, melumpuhkan DHT/PEX. Berguna untuk torrent tracker sahaja.
URL AnnounceTidakGantikan atau tambah URL announce tracker utama.
Tracker tambahanTidakDibaca dari fail torrent. Tidak boleh diubah semasa muat naik — gunakan tab Buat jika anda ingin menyesuaikan senarai tracker.
KomenTidakGantikan medan komen torrent yang tertanam dalam fail.
Keperluan tracker AniRena

Torrent anda mesti menyertakan sekurang-kurangnya satu URL tracker AniRena dalam senarai announce (mana-mana tier). Laman web menyemak ini semasa muat naik dan akan menolak torrent yang tidak menyertakan tracker AniRena. Jika anda mencipta torrent tanpa menambah tracker AniRena terlebih dahulu, muat naik dan muat turun semula dari laman web — fail yang dimuat turun akan mempunyai tracker yang betul secara automatik.

Tab Cipta — bina torrent baharu

Tab Cipta membolehkan anda menjana .torrent baharu dari awal dengan menentukan laluan fail, URL tracker dan parameter torrent lain terus dalam pelayar. Torrent yang dihasilkan dihantar dengan medan metadata yang sama seperti di atas.

Moderasi

Muat naik disemak secara automatik terhadap senarai corak kandungan yang diharamkan (nama, nama fail, penerangan). Torrent yang sepadan dengan corak yang diharamkan akan ditolak. Torrent pendua (info hash yang sama) juga ditolak.

6. Akaun Anda

Klik nama pengguna anda di sudut kanan atas untuk membuka panel profil. Ia dianjurkan dalam bahagian yang boleh diruntuhkan:

Tetapan

Tukar tema UI, saiz fon, skema warna, bahasa antara muka dan keutamaan paparan berkaitan torrent. Perubahan disimpan secara automatik.

Kata Laluan

Masukkan kata laluan semasa anda dan kata laluan baharu dua kali. Kod pengesahan dihantar ke alamat e-mel berdaftar anda dan mesti dimasukkan untuk mengesahkan perubahan. Jika pengesahan dua faktor diaktifkan, kod TOTP anda juga diperlukan.

Pengesahan Dua Faktor (2FA)

Aktifkan pengesahan dua faktor berasaskan TOTP menggunakan mana-mana aplikasi pengesah (cth. Google Authenticator, Aegis, Bitwarden). Apabila mengaktifkan 2FA:

  1. Imbas kod QR (atau masukkan rahsia secara manual) dalam aplikasi pengesah anda.
  2. Masukkan kod 6 digit yang ditunjukkan dalam aplikasi anda untuk mengesahkan persediaan.
  3. Simpan kod pemulihan yang ditunjukkan — ini adalah kod sekali guna untuk mendapatkan semula akses jika anda kehilangan peranti anda.

Untuk melumpuhkan 2FA, masukkan kod TOTP semasa anda dan sahkan.

Sesi Aktif

Lihat semua sesi log masuk yang aktif pada masa ini termasuk pelayar, OS, alamat IP dan masa terakhir dilihat. Klik Batalkan pada mana-mana sesi yang tidak anda kenali. Anda juga boleh membatalkan semua sesi sekaligus untuk log keluar setiap peranti.

Kunci API

Jana kunci API peribadi yang digunakan untuk memuat naik torrent secara program melalui API AniRena. Klik Jana Kunci untuk mencipta satu — kunci penuh ditunjukkan sekali segera selepas penjanaan. Simpan dengan selamat; ia tidak akan ditunjukkan sepenuhnya lagi. Gunakan Batalkan untuk membatalkan kunci secara kekal.

Padam Akaun

Meminta pemadaman akaun memulakan tempoh penangguhan 30 hari. Akaun anda dilumpuhkan dengan serta-merta dan dipadam secara kekal selepas 30 hari. Anda boleh membatalkan pemadaman pada bila-bila masa dalam tempoh tersebut dengan log masuk dan mengklik Batal pemadaman.

7. API AniRena

AniRena menyediakan API JSON yang membolehkan anda memuat naik torrent secara program menggunakan kunci API peribadi. API menerapkan peraturan yang sama seperti antara muka web: semakan larangan, had kadar dan sekatan mod laman web semuanya terpakai. Setiap muat naik API direkodkan dalam log audit.

Pengesahan

API menggunakan aliran pengesahan dua langkah. Pertama, tukar kunci API kekal anda dengan token pembawa jangka pendek, kemudian hantar token itu dalam pengepala Authorization setiap permintaan API.

Kunci API anda tersedia di Akaun Anda > Kunci API. Rahsiakan — sesiapa yang mempunyai kunci boleh mendapatkan token pembawa dan memuat naik bagi pihak anda. Jika terjejas, batalkan segera dan buat yang baharu.

Langkah 1 — Dapatkan token pembawa
POST/api/v1/auth/token

Hantar permintaan POST ke endpoint token dengan kunci API anda dalam pengepala Authorization. Tiada badan permintaan diperlukan.

Authorization: ApiKey <your-api-key>
Respons token
{
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600
}
Tempoh hayat token

Token Bearer kekal sah sehingga 3600 saat dari masa ia dikeluarkan dan boleh digunakan semula untuk setiap panggilan sehingga tamat tempoh. Apabila token tamat tempoh, hasilkan yang baru melalui POST /api/v1/auth/token. Setiap respons masih mengembalikan token semasa dalam pengepala X-New-Token untuk keserasian ke belakang.

X-New-Token: <next-bearer-token>
Log masuk satu permintaan (dengan 2FA)
POST/api/v1/auth/login

Sahkan dengan nama pengguna atau e-mel dan kata laluan anda dalam satu permintaan dan terima token bearer secara terus. Jika akaun anda mengaktifkan 2FA, sertakan kod pengesah semasa anda dalam totp_code (atau kod pemulihan dalam recovery_code). Secara pilihan, tetapkan new_api_key kepada true untuk turut menjana kunci API kekal yang baharu dalam respons yang sama.

Badan permintaan
{
  "login":         "username or email",
  "password":      "your-password",
  "totp_code":     "123456",   // diperlukan jika 2FA diaktifkan (6 digit)
  "recovery_code": "",         // alternatif kepada totp_code
  "new_api_key":   false       // tetapkan true untuk turut menjana kunci API baharu
}
Respons token
{
  "ok":         true,
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600,
  "api_key":    "<new-api-key>"   // hadir hanya apabila new_api_key ialah true
}

Token bearer berfungsi sama seperti yang diperoleh daripada ‎/api/v1/auth/token. Medan api_key hanya dikembalikan apabila new_api_key ialah true — simpan ia dengan segera kerana ia dipaparkan sekali sahaja dan menggantikan sebarang kunci terdahulu.

Contoh — log masuk dan (pilihan) dapatkan kunci API baharu
# 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"])

Langkah 2 — Muat naik torrent

POST/api/v1/torrents

Hantar permintaan POST JSON biasa dengan token pembawa dalam pengepala Authorization.

Badan permintaan
MedanJenisDiperlukanPenerangan
torrentstringYaKandungan fail .torrent dikodkan Base64.
categorystringYaSlug kategori: anime, manga, audio, literature, live, pictures, software, hentai, other.
namestringTidakGantikan nama paparan torrent.
sub_categorystringTidakSlug sub-kategori (cth. raw, sub-audio). Mesti tergolong dalam kategori yang dipilih.
languagesstring[]TidakTatasusunan kod bahasa BCP 47 (cth. en, ja).
group_idstringTidakUUID kumpulan yang anda ahlinya untuk mengaitkan keluaran ini.
descriptionstringTidakPenerangan keluaran berformat Markdown (maks 65535 aksara).
commentstringTidakGantikan medan komen tertanam torrent.
is_privatebooleanTidakTetapkan kepada true untuk mengaktifkan bendera peribadi dalam torrent.
comments_enabledbooleanTidakBenarkan ulasan pada torrent ini. Lalai kepada true (diaktifkan).
anime_idstringTidakUUID entri anime untuk dikaitkan dengan torrent ini. Dapatkan UUID melalui GET /api/v1/anime/search. Mengembalikan 400 jika UUID tidak sepadan dengan mana-mana entri yang diketahui.
announcestringTidakGantikan atau tambah URL announce utama.
trackersstringTidakSenarai URL tracker tambahan yang dipisahkan baris baharu. Baris kosong antara URL mencipta peringkat tracker baharu.
testbooleanTidakTetapkan kepada true untuk menjalankan ujian kering: permintaan disahkan sepenuhnya tetapi torrent tidak disimpan. Gunakan ini untuk mengesahkan muatan anda betul sebelum penyerahan sebenar.
Ujian kering / mod ujian Tambah "test": true ke mana-mana permintaan muat naik untuk menyemak sama ada ia akan berjaya tanpa benar-benar menambahkan torrent. Semua peraturan pengesahan terpakai — pengesahan identiti, carian kategori, pengesanan pendua, corak yang dilarang, keperluan penjejak — jadi respons mencerminkan tepat apa yang akan dikembalikan oleh penyerahan sebenar. Token masih diputar semasa berjaya.
Respons kejayaan ujian kering — 200 OK
{
  "ok":           true,
  "test":         true,
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Kod bahasa yang tersedia
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
Contoh permintaan
# 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
Respons kejayaan — 200 OK
{
  "ok":           true,
  "id":           "550e8400-e29b-41d4-a716-446655440000",
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Respons ralat
Status HTTPMaksud
400Badan permintaan tidak sah atau medan diperlukan tiada.
401Token pembawa hilang, tamat tempoh, atau sudah dipusing. Sahkan semula melalui POST /api/v1/auth/token.
403Akaun diharamkan, dilumpuhkan, atau IP disekat.
409Torrent pendua — info hash yang sama sudah wujud.
422Fail torrent tidak dapat dihurai atau gagal pengesahan (corak diharamkan, struktur tidak sah).
429Had kadar melebihi. Cuba semula selepas tetingkap ditetapkan semula.
503Laman web dalam mod penyelenggaraan atau baca sahaja.

Had kadar

Muat naik API tertakluk kepada had kadar yang boleh dikonfigurasi berasingan daripada antara muka web. Had dan tetingkap ditetapkan oleh pentadbir laman web. Apabila had kadar melebihi, API mengembalikan 429 Too Many Requests. Had adalah setiap kunci API.

Rahsiakan kunci API anda. Ia memberikan akses muat naik penuh di bawah akaun anda. Batalkan dan jana semula dengan segera jika anda mengesyaki ia telah terdedah.

Menjana fail torrent dengan torrent-builder

torrent-builder ialah alat CLI sumber terbuka yang dibina di atas libtorrent-rasterbar yang membolehkan anda membuat fail .torrent BitTorrent v1, v2, dan hybrid dari baris perintah. Ia sesuai dengan AniRena upload API — jana fail secara tempatan, kemudian POST terus ke tracker. cantalupo555/torrent-builder.

Membina daripada kod sumber

Memerlukan CMake >= 3.28.3 dan libtorrent-rasterbar >= 2.0.11. Klon repositori dan bina dengan 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 .
Bendera utama
MedanPenerangan
--pathLaluan ke fail atau direktori untuk dipaketkan (diperlukan).
--outputNama fail .torrent output (diperlukan).
--versionFormat BitTorrent — 1 = v1, 2 = v2, 3 = hybrid (lalai: 3).
--trackerTambah URL announce tracker. Ulangi bendera untuk menambah pelbagai tracker.
--commentBenamkan rentetan komen metadata ke dalam torrent.
--privateTetapkan bendera peribadi untuk menyekat pengedaran kepada tracker yang disenaraikan sahaja.
--piece-sizeSaiz kepingan dalam KB (16-32768). Biarkan tidak ditetapkan untuk pemilihan automatik.
-iLancarkan mod konfigurasi interaktif langkah demi langkah.
Aliran kerja lengkap: bina -> muat naik

Contoh di bawah membina torrent hybrid dengan torrent-builder, kemudian mengesahkan dengan AniRena API dan memuat naik hasilnya dalam satu skrip.

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

Mencari metadata torrent

POST/api/v1/torrents/search

Hantar permintaan POST JSON biasa untuk mendapatkan senarai torrent dengan pilihan carian dan penapis yang sama seperti di laman web. Fail .torrent itu sendiri tidak dikembalikan — gunakan laluan muat turun biasa untuk itu.

# 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"])
Parameter carian
MedanJenisDiperlukanPenerangan
qstringTidakCarian teks bebas. Menyokong awalan group:slug, group:"Nama", user:nama.
categorystringTidakSlug kategori (cth. "anime").
sub_categorystringTidakSlug sub-kategori (cth. "raw").
languagesstring[]TidakTatasusunan kod bahasa BCP 47 (cth. en, ja).
sortstringTidakMedan susun: date (lalai), size, seeders, leechers, completed, title.
orderstringTidakArah susun: desc (lalai) atau asc.
pageintegerTidakNombor halaman, bermula dari 1 (lalai 1).
per_pageintegerTidakKeputusan setiap halaman, 1–250 (lalai 50).
hide_adultbooleanTidakKecualikan torrent kategori dewasa. Lalai true untuk pengguna biasa.
show_deadbooleanTidakApabila false (lalai), torrent yang lebih lama daripada tempoh grace torrent mati dan tiada seeder aktif dikecualikan. Tetapkan kepada true untuk memasukkannya.
Respons
{
  "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 — Bilangan komen yang tidak dipadam pada torrent ini.

Had kadar carian

Permintaan carian tertakluk kepada had kadar yang boleh dikonfigurasi berasingan (lalai 60 permintaan per 60 saat per kunci API). Melebihi had mengembalikan 429 Too Many Requests. Akaun kakitangan dikecualikan.

Dapatkan butiran torrent

GET/api/v1/torrent/{id}

Mendapatkan metadata lengkap untuk satu torrent — termasuk medan yang tidak dipulangkan oleh endpoint carian seperti penerangan Markdown, komen .torrent yang disertakan, senarai fail dengan saiz setiap fail, dan susun atur lengkap tier tracker. Kiraan langsung seeder dan leecher dibaca daripada tracker apabila tersedia.

Respons
{
  "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 — Kiraan langsung dari tracker dalaman; kedua-duanya melaporkan 0 apabila stor tracker tidak mempunyai entri untuk info hash ini atau tidak boleh dicapai.

ext_seeders, ext_leechers — Bilangan tertinggi seeder dan leecher yang dilaporkan oleh mana-mana tracker luaran tunggal yang di-scrape untuk torrent ini. Tracker yang menjejaki swarm yang sama bertindih, jadi maksimum digunakan dan bukannya jumlah; kedua-duanya melaporkan 0 apabila tiada tracker mempunyai data scrape untuk info hash ini.

Respons ralat
Status HTTPMaksud
400Id torrent mestilah UUID 36 aksara dengan sengkang atau rentetan heksadesimal mentah 32 aksara.
401Token pembawa hilang, tamat tempoh, atau sudah dipusing. Sahkan semula melalui POST /api/v1/auth/token.
404Torrent tidak ditemui.
429Had kadar melebihi. Cuba semula selepas tetingkap ditetapkan semula.
503Laman web dalam mod penyelenggaraan atau baca sahaja.

Mendapatkan komen torrent

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

Mendapatkan komen halaman demi halaman untuk torrent. Bilangan komen setiap halaman dikawal oleh tetapan COMMENT_PER_PAGE dalam fail .env pelayan (lalai 20). Hanya torrent dengan komen yang diaktifkan akan mengembalikan hasil — semua yang lain mengembalikan 403.

Parameter pertanyaan
MedanJenisDiperlukanPenerangan
pageintegerTidakNombor halaman, bermula dari 1 (lalai 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"])
Respons
{
  "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
    }
  ]
}

Medan body adalah rentetan kosong apabila pengarang komen diharamkan atau komen telah dipadam. Bendera author_banned menunjukkan kes yang mana terpakai.

Respons ralat
Status HTTPMaksud
401Token pembawa hilang, tamat tempoh, atau sudah dipusing. Sahkan semula melalui POST /api/v1/auth/token.
403Komen dilumpuhkan untuk torrent ini.
404Torrent tidak dijumpai.
503Laman web dalam mod penyelenggaraan atau baca sahaja.

Mencari entri anime

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

Cari entri anime mengikut tajuk untuk mendapatkan UUID mereka. UUID boleh dihantar sebagai anime_id dalam badan muat naik untuk mengaitkan torrent dengan entri anime pada masa muat naik, atau digunakan dengan PUT /api/torrents/{id}/anime selepas muat naik. Tiada pengesahan diperlukan. Tertakluk kepada had kadar yang sama seperti carian torrent (lalai 60 permintaan per 60 saat 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"])
Parameter pertanyaan
MedanJenisDiperlukanPenerangan
qstringYaRentetan carian tajuk (diperlukan). Dipadankan dengan tajuk dan sinonim.
pageintegerTidakNombor halaman, bermula dari 1 (lalai 1).
per_pageintegerTidakKeputusan setiap halaman, 1–50 (lalai 10).
Respons
{
  "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
    }
  ]
}

Senarai dan dapatkan kumpulan

GET/api/v1/groups

Mengembalikan senarai halaman kumpulan awam (diaktifkan dan tidak dikunci). Memerlukan pengesahan token Bearer.

GET/api/v1/groups/{id_or_slug}

Mengembalikan satu kumpulan awam mengikut ID angka atau slug. Mengembalikan 404 jika kumpulan dilumpuhkan atau dikunci.

Parameter pertanyaan (senarai sahaja)
MedanJenisDiperlukanPenerangan
qstringTidakTapis mengikut nama kumpulan (pilihan, padanan subrentetan).
pageintegerTidakNombor halaman (lalai 1).
per_pageintegerTidakKeputusan setiap halaman, 1–100 (lalai 20).
sortstringTidakLajur pengisihan: name | slug | members | torrents | created (lalai name).
orderstringTidakArah pengisihan: asc atau desc (lalai asc).
Tindak balas (senarai)
{
  "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"
    }
  ]
}
Tindak balas (tunggal)
{
  "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"
}
Respons ralat
Status HTTPMaksud
401Token pembawa hilang, tamat tempoh, atau sudah dipusing. Sahkan semula melalui POST /api/v1/auth/token.
404Kumpulan tidak dijumpai atau tidak boleh diakses secara awam.
429Had kadar melebihi. Cuba semula selepas tetingkap ditetapkan semula.
503Laman web dalam mod penyelenggaraan atau baca sahaja.

8. Derma

Jika anda ingin menyokong AniRena dan membantu menanggung kos pengehosan pelayan dan perkhidmatan kami, anda dialu-alukan untuk menghantar sumbangan ke salah satu dompet mata wang kripto berikut:

Bitcoinbc1qy2h3ddq6ak5damvnf4r5vu3ydehhxrcq8gllwn
Ethereum0xCbaFe03832F95F86AF2536d52710e78C63b62Cd3
Solana3ucetj2XDGHQg9PVRPMxerNi7c6kX7GJkjQNg9yjwGeg
LitecoinLbpt61yX3RjGtB1Ef8vgVz6Hr6baQsTjVk

Sebarang sumbangan, besar atau kecil, amat dihargai dan terus digunakan untuk mengekalkan AniRena. Terima kasih atas sokongan anda!

9. Perisian

AniRena Player ialah aplikasi desktop percuma yang membolehkan anda menstrim video terus daripada torrent yang diindeks di laman ini — tanpa perlu menunggu muat turun penuh selesai. Hanya tampal pautan magnet atau buka fail .torrent, dan main balik akan bermula sebaik sahaja data yang mencukupi tersedia.

Kedua-dua binaan adalah bebas sepenuhnya — semua kebergantungan disertakan di dalam fail boleh laksana. Tiada pemasang, tiada masa jalan yang perlu disediakan — muat turun dan jalankan sahaja.

Windows auto-kemas kini
  • v0.3.2 latest AniRena-Player_0.3.2_x64-setup.exe · 43.4 MB (35 muat turun)
Versi lama
  • v0.3.1 AniRena-Player_0.3.1_x64-setup.exe · 43.9 MB (64 muat turun)
  • v0.3.0 AniRena-Player_0.3.0_x64-setup.exe · 43.7 MB (8 muat turun)
  • v0.2.9 AniRena-Player_0.2.9_x64-setup.exe · 43.5 MB (6 muat turun)
  • v0.2.8 AniRena-Player_0.2.8_x64-setup.exe · 43.5 MB (17 muat turun)
  • v0.2.7 AniRena-Player_0.2.7_x64-setup.exe · 43.5 MB (20 muat turun)
  • v0.2.6 AniRena-Player_0.2.6_x64-setup.exe · 43.4 MB (3 muat turun)
  • v0.2.5 AniRena-Player_0.2.5_x64-setup.exe · 43.4 MB (8 muat turun)

Pemasang (.exe). Mengemas kini sendiri dalam aplikasi.

macOS · Apple Silicon auto-kemas kini

Imej cakera (.dmg) untuk Mac Apple Silicon (M1 dan lebih baharu). Mengemas kini sendiri dalam aplikasi.

macOS · Intel auto-kemas kini

Imej cakera (.dmg) untuk Mac Intel. Mengemas kini sendiri dalam aplikasi.

Linux · AppImage auto-kemas kini
  • v0.3.2 latest AniRena-Player_0.3.2_amd64.AppImage · 95.1 MB (8 muat turun)
Versi lama
  • v0.3.1 AniRena-Player_0.3.1_amd64.AppImage · 138.1 MB (20 muat turun)
  • v0.3.0 AniRena-Player_0.3.0_amd64.AppImage · 138.0 MB (4 muat turun)
  • v0.2.9 AniRena-Player_0.2.9_amd64.AppImage · 137.7 MB (35 muat turun)
  • v0.2.8 AniRena-Player_0.2.8_amd64.AppImage · 137.6 MB (23 muat turun)
  • v0.2.7 AniRena-Player_0.2.7_amd64.AppImage · 137.6 MB (20 muat turun)
  • v0.2.5 AniRena-Player_0.2.5_amd64.AppImage · 137.6 MB (18 muat turun)

Fail tunggal mudah alih, tidak perlu pemasangan. Satu-satunya format Linux dengan kemas kini automatik dalam aplikasi.

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

Pemasangan: sudo apt install ./<file>.deb — dikemas kini melalui apt atau muat turun baharu, bukan dalam aplikasi.

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

Pemasangan: sudo dnf install ./<file>.rpm — dikemas kini melalui dnf atau muat turun baharu, bukan dalam aplikasi.

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

Sideload pada peranti Android ARM 64-bit (kebanyakan telefon / tablet moden). Kemas kini dengan memuat turun APK baharu.

Android · arm7
Versi lama
  • v0.3.1 AniRena-Player_0.3.1_arm7.apk · 97.8 MB (15 muat turun)

Sideload pada peranti Android ARM 32-bit (telefon / tablet lama). Dikemas kini dengan memuat turun APK baharu.

Android · x86_64
Versi lama
  • v0.3.1 AniRena-Player_0.3.1_x86_64.apk · 114.3 MB (12 muat turun)
  • v0.3.0 AniRena-Player_0.3.0_x86_64.apk · 114.1 MB (4 muat turun)
  • v0.2.9 AniRena-Player_0.2.9_x86_64.apk · 113.1 MB (4 muat turun)
  • v0.2.8 AniRena-Player_0.2.8_x86_64.apk · 113.0 MB (9 muat turun)
  • v0.2.7 AniRena-Player_0.2.7_x86_64.apk · 113.0 MB (11 muat turun)

Sideload pada peranti Android x86 64-bit atau emulator. Kemas kini dengan memuat turun APK baharu.