1. Primeiros Passos

AniRena é um índice de torrents focado em anime, mangá, áudio e mídia relacionada. Você pode navegar e baixar torrents sem uma conta. Uma conta é necessária para enviar torrents, postar em grupos ou usar a API.

A barra de navegação no topo fornece acesso às principais áreas do site:

  • Início — a página de listagem e pesquisa de torrents.
  • Enviar — enviar um novo torrent (requer login).
  • Guia — esta página.
  • Estatísticas — estatísticas de todo o site (torrents, peers, uploads ao longo do tempo).
  • Grupos — diretório de grupos de lançamento.
  • RSS — feed RSS de uploads recentes, filtrável por categoria.

Seu menu de conta (canto superior direito quando conectado) abre um painel de perfil onde você pode ajustar configurações, gerenciar opções de segurança e acessar sua chave de API.

2. Navegando & Pesquisando

A página inicial lista todos os torrents ordenados por data de upload. Use a barra de pesquisa no topo para filtrar resultados.

Pesquisa básica

Digite quaisquer palavras na barra de pesquisa e pressione Enter (ou clique no ícone de pesquisa). Os resultados são classificados por relevância quando uma consulta está ativa.

Operadores de pesquisa

Os seguintes operadores podem ser combinados com uma consulta regular:

OperadorExemploEfeito
user:"name"user:"SubsPlease"Mostrar apenas torrents enviados por esse usuário.

Clicar em um nome de enviador na lista de torrents executa automaticamente uma pesquisa de usuário para você.

Categorias & subcategorias

Use o seletor de categoria (o ícone de grade próximo à barra de pesquisa) para restringir resultados a uma categoria. As categorias disponíveis são:

  • Anime
  • Manga/Manhwa/Quadrinhos
  • Áudio
  • Literatura
  • Live Action
  • Imagens
  • Software
  • Hentai
  • Outros

Cada categoria tem subcategorias (ex. Anime para RAW, Sub/Áudio, Vídeo Musical) selecionáveis dentro do modal de categoria.

Ordenação & filtros

Os cabeçalhos de coluna na lista de torrents são clicáveis para ordenar por essa coluna (crescente ou decrescente). Colunas de ordenação disponíveis: data, nome, tamanho, downloads concluídos. Observação: seeders e leechers são valores em tempo real do Redis e não podem ser usados para ordenação.

Filtro de idioma

Use o seletor de idioma (ícone de bandeira) para mostrar apenas torrents marcados com um idioma específico.

Feed RSS

O feed RSS em /rss fornece os uploads mais recentes. Adicione ?category=anime (ou qualquer outro slug de categoria) para filtrar o feed. A maioria dos clientes de torrent suporta download automático via RSS diretamente desta URL.

3. Baixando Torrents

Clique em qualquer nome de torrent para abrir seu painel de detalhes. A partir daí você pode:

  • Baixar .torrent — salva o arquivo .torrent diretamente. A URL direta é /torrents/{id}.torrent
  • Link magnético — abre diretamente no seu cliente de torrent via protocolo de URI magnético. A URL é /torrents/{id}/magnet

O painel de detalhes também mostra a descrição do torrent, lista de arquivos, lista de trackers e contagens de seeders/leechers.

Links de download legados

Os links de download antigos do AniRena ainda são suportados e redirecionam automaticamente para o arquivo .torrent correto usando o ID legado: /dl/{old_id}

Clientes BitTorrent recomendados

Qualquer cliente BitTorrent moderno funciona. Os clientes abaixo são recomendados e suportam totalmente BitTorrent v2 / torrents híbridos:

qBittorrent Na página de download, clique em Opções de Download Adicionais e escolha a versão com a etiqueta lt20 (libtorrent 2.0). O instalador padrão usa libtorrent 1.2 que não suporta torrents v2 puros.v2 suportado
PicoTorrent Cliente Windows leve com suporte nativo ao BitTorrent v2 pronto para uso.v2 suportado
BiglyBT Cliente multiplataforma rico em recursos baseado no Azureus/Vuze com suporte completo ao v2.v2 suportado

4. Criando uma Conta

Registro

Clique em Cadastrar na barra de navegação. Escolha um nome de usuário, forneça um endereço de e-mail e defina uma senha (comprimento mínimo imposto). Você deve ler e aceitar os termos do site antes que sua conta seja criada.

Ativação por e-mail

Após o cadastro, um e-mail de verificação é enviado para seu endereço. Clique no link no e-mail para ativar sua conta. Se você não recebeu, use o link Ativar sua conta na página de login para solicitar um novo código.

Recuperação de senha

Se você esquecer sua senha, clique em Esqueceu a senha na página de login e digite seu endereço de e-mail. Um link de recuperação será enviado para você. O link é de uso único e expira após um curto período.

5. Enviando Torrents

Navegue até Enviar na barra de navegação. Você deve estar conectado com uma conta ativa e não banida. A página de envio tem duas abas:

Aba Enviar — enviar um arquivo .torrent existente

Arraste e solte ou selecione um arquivo .torrent. Uma vez carregado, preencha os campos:

CampoObrigatórioDescrição
Arquivo torrentSimO arquivo .torrent a ser enviado.
NomeNãoSubstituir o nome de exibição do torrent. Se deixado em branco, o nome embutido no arquivo torrent é usado.
CategoriaSimA categoria de conteúdo (Anime, Mangá, Áudio, etc.).
SubcategoriaNãoUm tipo mais específico dentro da categoria (ex. RAW, Sub/Áudio).
IdiomasNãoUma ou mais tags de idioma descrevendo o idioma do conteúdo.
GrupoNãoAssociar este lançamento a um grupo do qual você é membro.
DescriçãoNãoDescrição formatada em Markdown mostrada na página de detalhes do torrent (máx 65535 caracteres).
PrivadoNãoDefine a flag privada no torrent, desativando DHT/PEX. Útil para torrents somente de tracker.
URL de AnnounceNãoSubstituir ou adicionar a URL de announce do tracker primário.
Trackers extrasNãoLido do arquivo torrent. Não pode ser modificado durante o envio — use a aba Criar se quiser personalizar a lista de trackers.
ComentárioNãoSubstituir o campo de comentário do torrent embutido no arquivo.
Requisito de tracker do AniRena

Seu torrent deve incluir pelo menos uma URL de tracker do AniRena na lista de announce (em qualquer tier). O site verifica isso no envio e rejeitará torrents que não incluam um tracker do AniRena. Se você criou o torrent sem adicionar o tracker do AniRena primeiro, envie-o e depois baixe-o novamente do site — o arquivo baixado terá os trackers corretos injetados automaticamente.

Aba Criar — construir um novo torrent

A aba Criar permite gerar um novo .torrent do zero especificando caminhos de arquivo, URLs de tracker e outros parâmetros de torrent diretamente no navegador. O torrent resultante é enviado com os mesmos campos de metadados acima.

Moderação

Os uploads são automaticamente verificados contra uma lista de padrões de conteúdo banidos (nomes, nomes de arquivo, descrições). Torrents que correspondem a um padrão banido serão rejeitados. Torrents duplicados (mesmo info hash) também são rejeitados.

6. Sua Conta

Clique em seu nome de usuário no canto superior direito para abrir o painel de perfil. Está organizado em seções expansíveis:

Configurações

Altere o tema da UI, tamanho da fonte, esquema de cores, idioma da interface e preferências de exibição relacionadas a torrents. As alterações são salvas automaticamente.

Senha

Digite sua senha atual e a nova senha duas vezes. Um código de verificação é enviado para seu endereço de e-mail registrado e deve ser inserido para confirmar a alteração. Se a autenticação de dois fatores estiver ativada, seu código TOTP também é necessário.

Autenticação de Dois Fatores (2FA)

Ative a autenticação de dois fatores baseada em TOTP usando qualquer aplicativo autenticador (ex. Google Authenticator, Aegis, Bitwarden). Ao ativar o 2FA:

  1. Escaneie o código QR (ou insira o segredo manualmente) no seu aplicativo autenticador.
  2. Digite o código de 6 dígitos mostrado no seu aplicativo para confirmar a configuração.
  3. Salve os códigos de recuperação mostrados — estes são códigos de uso único para recuperar o acesso se você perder seu dispositivo.

Para desativar o 2FA, insira seu código TOTP atual e confirme.

Sessões Ativas

Veja todas as sessões de login atualmente ativas incluindo navegador, SO, endereço IP e hora do último acesso. Clique em Revogar em qualquer sessão que você não reconheça. Você também pode revogar todas as sessões de uma vez para desconectar todos os dispositivos.

Chave de API

Gere uma chave de API pessoal usada para enviar torrents programaticamente via API AniRena. Clique em Gerar Chave para criar uma — a chave completa é mostrada uma vez imediatamente após a geração. Armazene-a com segurança; ela não será mostrada em sua totalidade novamente. Use Revogar para invalidar permanentemente a chave.

Excluir Conta

Solicitar a exclusão de conta inicia um período de carência de 30 dias. Sua conta é desativada imediatamente e excluída permanentemente após 30 dias. Você pode cancelar a exclusão a qualquer momento dentro dessa janela fazendo login e clicando em Cancelar exclusão.

7. API AniRena

AniRena fornece uma API JSON que permite enviar torrents programaticamente usando uma chave de API pessoal. A API aplica as mesmas regras que a interface web: verificações de banimento, limites de taxa e restrições de modo do site se aplicam. Cada upload de API é registrado no log de auditoria.

Autenticação

A API usa um fluxo de autenticação em duas etapas. Primeiro, troque sua chave API permanente por um token portador de curta duração, e então passe esse token no cabeçalho Authorization de cada requisição API.

Sua chave API está disponível em Sua conta > Chave API. Mantenha-a em segredo — qualquer pessoa com a chave pode obter tokens portadores e fazer uploads em seu nome. Se for comprometida, revogue-a imediatamente e gere uma nova.

Etapa 1 — Obter um token portador
POST/api/v1/auth/token

Envie uma requisição POST ao endpoint do token com sua chave API no cabeçalho Authorization. Nenhum corpo de requisição é necessário.

Authorization: ApiKey <your-api-key>
Resposta do token
{
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600
}
Tempo de vida do token

Os tokens Bearer permanecem válidos por até 3600 segundos a partir da emissão e podem ser reutilizados em cada chamada até expirarem. Quando um token expira, gere um novo via POST /api/v1/auth/token. Cada resposta ainda retorna o token atual no cabeçalho X-New-Token para compatibilidade com clientes existentes.

X-New-Token: <next-bearer-token>
Login em uma única requisição (com 2FA)
POST/api/v1/auth/login

Autentique-se com seu nome de usuário ou e-mail e senha em uma única requisição e receba um token bearer diretamente. Se a sua conta tiver 2FA ativado, inclua o código atual do seu autenticador em totp_code (ou um código de recuperação em recovery_code). Opcionalmente, defina new_api_key como true para também gerar uma nova chave de API permanente na mesma resposta.

Corpo da requisição
{
  "login":         "username or email",
  "password":      "your-password",
  "totp_code":     "123456",   // obrigatório se o 2FA estiver ativado (6 dígitos)
  "recovery_code": "",         // alternativa ao totp_code
  "new_api_key":   false       // defina true para também gerar uma nova chave de API
}
Resposta do token
{
  "ok":         true,
  "token":      "<bearer-token>",
  "token_type": "Bearer",
  "expires_in": 3600,
  "api_key":    "<new-api-key>"   // presente apenas quando new_api_key era true
}

O token bearer funciona exatamente como um obtido em ‎/api/v1/auth/token. O campo api_key só é retornado quando new_api_key é true — guarde-o imediatamente, pois ele é exibido apenas uma vez e substitui qualquer chave anterior.

Exemplo — faça login e (opcionalmente) obtenha uma nova chave de 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"])

Etapa 2 — Fazer upload de um torrent

POST/api/v1/torrents

Envie uma requisição POST JSON simples com o token portador no cabeçalho Authorization.

Corpo da requisição
CampoTipoObrigatórioDescrição
torrentstringSimConteúdo do arquivo .torrent codificado em Base64.
categorystringSimSlug de categoria: anime, manga, audio, literature, live, pictures, software, hentai, other.
namestringNãoSubstituir o nome de exibição do torrent.
sub_categorystringNãoSlug de subcategoria (ex. raw, sub-audio). Deve pertencer à categoria escolhida.
languagesstring[]NãoArray de códigos de idioma BCP 47 (ex. en, ja).
group_idstringNãoUUID de um grupo do qual você é membro para associar este lançamento.
descriptionstringNãoDescrição de lançamento formatada em Markdown (máx 65535 caracteres).
commentstringNãoSubstituir o campo de comentário embutido do torrent.
is_privatebooleanNãoDefinir como true para ativar a flag privada no torrent.
comments_enabledbooleanNãoPermitir comentários neste torrent. O padrão é true (habilitado).
anime_idstringNãoUUID de uma entrada de anime para vincular a este torrent. Obtenha o UUID via GET /api/v1/anime/search. Retorna 400 se o UUID não corresponder a nenhuma entrada conhecida.
announcestringNãoSubstituir ou adicionar a URL de announce primária.
trackersstringNãoLista de URLs de tracker adicionais separadas por nova linha. Uma linha em branco entre URLs cria uma nova camada de tracker.
testbooleanNãoDefina como true para executar uma simulação: a solicitação é totalmente validada, mas o torrent não é salvo. Use isso para verificar se o seu payload está correto antes do envio real.
Simulação / modo de teste Adicione "test": true a qualquer solicitação de upload para verificar se seria bem-sucedida sem realmente adicionar o torrent. Todas as regras de validação se aplicam — autenticação, pesquisa de categoria, detecção de duplicatas, padrões proibidos, requisitos de tracker — portanto, a resposta reflete exatamente o que um envio real retornaria. O token ainda é rotacionado em caso de sucesso.
Resposta de sucesso da simulação — 200 OK
{
  "ok":           true,
  "test":         true,
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Códigos de idioma disponíveis
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
Exemplo de requisição
# 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
Resposta de sucesso — 200 OK
{
  "ok":           true,
  "id":           "550e8400-e29b-41d4-a716-446655440000",
  "name":         "My Torrent Title",
  "info_hash_v1": "aabbccddeeff...",
  "info_hash_v2": null
}
Respostas de erro
Status HTTPSignificado
400Corpo da requisição inválido ou campo obrigatório ausente.
401Token portador ausente, expirado ou já rotacionado. Re-autentique via POST /api/v1/auth/token.
403Conta banida, desativada ou IP bloqueado.
409Torrent duplicado — mesmo info hash já existe.
422Arquivo torrent não pôde ser analisado ou falhou na validação (padrão banido, estrutura inválida).
429Limite de taxa excedido. Tente novamente após a janela ser redefinida.
503Site está em modo de manutenção ou somente leitura.

Limite de taxa

Os uploads de API estão sujeitos a um limite de taxa configurável separado da interface web. O limite e a janela são definidos pelo administrador do site. Quando o limite de taxa é excedido, a API retorna 429 Too Many Requests. O limite é por chave de API.

Mantenha sua chave de API privada. Ela concede acesso total de upload sob sua conta. Revogue e regenere imediatamente se suspeitar que foi exposta.

Gerando arquivos torrent com torrent-builder

torrent-builder é uma ferramenta CLI de código aberto construída sobre libtorrent-rasterbar que permite criar arquivos .torrent BitTorrent v1, v2 e hybrid pela linha de comando. Combina perfeitamente com a AniRena upload API — gere o arquivo localmente e depois faça um POST diretamente para o tracker. cantalupo555/torrent-builder.

Compilar a partir do código-fonte

Requer CMake >= 3.28.3 e libtorrent-rasterbar >= 2.0.11. Clone o repositório e compile com 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 .
Flags principais
CampoDescrição
--pathCaminho para o arquivo ou diretório a ser empacotado (obrigatório).
--outputNome do arquivo .torrent de saída (obrigatório).
--versionFormato BitTorrent — 1 = v1, 2 = v2, 3 = hybrid (padrão: 3).
--trackerAdicionar uma URL de announce de tracker. Repita a flag para adicionar múltiplos trackers.
--commentIncorporar uma string de comentário de metadados no torrent.
--privateDefinir a flag privada para restringir a distribuição apenas aos trackers listados.
--piece-sizeTamanho do pedaço em KB (16-32768). Deixe sem definir para seleção automática.
-iIniciar o modo de configuração interativa passo a passo.
Fluxo de trabalho completo: build -> upload

Os exemplos abaixo criam um torrent hybrid com torrent-builder, depois se autenticam com a AniRena API e fazem upload do resultado em um único 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"])

Pesquisando metadados de torrent

POST/api/v1/torrents/search

Envie uma requisição POST JSON simples para recuperar listagens de torrents com as mesmas opções de pesquisa e filtro disponíveis no site. O próprio arquivo .torrent não é retornado — use a rota de download normal para isso.

# 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"])
Parâmetros de pesquisa
CampoTipoObrigatórioDescrição
qstringNãoPesquisa de texto livre. Suporta prefixos group:slug, group:"Nome", user:nome.
categorystringNãoSlug de categoria (ex. "anime").
sub_categorystringNãoSlug de subcategoria (ex. "raw").
languagesstring[]NãoArray de códigos de idioma BCP 47 (ex. en, ja).
sortstringNãoCampo de ordenação: date (padrão), size, seeders, leechers, completed, title.
orderstringNãoDireção de ordenação: desc (padrão) ou asc.
pageintegerNãoNúmero da página, começando em 1 (padrão 1).
per_pageintegerNãoResultados por página, 1–250 (padrão 50).
hide_adultbooleanNãoExcluir torrents de categoria adulta. Padrão true para usuários regulares.
show_deadbooleanNãoQuando false (padrão), torrents mais antigos que o período de carência de torrents mortos sem seeders ativos são excluídos. Defina como true para incluí-los.
Resposta
{
  "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 — Número de comentários não eliminados neste torrent.

Limite de taxa de pesquisa

As requisições de pesquisa estão sujeitas a um limite de taxa configurável separado (padrão 60 requisições por 60 segundos por chave de API). Exceder o limite retorna 429 Too Many Requests. Contas de staff são isentas.

Obter detalhes do torrent

GET/api/v1/torrent/{id}

Recupera os metadados completos de um torrent — incluindo campos que o endpoint de busca omite, como a descrição em Markdown, o comentário embutido do .torrent, a lista de arquivos com o tamanho de cada um e o layout completo dos níveis de trackers. Quando disponíveis, as contagens ao vivo de seeders e leechers são lidas do tracker.

Resposta
{
  "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 — Contagens ao vivo do tracker interno; ambos retornam 0 quando o armazenamento do tracker não possui entrada para este info hash ou está inacessível.

ext_seeders, ext_leechers — Maior número de seeders e leechers reportado por qualquer tracker externo individual rastreado para este torrent. Trackers que acompanham o mesmo swarm se sobrepõem, por isso usa-se o máximo em vez da soma; ambos retornam 0 quando nenhum tracker tem dados de scrape para este info hash.

Respostas de erro
Status HTTPSignificado
400O id do torrent deve ser um UUID de 36 caracteres com hifens ou uma string hexadecimal pura de 32 caracteres.
401Token portador ausente, expirado ou já rotacionado. Re-autentique via POST /api/v1/auth/token.
404Torrent não encontrado.
429Limite de taxa excedido. Tente novamente após a janela ser redefinida.
503Site está em modo de manutenção ou somente leitura.

Buscar comentários do torrent

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

Recuperar comentários paginados de um torrent. O número de comentários por página é controlado pela configuração COMMENT_PER_PAGE no arquivo .env do servidor (padrão 20). Apenas torrents com comentários habilitados retornarão resultados — todos os outros retornam 403.

Parâmetros de consulta
CampoTipoObrigatórioDescrição
pageintegerNãoNúmero da página, começando em 1 (padrão 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"])
Resposta
{
  "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
    }
  ]
}

O campo body é uma string vazia quando o autor do comentário está banido ou o comentário foi excluído. A flag author_banned indica qual caso se aplica.

Respostas de erro
Status HTTPSignificado
401Token portador ausente, expirado ou já rotacionado. Re-autentique via POST /api/v1/auth/token.
403Os comentários estão desabilitados para este torrent.
404Torrent não encontrado.
503Site está em modo de manutenção ou somente leitura.

Pesquisar entradas de anime

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

Pesquise entradas de anime por título para obter seu UUID. O UUID pode ser passado como anime_id no corpo do envio para vincular um torrent a uma entrada de anime no momento do envio, ou usado com PUT /api/torrents/{id}/anime após o envio. Nenhuma autenticação é necessária. Sujeito ao mesmo limite de taxa que a pesquisa de torrents (padrão 60 solicitações por 60 segundos por 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"])
Parâmetros de consulta
CampoTipoObrigatórioDescrição
qstringSimString de pesquisa de título (obrigatório). Correspondência com título e sinônimos.
pageintegerNãoNúmero da página, começando em 1 (padrão 1).
per_pageintegerNãoResultados por página, 1–50 (padrão 10).
Resposta
{
  "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
    }
  ]
}

Listar e recuperar grupos

GET/api/v1/groups

Retorna uma lista paginada de grupos públicos (habilitados e não bloqueados). Requer autenticação Bearer token.

GET/api/v1/groups/{id_or_slug}

Retorna um único grupo público por ID numérico ou slug. Retorna 404 se o grupo estiver desabilitado ou bloqueado.

Parâmetros de consulta (somente lista)
CampoTipoObrigatórioDescrição
qstringNãoFiltrar por nome do grupo (opcional, correspondência de substring).
pageintegerNãoNúmero da página (padrão 1).
per_pageintegerNãoResultados por página, 1–100 (padrão 20).
sortstringNãoColuna de ordenação: name | slug | members | torrents | created (padrão name).
orderstringNãoDireção de ordenação: asc ou desc (padrão asc).
Resposta (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"
    }
  ]
}
Resposta (única)
{
  "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"
}
Respostas de erro
Status HTTPSignificado
401Token portador ausente, expirado ou já rotacionado. Re-autentique via POST /api/v1/auth/token.
404Grupo não encontrado ou não acessível publicamente.
429Limite de taxa excedido. Tente novamente após a janela ser redefinida.
503Site está em modo de manutenção ou somente leitura.

8. Doações

Se desejar apoiar a AniRena e ajudar a cobrir os custos de hospedagem dos nossos servidores e serviços, você é bem-vindo para enviar uma doação para uma das seguintes carteiras de criptomoedas:

Bitcoinbc1qy2h3ddq6ak5damvnf4r5vu3ydehhxrcq8gllwn
Ethereum0xCbaFe03832F95F86AF2536d52710e78C63b62Cd3
Solana3ucetj2XDGHQg9PVRPMxerNi7c6kX7GJkjQNg9yjwGeg
LitecoinLbpt61yX3RjGtB1Ef8vgVz6Hr6baQsTjVk

Qualquer doação, grande ou pequena, é muito apreciada e vai diretamente para manter o AniRena funcionando. Obrigado pelo seu apoio!

9. Software

O AniRena Player é uma aplicação de desktop gratuita que permite fazer streaming de vídeo diretamente dos torrents indexados neste site — sem precisar esperar o download completo terminar. Basta colar um link magnet ou abrir um arquivo .torrent, e a reprodução começa assim que houver dados suficientes disponíveis.

Ambas as versões são totalmente autônomas — todas as dependências estão incluídas dentro do executável. Sem instalador, sem ambiente de execução para configurar — basta baixar e executar.

Windows auto-atualização
  • v0.3.2 latest AniRena-Player_0.3.2_x64-setup.exe · 43.4 MB (33 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_x64-setup.exe · 43.9 MB (64 transferências)
  • v0.3.0 AniRena-Player_0.3.0_x64-setup.exe · 43.7 MB (8 transferências)
  • v0.2.9 AniRena-Player_0.2.9_x64-setup.exe · 43.5 MB (6 transferências)
  • v0.2.8 AniRena-Player_0.2.8_x64-setup.exe · 43.5 MB (17 transferências)
  • v0.2.7 AniRena-Player_0.2.7_x64-setup.exe · 43.5 MB (19 transferências)
  • v0.2.6 AniRena-Player_0.2.6_x64-setup.exe · 43.4 MB (3 transferências)
  • v0.2.5 AniRena-Player_0.2.5_x64-setup.exe · 43.4 MB (8 transferências)

Instalador (.exe). Atualiza-se sozinho na aplicação.

macOS · Apple Silicon auto-atualização
  • v0.3.2 latest AniRena-Player_0.3.2_aarch64.dmg · 45.7 MB (2 transferências)

Imagem de disco (.dmg) para Macs com Apple Silicon (M1 e mais recentes). Atualiza-se sozinho na aplicação.

macOS · Intel auto-atualização

Imagem de disco (.dmg) para Macs com Intel. Atualiza-se sozinho na aplicação.

Linux · AppImage auto-atualização
  • v0.3.2 latest AniRena-Player_0.3.2_amd64.AppImage · 95.1 MB (8 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_amd64.AppImage · 138.1 MB (19 transferências)
  • v0.3.0 AniRena-Player_0.3.0_amd64.AppImage · 138.0 MB (4 transferências)
  • v0.2.9 AniRena-Player_0.2.9_amd64.AppImage · 137.7 MB (35 transferências)
  • v0.2.8 AniRena-Player_0.2.8_amd64.AppImage · 137.6 MB (23 transferências)
  • v0.2.7 AniRena-Player_0.2.7_amd64.AppImage · 137.6 MB (20 transferências)
  • v0.2.5 AniRena-Player_0.2.5_amd64.AppImage · 137.6 MB (18 transferências)

Ficheiro único portátil, sem necessidade de instalação. O único formato Linux com atualização automática na aplicação.

Debian / Ubuntu
  • v0.3.2 latest AniRena-Player_0.3.2_amd64.deb · 14.2 MB (2 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_amd64.deb · 62.5 MB (4 transferências)
  • v0.3.0 AniRena-Player_0.3.0_amd64.deb · 62.4 MB (3 transferências)
  • v0.2.9 AniRena-Player_0.2.9_amd64.deb · 62.1 MB (4 transferências)
  • v0.2.8 AniRena-Player_0.2.8_amd64.deb · 62.0 MB (26 transferências)
  • v0.2.7 AniRena-Player_0.2.7_amd64.deb · 62.0 MB (12 transferências)
  • v0.2.5 AniRena-Player_0.2.5_amd64.deb · 62.0 MB (11 transferências)

Instalação: sudo apt install ./<file>.deb — atualizações via apt ou novo download, não na aplicação.

Fedora / RHEL
  • v0.3.2 latest AniRena-Player_0.3.2-1_x86_64.rpm · 14.2 MB (1 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1-1_x86_64.rpm · 62.5 MB (3 transferências)
  • v0.3.0 AniRena-Player_0.3.0-1_x86_64.rpm · 62.4 MB (2 transferências)
  • v0.2.9 AniRena-Player_0.2.9-1_x86_64.rpm · 62.1 MB (23 transferências)
  • v0.2.8 AniRena-Player_0.2.8-1_x86_64.rpm · 62.0 MB (5 transferências)
  • v0.2.7 AniRena-Player_0.2.7-1_x86_64.rpm · 62.0 MB (8 transferências)
  • v0.2.5 AniRena-Player_0.2.5-1_x86_64.rpm · 62.0 MB (7 transferências)

Instalação: sudo dnf install ./<file>.rpm — atualizações via dnf ou novo download, não na aplicação.

Android · arm64
  • v0.3.2 latest AniRena-Player_0.3.2_arm64.apk · 110.3 MB (71 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_arm64.apk · 110.3 MB (62 transferências)
  • v0.3.0 AniRena-Player_0.3.0_arm64.apk · 110.1 MB (8 transferências)
  • v0.2.9 AniRena-Player_0.2.9_arm64.apk · 109.1 MB (12 transferências)
  • v0.2.8 AniRena-Player_0.2.8_arm64.apk · 109.1 MB (22 transferências)
  • v0.2.7 AniRena-Player_0.2.7_arm64.apk · 109.0 MB (17 transferências)

Faça sideload em dispositivos Android ARM de 64 bits (a maioria dos telefones / tablets modernos). Atualiza-se descarregando um novo APK.

Android · arm7
  • v0.3.2 latest AniRena-Player_0.3.2_arm7.apk · 97.9 MB (4 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_arm7.apk · 97.8 MB (15 transferências)

Instale manualmente em dispositivos Android ARM de 32 bits (telefones / tablets mais antigos). Atualiza baixando um novo APK.

Android · x86_64
  • v0.3.2 latest AniRena-Player_0.3.2_x86_64.apk · 114.3 MB (7 transferências)
Versões anteriores
  • v0.3.1 AniRena-Player_0.3.1_x86_64.apk · 114.3 MB (12 transferências)
  • v0.3.0 AniRena-Player_0.3.0_x86_64.apk · 114.1 MB (4 transferências)
  • v0.2.9 AniRena-Player_0.2.9_x86_64.apk · 113.1 MB (4 transferências)
  • v0.2.8 AniRena-Player_0.2.8_x86_64.apk · 113.0 MB (9 transferências)
  • v0.2.7 AniRena-Player_0.2.7_x86_64.apk · 113.0 MB (11 transferências)

Faça sideload em dispositivos Android x86 de 64 bits ou emuladores. Atualiza-se descarregando um novo APK.