Merge remote-tracking branch 'origin/development' into development

pull/2454/head
morpheus65535 7 months ago
commit 77a157f0dd

@ -48,6 +48,7 @@ If you need something that is not already part of Bazarr, feel free to create a
## Supported subtitles providers: ## Supported subtitles providers:
- Addic7ed - Addic7ed
- Animetosho (requires AniDb HTTP API client described [here](https://wiki.anidb.net/HTTP_API_Definition))
- Assrt - Assrt
- BetaSeries - BetaSeries
- BSplayer - BSplayer

@ -109,6 +109,7 @@ validators = [
Validator('general.adaptive_searching_delta', must_exist=True, default='1w', is_type_of=str, Validator('general.adaptive_searching_delta', must_exist=True, default='1w', is_type_of=str,
is_in=['3d', '1w', '2w', '3w', '4w']), is_in=['3d', '1w', '2w', '3w', '4w']),
Validator('general.enabled_providers', must_exist=True, default=[], is_type_of=list), Validator('general.enabled_providers', must_exist=True, default=[], is_type_of=list),
Validator('general.enabled_integrations', must_exist=True, default=[], is_type_of=list),
Validator('general.multithreading', must_exist=True, default=True, is_type_of=bool), Validator('general.multithreading', must_exist=True, default=True, is_type_of=bool),
Validator('general.chmod_enabled', must_exist=True, default=False, is_type_of=bool), Validator('general.chmod_enabled', must_exist=True, default=False, is_type_of=bool),
Validator('general.chmod', must_exist=True, default='0640', is_type_of=str), Validator('general.chmod', must_exist=True, default='0640', is_type_of=str),
@ -234,6 +235,11 @@ validators = [
Validator('addic7ed.user_agent', must_exist=True, default='', is_type_of=str), Validator('addic7ed.user_agent', must_exist=True, default='', is_type_of=str),
Validator('addic7ed.vip', must_exist=True, default=False, is_type_of=bool), Validator('addic7ed.vip', must_exist=True, default=False, is_type_of=bool),
# animetosho section
Validator('animetosho.search_threshold', must_exist=True, default=6, is_type_of=int, gte=1, lte=15),
Validator('animetosho.anidb_api_client', must_exist=True, default='', is_type_of=str, cast=str),
Validator('animetosho.anidb_api_client_ver', must_exist=True, default=1, is_type_of=int, gte=1, lte=9),
# avistaz section # avistaz section
Validator('avistaz.cookies', must_exist=True, default='', is_type_of=str), Validator('avistaz.cookies', must_exist=True, default='', is_type_of=str),
Validator('avistaz.user_agent', must_exist=True, default='', is_type_of=str), Validator('avistaz.user_agent', must_exist=True, default='', is_type_of=str),
@ -369,6 +375,10 @@ validators = [
Validator('postgresql.database', must_exist=True, default='', is_type_of=str), Validator('postgresql.database', must_exist=True, default='', is_type_of=str),
Validator('postgresql.username', must_exist=True, default='', is_type_of=str, cast=str), Validator('postgresql.username', must_exist=True, default='', is_type_of=str, cast=str),
Validator('postgresql.password', must_exist=True, default='', is_type_of=str, cast=str), Validator('postgresql.password', must_exist=True, default='', is_type_of=str, cast=str),
# anidb section
Validator('anidb.api_client', must_exist=True, default='', is_type_of=str),
Validator('anidb.api_client_ver', must_exist=True, default=1, is_type_of=int),
] ]
@ -442,6 +452,7 @@ array_keys = ['excluded_tags',
'subzero_mods', 'subzero_mods',
'excluded_series_types', 'excluded_series_types',
'enabled_providers', 'enabled_providers',
'enabled_integrations',
'path_mappings', 'path_mappings',
'path_mappings_movie', 'path_mappings_movie',
'language_equals', 'language_equals',

@ -324,6 +324,9 @@ def get_providers_auth():
'timeout': settings.whisperai.timeout, 'timeout': settings.whisperai.timeout,
'ffmpeg_path': _FFMPEG_BINARY, 'ffmpeg_path': _FFMPEG_BINARY,
'loglevel': settings.whisperai.loglevel, 'loglevel': settings.whisperai.loglevel,
},
"animetosho": {
'search_threshold': settings.animetosho.search_threshold,
} }
} }

@ -3,9 +3,11 @@
from .ffprobe import refine_from_ffprobe from .ffprobe import refine_from_ffprobe
from .database import refine_from_db from .database import refine_from_db
from .arr_history import refine_from_arr_history from .arr_history import refine_from_arr_history
from .anidb import refine_from_anidb
registered = { registered = {
"database": refine_from_db, "database": refine_from_db,
"ffprobe": refine_from_ffprobe, "ffprobe": refine_from_ffprobe,
"arr_history": refine_from_arr_history, "arr_history": refine_from_arr_history,
"anidb": refine_from_anidb,
} }

@ -0,0 +1,140 @@
# coding=utf-8
# fmt: off
import logging
import requests
from collections import namedtuple
from datetime import timedelta
from requests.exceptions import HTTPError
from app.config import settings
from subliminal import Episode, region
try:
from lxml import etree
except ImportError:
try:
import xml.etree.cElementTree as etree
except ImportError:
import xml.etree.ElementTree as etree
refined_providers = {'animetosho'}
api_url = 'http://api.anidb.net:9001/httpapi'
class AniDBClient(object):
def __init__(self, api_client_key=None, api_client_ver=1, session=None):
self.session = session or requests.Session()
self.api_client_key = api_client_key
self.api_client_ver = api_client_ver
AnimeInfo = namedtuple('AnimeInfo', ['anime', 'episode_offset'])
@region.cache_on_arguments(expiration_time=timedelta(days=1).total_seconds())
def get_series_mappings(self):
r = self.session.get(
'https://raw.githubusercontent.com/Anime-Lists/anime-lists/master/anime-list.xml',
timeout=10
)
r.raise_for_status()
return r.content
@region.cache_on_arguments(expiration_time=timedelta(days=1).total_seconds())
def get_series_id(self, mappings, tvdb_series_season, tvdb_series_id, episode):
# Enrich the collection of anime with the episode offset
animes = [
self.AnimeInfo(anime, int(anime.attrib.get('episodeoffset', 0)))
for anime in mappings.findall(
f".//anime[@tvdbid='{tvdb_series_id}'][@defaulttvdbseason='{tvdb_series_season}']"
)
]
if not animes:
return None
# Sort the anime by offset in ascending order
animes.sort(key=lambda a: a.episode_offset)
# Different from Tvdb, Anidb have different ids for the Parts of a season
anidb_id = None
offset = 0
for index, anime_info in enumerate(animes):
anime, episode_offset = anime_info
anidb_id = int(anime.attrib.get('anidbid'))
if episode > episode_offset:
anidb_id = anidb_id
offset = episode_offset
return anidb_id, episode - offset
@region.cache_on_arguments(expiration_time=timedelta(days=1).total_seconds())
def get_series_episodes_ids(self, tvdb_series_id, season, episode):
mappings = etree.fromstring(self.get_series_mappings())
series_id, episode_no = self.get_series_id(mappings, season, tvdb_series_id, episode)
if not series_id:
return None, None
episodes = etree.fromstring(self.get_episodes(series_id))
return series_id, int(episodes.find(f".//episode[epno='{episode_no}']").attrib.get('id'))
@region.cache_on_arguments(expiration_time=timedelta(days=1).total_seconds())
def get_episodes(self, series_id):
r = self.session.get(
api_url,
params={
'request': 'anime',
'client': self.api_client_key,
'clientver': self.api_client_ver,
'protover': 1,
'aid': series_id
},
timeout=10)
r.raise_for_status()
xml_root = etree.fromstring(r.content)
response_code = xml_root.attrib.get('code')
if response_code == '500':
raise HTTPError('AniDB API Abuse detected. Banned status.')
elif response_code == '302':
raise HTTPError('AniDB API Client error. Client is disabled or does not exists.')
episode_elements = xml_root.find('episodes')
if not episode_elements:
raise ValueError
return etree.tostring(episode_elements, encoding='utf8', method='xml')
def refine_from_anidb(path, video):
if refined_providers.intersection(settings.general.enabled_providers) and video.series_anidb_id is None:
refine_anidb_ids(video)
def refine_anidb_ids(video):
if not isinstance(video, Episode) and not video.series_tvdb_id:
logging.debug(f'Video is not an Anime TV series, skipping refinement for {video}')
return video
anidb_client = AniDBClient(settings.anidb.api_client, settings.anidb.api_client_ver)
season = video.season if video.season else 0
anidb_series_id, anidb_episode_id = anidb_client.get_series_episodes_ids(video.series_tvdb_id, season, video.episode)
if not anidb_episode_id:
logging.error(f'Could not find anime series {video.series}')
return video
video.series_anidb_id = anidb_series_id
video.series_anidb_episode_id = anidb_episode_id

@ -129,7 +129,8 @@ class Episode(Video):
""" """
def __init__(self, name, series, season, episode, title=None, year=None, original_series=True, tvdb_id=None, def __init__(self, name, series, season, episode, title=None, year=None, original_series=True, tvdb_id=None,
series_tvdb_id=None, series_imdb_id=None, alternative_series=None, **kwargs): series_tvdb_id=None, series_imdb_id=None, alternative_series=None, series_anidb_id=None,
series_anidb_episode_id=None, **kwargs):
super(Episode, self).__init__(name, **kwargs) super(Episode, self).__init__(name, **kwargs)
#: Series of the episode #: Series of the episode
@ -162,6 +163,9 @@ class Episode(Video):
#: Alternative names of the series #: Alternative names of the series
self.alternative_series = alternative_series or [] self.alternative_series = alternative_series or []
self.series_anidb_episode_id = series_anidb_episode_id
self.series_anidb_id = series_anidb_id
@classmethod @classmethod
def fromguess(cls, name, guess): def fromguess(cls, name, guess):
if guess['type'] != 'episode': if guess['type'] != 'episode':

@ -64,4 +64,3 @@ subliminal.refiner_manager.register('drone = subliminal_patch.refiners.drone:ref
subliminal.refiner_manager.register('filebot = subliminal_patch.refiners.filebot:refine') subliminal.refiner_manager.register('filebot = subliminal_patch.refiners.filebot:refine')
subliminal.refiner_manager.register('file_info_file = subliminal_patch.refiners.file_info_file:refine') subliminal.refiner_manager.register('file_info_file = subliminal_patch.refiners.file_info_file:refine')
subliminal.refiner_manager.register('symlinks = subliminal_patch.refiners.symlinks:refine') subliminal.refiner_manager.register('symlinks = subliminal_patch.refiners.symlinks:refine')

@ -0,0 +1,164 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import logging
import lzma
from guessit import guessit
from requests import Session
from subzero.language import Language
from subliminal.exceptions import ConfigurationError, ProviderError
from subliminal_patch.providers import Provider
from subliminal_patch.providers.mixins import ProviderSubtitleArchiveMixin
from subliminal_patch.subtitle import Subtitle, guess_matches
from subliminal.video import Episode
try:
from lxml import etree
except ImportError:
try:
import xml.etree.cElementTree as etree
except ImportError:
import xml.etree.ElementTree as etree
logger = logging.getLogger(__name__)
# TODO: Test and Support Other Languages
supported_languages = [
"eng", # English
"ita", # Italian
]
class AnimeToshoSubtitle(Subtitle):
"""AnimeTosho.org Subtitle."""
provider_name = 'animetosho'
def __init__(self, language, download_link, meta):
super(AnimeToshoSubtitle, self).__init__(language, page_link=download_link)
self.meta = meta
self.download_link = download_link
@property
def id(self):
return self.download_link
def get_matches(self, video):
matches = set()
matches |= guess_matches(video, guessit(self.meta['filename']))
# Add these data are explicit extracted from the API and they always have to match otherwise they wouldn't
# arrive at this point and would stop on list_subtitles.
matches.update(['title', 'series', 'tvdb_id', 'season', 'episode'])
return matches
class AnimeToshoProvider(Provider, ProviderSubtitleArchiveMixin):
"""AnimeTosho.org Provider."""
subtitle_class = AnimeToshoSubtitle
languages = {Language('por', 'BR')} | {Language(sl) for sl in supported_languages}
video_types = Episode
def __init__(self, search_threshold=None):
self.session = None
if not all([search_threshold]):
raise ConfigurationError("Search threshold, Api Client and Version must be specified!")
self.search_threshold = search_threshold
def initialize(self):
self.session = Session()
def terminate(self):
self.session.close()
def list_subtitles(self, video, languages):
if not video.series_anidb_episode_id:
raise ProviderError("Video does not have an AnimeTosho Episode ID!")
return [s for s in self._get_series(video.series_anidb_episode_id) if s.language in languages]
def download_subtitle(self, subtitle):
logger.info('Downloading subtitle %r', subtitle)
r = self.session.get(subtitle.page_link, timeout=10)
r.raise_for_status()
# Check if the bytes content starts with the xz magic number of the xz archives
if not self._is_xz_file(r.content):
raise ProviderError('Unidentified archive type')
subtitle.content = lzma.decompress(r.content)
return subtitle
@staticmethod
def _is_xz_file(content):
return content.startswith(b'\xFD\x37\x7A\x58\x5A\x00')
def _get_series(self, episode_id):
storage_download_url = 'https://animetosho.org/storage/attach/'
feed_api_url = 'https://feed.animetosho.org/json'
subtitles = []
entries = self._get_series_entries(episode_id)
for entry in entries:
r = self.session.get(
feed_api_url,
params={
'show': 'torrent',
'id': entry['id'],
},
timeout=10
)
r.raise_for_status()
for file in r.json()['files']:
if 'attachments' not in file:
continue
subtitle_files = list(filter(lambda f: f['type'] == 'subtitle', file['attachments']))
for subtitle_file in subtitle_files:
hex_id = format(subtitle_file['id'], '08x')
subtitle = self.subtitle_class(
Language.fromalpha3b(subtitle_file['info']['lang']),
storage_download_url + '{}/{}.xz'.format(hex_id, subtitle_file['id']),
meta=file,
)
logger.debug('Found subtitle %r', subtitle)
subtitles.append(subtitle)
return subtitles
def _get_series_entries(self, episode_id):
api_url = 'https://feed.animetosho.org/json'
r = self.session.get(
api_url,
params={
'eid': episode_id,
},
timeout=10
)
r.raise_for_status()
j = r.json()
# Ignore records that are not yet ready or has been abandoned by AnimeTosho.
entries = list(filter(lambda t: t['status'] == 'complete', j))[:self.search_threshold]
# Return the latest entries that have been added as it is used to cutoff via the user configuration threshold
entries.sort(key=lambda t: t['timestamp'], reverse=True)
return entries

@ -33,6 +33,8 @@ class Video(Video_):
edition=None, edition=None,
other=None, other=None,
info_url=None, info_url=None,
series_anidb_id=None,
series_anidb_episode_id=None,
**kwargs **kwargs
): ):
super(Video, self).__init__( super(Video, self).__init__(
@ -57,3 +59,5 @@ class Video(Video_):
self.original_path = name self.original_path = name
self.other = other self.other = other
self.info_url = info_url self.info_url = info_url
self.series_anidb_series_id = series_anidb_id,
self.series_anidb_episode_id = series_anidb_episode_id,

@ -39,14 +39,24 @@ import {
} from "../utilities/FormValues"; } from "../utilities/FormValues";
import { SettingsProvider, useSettings } from "../utilities/SettingsProvider"; import { SettingsProvider, useSettings } from "../utilities/SettingsProvider";
import { useSettingValue } from "../utilities/hooks"; import { useSettingValue } from "../utilities/hooks";
import { ProviderInfo, ProviderList } from "./list"; import { ProviderInfo } from "./list";
const ProviderKey = "settings-general-enabled_providers"; type SettingsKey =
| "settings-general-enabled_providers"
| "settings-general-enabled_integrations";
export const ProviderView: FunctionComponent = () => { interface ProviderViewProps {
availableOptions: Readonly<ProviderInfo[]>;
settingsKey: SettingsKey;
}
export const ProviderView: FunctionComponent<ProviderViewProps> = ({
availableOptions,
settingsKey,
}) => {
const settings = useSettings(); const settings = useSettings();
const staged = useStagedValues(); const staged = useStagedValues();
const providers = useSettingValue<string[]>(ProviderKey); const providers = useSettingValue<string[]>(settingsKey);
const { update } = useFormActions(); const { update } = useFormActions();
@ -61,17 +71,27 @@ export const ProviderView: FunctionComponent = () => {
staged, staged,
settings, settings,
onChange: update, onChange: update,
availableOptions: availableOptions,
settingsKey: settingsKey,
}); });
} }
}, },
[modals, providers, settings, staged, update], [
modals,
providers,
settings,
staged,
update,
availableOptions,
settingsKey,
],
); );
const cards = useMemo(() => { const cards = useMemo(() => {
if (providers) { if (providers) {
return providers return providers
.flatMap((v) => { .flatMap((v) => {
const item = ProviderList.find((inn) => inn.key === v); const item = availableOptions.find((inn) => inn.key === v);
if (item) { if (item) {
return item; return item;
} else { } else {
@ -89,7 +109,7 @@ export const ProviderView: FunctionComponent = () => {
} else { } else {
return []; return [];
} }
}, [providers, select]); }, [providers, select, availableOptions]);
return ( return (
<SimpleGrid cols={3}> <SimpleGrid cols={3}>
@ -106,6 +126,8 @@ interface ProviderToolProps {
staged: LooseObject; staged: LooseObject;
settings: Settings; settings: Settings;
onChange: (v: LooseObject) => void; onChange: (v: LooseObject) => void;
availableOptions: Readonly<ProviderInfo[]>;
settingsKey: Readonly<SettingsKey>;
} }
const SelectItem = forwardRef< const SelectItem = forwardRef<
@ -126,6 +148,8 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
staged, staged,
settings, settings,
onChange, onChange,
availableOptions,
settingsKey,
}) => { }) => {
const modals = useModals(); const modals = useModals();
@ -147,11 +171,11 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
if (idx !== -1) { if (idx !== -1) {
const newProviders = [...enabledProviders]; const newProviders = [...enabledProviders];
newProviders.splice(idx, 1); newProviders.splice(idx, 1);
onChangeRef.current({ [ProviderKey]: newProviders }); onChangeRef.current({ [settingsKey]: newProviders });
modals.closeAll(); modals.closeAll();
} }
} }
}, [payload, enabledProviders, modals]); }, [payload, enabledProviders, modals, settingsKey]);
const submit = useCallback( const submit = useCallback(
(values: FormValues) => { (values: FormValues) => {
@ -161,8 +185,7 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
// Add this provider if not exist // Add this provider if not exist
if (enabledProviders.find((v) => v === info.key) === undefined) { if (enabledProviders.find((v) => v === info.key) === undefined) {
const newProviders = [...enabledProviders, info.key]; changes[settingsKey] = [...enabledProviders, info.key];
changes[ProviderKey] = newProviders;
} }
// Apply submit hooks // Apply submit hooks
@ -172,7 +195,7 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
modals.closeAll(); modals.closeAll();
} }
}, },
[info, enabledProviders, modals], [info, enabledProviders, modals, settingsKey],
); );
const canSave = info !== null; const canSave = info !== null;
@ -188,18 +211,18 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
} }
}, []); }, []);
const availableOptions = useMemo( const options = useMemo(
() => () =>
ProviderList.filter( availableOptions.filter(
(v) => (v) =>
enabledProviders?.find((p) => p === v.key && p !== info?.key) === enabledProviders?.find((p) => p === v.key && p !== info?.key) ===
undefined, undefined,
), ),
[info?.key, enabledProviders], [info?.key, enabledProviders, availableOptions],
); );
const options = useSelectorOptions( const selectorOptions = useSelectorOptions(
availableOptions, options,
(v) => v.name ?? capitalize(v.key), (v) => v.name ?? capitalize(v.key),
); );
@ -289,7 +312,7 @@ const ProviderTool: FunctionComponent<ProviderToolProps> = ({
placeholder="Click to Select a Provider" placeholder="Click to Select a Provider"
itemComponent={SelectItem} itemComponent={SelectItem}
disabled={payload !== null} disabled={payload !== null}
{...options} {...selectorOptions}
value={info} value={info}
onChange={onSelect} onChange={onSelect}
></Selector> ></Selector>

@ -11,12 +11,16 @@ import {
Text, Text,
} from "../components"; } from "../components";
import { ProviderView } from "./components"; import { ProviderView } from "./components";
import { IntegrationList, ProviderList } from "./list";
const SettingsProvidersView: FunctionComponent = () => { const SettingsProvidersView: FunctionComponent = () => {
return ( return (
<Layout name="Providers"> <Layout name="Providers">
<Section header="Providers"> <Section header="Providers">
<ProviderView></ProviderView> <ProviderView
availableOptions={ProviderList}
settingsKey="settings-general-enabled_providers"
></ProviderView>
</Section> </Section>
<Section header="Anti-Captcha Options"> <Section header="Anti-Captcha Options">
<Selector <Selector
@ -58,6 +62,12 @@ const SettingsProvidersView: FunctionComponent = () => {
<Message>Link to subscribe</Message> <Message>Link to subscribe</Message>
</CollapseBox> </CollapseBox>
</Section> </Section>
<Section header="Integrations">
<ProviderView
availableOptions={IntegrationList}
settingsKey="settings-general-enabled_integrations"
></ProviderView>
</Section>
</Layout> </Layout>
); );
}; };

@ -64,6 +64,20 @@ export const ProviderList: Readonly<ProviderInfo[]> = [
}, },
], ],
}, },
{
key: "animetosho",
name: "Anime Tosho",
description:
"Anime Tosho is a free, completely automated service which mirrors most torrents posted on TokyoTosho's anime category, Nyaa.si's English translated anime category and AniDex's anime category.",
inputs: [
{
type: "text",
key: "search_threshold",
defaultValue: 6,
name: "Search Threshold. Increase if you often cannot find subtitles for your Anime. Note that increasing the value will decrease the performance of the search for each Episode.",
},
],
},
{ {
key: "argenteam_dump", key: "argenteam_dump",
name: "Argenteam Dump", name: "Argenteam Dump",
@ -538,3 +552,24 @@ export const ProviderList: Readonly<ProviderInfo[]> = [
description: "Chinese Subtitles Provider. Anti-captcha required.", description: "Chinese Subtitles Provider. Anti-captcha required.",
}, },
]; ];
export const IntegrationList: Readonly<ProviderInfo[]> = [
{
key: "anidb",
name: "AniDB",
description:
"AniDB is non-profit database of anime information that is freely open to the public.",
inputs: [
{
type: "text",
key: "api_client",
name: "API Client",
},
{
type: "text",
key: "api_client_ver",
name: "API Client Version",
},
],
},
];

@ -7,7 +7,7 @@ import pkg_resources
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../libs/")) sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../libs/"))
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../bazarr/")) sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../bazarr/"))
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../custom_libs/"))
def pytest_report_header(config): def pytest_report_header(config):
conflicting_packages = _get_conflicting("libs") conflicting_packages = _get_conflicting("libs")

@ -0,0 +1,756 @@
[
{
"id": 608526,
"title": "[EMBER] Ore dake Level Up na Ken S01E12 [1080p] [HEVC WEBRip] (Solo Leveling)",
"link": "https://animetosho.org/view/ember-ore-dake-level-up-na-ken-s01e12.n1796835",
"timestamp": 1711853493,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796835,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/f9670720a5142ec31aa8e3715745f1392e3ffd5b/%5BEMBER%5D%20Solo%20Leveling%20-%2012.torrent",
"torrent_name": "[EMBER] Solo Leveling - 12.mkv",
"info_hash": "f9670720a5142ec31aa8e3715745f1392e3ffd5b",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:7FTQOIFFCQXMGGVI4NYVORPRHEXD77K3&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BEMBER%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20S01E12%20%5B1080p%5D%20%5BHEVC%20WEBRip%5D%20%28Solo%20Leveling%29",
"seeders": 316,
"leechers": 24,
"torrent_downloaded_count": 1164,
"tracker_updated": 1711872554,
"nzb_url": "https://animetosho.org/storage/nzbs/0009490e/%5BEMBER%5D%20Solo%20Leveling%20-%2012.nzb",
"total_size": 369572311,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608516,
"title": "[Anime Time] Solo Leveling - 12 [1080p][HEVC 10bit x265][AAC][Multi Sub] [Weekly] Ore dake Level Up na Ken",
"link": "https://animetosho.org/view/anime-time-solo-leveling-12-1080p-hevc-10bit.n1796824",
"timestamp": 1711851382,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796824,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/db16234b7aba70d2d901bde30fb0aa899589da47/%5BAnime%20Time%5D%20Solo%20Leveling%20-%2012%20%5B1080p%5D%5BHEVC%2010bit%20x265%5D%5BAAC%5D%5BMulti%20Sub%5D.torrent",
"torrent_name": "[Anime Time] Solo Leveling - 12 [1080p][HEVC 10bit x265][AAC][Multi Sub].mkv",
"info_hash": "db16234b7aba70d2d901bde30fb0aa899589da47",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:3MLCGS32XJYNFWIBXXRQ7MFKRGKYTWSH&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=%5BAnime%20Time%5D%20Solo%20Leveling%20-%2012%20%5B1080p%5D%5BHEVC%2010bit%20x265%5D%5BAAC%5D%5BMulti%20Sub%5D%20%5BWeekly%5D%20Ore%20dake%20Level%20Up%20na%20Ken",
"seeders": 85,
"leechers": 11,
"torrent_downloaded_count": 436,
"tracker_updated": 1711892085,
"nzb_url": "https://animetosho.org/storage/nzbs/00094904/%5BAnime%20Time%5D%20Solo%20Leveling%20-%2012%20%5B1080p%5D%5BHEVC%2010bit%20x265%5D%5BAAC%5D%5BMulti%20Sub%5D.nzb",
"total_size": 588022366,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "http://animetime.cc/"
},
{
"id": 608491,
"title": "Solo Leveling - 12 (WEB 4K | 2160p AV1 AAC).mkv",
"link": "https://animetosho.org/view/solo-leveling-12-web-4k-2160p-av1-aac-mkv.d595164",
"timestamp": 1711845852,
"status": "complete",
"tosho_id": null,
"nyaa_id": null,
"nyaa_subdom": null,
"anidex_id": 595164,
"torrent_url": "https://animetosho.org/storage/torrent/cfc631026a1837ef70ff6993aa9c1b1304e0d75b/Solo%20Leveling%20-%2012%20%28WEB%204K%20AV1%20AAC%29.torrent",
"torrent_name": "Solo Leveling - 12 (WEB 4K AV1 AAC).mkv",
"info_hash": "cfc631026a1837ef70ff6993aa9c1b1304e0d75b",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:Z7DDCATKDA3664H7NGJ2VHA3CMCOBV23&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Ftracker.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker-udp.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&dn=Solo%20Leveling%20-%2012%20%28WEB%204K%20%7C%202160p%20AV1%20AAC%29.mkv",
"seeders": 11,
"leechers": 0,
"torrent_downloaded_count": 118,
"tracker_updated": 1712027991,
"nzb_url": "https://animetosho.org/storage/nzbs/000948eb/Solo%20Leveling%20-%2012%20%28WEB%204K%20AV1%20AAC%29.nzb",
"total_size": 586875995,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608439,
"title": "[SanKyuu] Ore dake Level Up na Ken (Solo Leveling) - 12 [WEB 1080p][AV1][AAC E-AC3][Multi-Sub]",
"link": "https://animetosho.org/view/sankyuu-ore-dake-level-up-na-ken-solo.n1796722",
"timestamp": 1711836670,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796722,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/fb8193f9da38b06a444e2a50966c3fbefdb7dcde/%5BSanKyuu%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20%28Solo%20Leveling%29%20-%2012%20%5BWEB%201080p%20AV1%20AAC%20E-AC3%5D%20%5B325A372A%5D.torrent",
"torrent_name": "[SanKyuu] Ore dake Level Up na Ken (Solo Leveling) - 12 [WEB 1080p AV1 AAC E-AC3] [325A372A].mkv",
"info_hash": "fb8193f9da38b06a444e2a50966c3fbefdb7dcde",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:7OAZH6O2HCYGURCOFJIJM3B7X363PXG6&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker-udp.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&dn=%5BSanKyuu%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20%28Solo%20Leveling%29%20-%2012%20%5BWEB%201080p%5D%5BAV1%5D%5BAAC%20E-AC3%5D%5BMulti-Sub%5D",
"seeders": 51,
"leechers": 2,
"torrent_downloaded_count": 522,
"tracker_updated": 1711939563,
"nzb_url": "https://animetosho.org/storage/nzbs/000948b7/%5BSanKyuu%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20%28Solo%20Leveling%29%20-%2012%20%5BWEB%201080p%20AV1%20AAC%20E-AC3%5D%20%5B325A372A%5D.nzb",
"total_size": 477160034,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608407,
"title": "[NeoLX] Solo Leveling - S01E12 [END][1080p x264 10bits AAC][Multiple Subtitles].mkv",
"link": "https://animetosho.org/view/neolx-solo-leveling-s01e12-end-1080p-x264-10bits.1859288",
"timestamp": 1711831500,
"status": "complete",
"tosho_id": 1859288,
"nyaa_id": null,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/4a053ad27c1ca38db68b77f1a81860948bec93cb/%5BNeoLX%5D%20Solo%20Leveling%20-%20S01E12%20%5BEND%5D%5B1080p%20x264%2010bits%20AAC%5D%5BMultiple%20Subtitles%5D.torrent",
"torrent_name": "[NeoLX] Solo Leveling - S01E12 [END][1080p x264 10bits AAC][Multiple Subtitles].mkv",
"info_hash": "4a053ad27c1ca38db68b77f1a81860948bec93cb",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:JICTVUT4DSRY3NULO7Y2QGDASSF6ZE6L&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.anirena.com%3A80%2Fannounce&tr=http%3A%2F%2Ftracker.acgnx.se%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&dn=%5BNeoLX%5D%20Solo%20Leveling%20-%20S01E12%20%5BEND%5D%5B1080p%20x264%2010bits%20AAC%5D%5BMultiple%20Subtitles%5D.mkv",
"seeders": 22,
"leechers": 0,
"torrent_downloaded_count": 444,
"tracker_updated": 1712027991,
"nzb_url": "https://animetosho.org/storage/nzbs/00094897/%5BNeoLX%5D%20Solo%20Leveling%20-%20S01E12%20%5BEND%5D%5B1080p%20x264%2010bits%20AAC%5D%5BMultiple%20Subtitles%5D.nzb",
"total_size": 1775949490,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608385,
"title": "[CameEsp] Solo Leveling - 12 [1080p][ESP-ENG][mkv].mkv",
"link": "https://animetosho.org/view/cameesp-solo-leveling-12-1080p-esp-eng-mkv-mkv.1859281",
"timestamp": 1711829220,
"status": "skipped",
"tosho_id": 1859281,
"nyaa_id": 1796635,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/7e683310c0a03a8d94ad4a1aaac0b7f97d98e70e/%5BCameEsp%5D%20Solo%20Leveling%20-%2012%20%5B1080p%5D%5BESP-ENG%5D%5Bmkv%5D.torrent",
"torrent_name": "",
"info_hash": "7e683310c0a03a8d94ad4a1aaac0b7f97d98e70e",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:PZUDGEGAUA5I3FFNJINKVQFX7F6ZRZYO&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&dn=%5BCameEsp%5D%20Solo%20Leveling%20-%2012%20%5B1080p%5D%5BESP-ENG%5D%5Bmkv%5D.mkv",
"seeders": 178,
"leechers": 21,
"torrent_downloaded_count": 541,
"tracker_updated": null,
"nzb_url": null,
"total_size": 1448914325,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://linkr.bio/CAME_CameEsp"
},
{
"id": 608386,
"title": "[CameEsp] Solo Leveling - 12 [720p][ESP-ENG][mkv].mkv",
"link": "https://animetosho.org/view/cameesp-solo-leveling-12-720p-esp-eng-mkv-mkv.1859282",
"timestamp": 1711829220,
"status": "skipped",
"tosho_id": 1859282,
"nyaa_id": 1796636,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/3b35bdf9880489b38f7a318cca8fe02ff31e430c/%5BCameEsp%5D%20Solo%20Leveling%20-%2012%20%5B720p%5D%5BESP-ENG%5D%5Bmkv%5D.torrent",
"torrent_name": "",
"info_hash": "3b35bdf9880489b38f7a318cca8fe02ff31e430c",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:HM2336MIASE3HD32GGGMVD7AF7ZR4QYM&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.anirena.com%3A80%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&dn=%5BCameEsp%5D%20Solo%20Leveling%20-%2012%20%5B720p%5D%5BESP-ENG%5D%5Bmkv%5D.mkv",
"seeders": 35,
"leechers": 10,
"torrent_downloaded_count": 160,
"tracker_updated": null,
"nzb_url": null,
"total_size": 737663624,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://linkr.bio/CAME_CameEsp"
},
{
"id": 608370,
"title": "[Valenciano] Ore dake Level Up na Ken - 12 [1080p][AV1 10bit][AAC][Multi-Sub] (Weekly).mkv",
"link": "https://animetosho.org/view/valenciano-ore-dake-level-up-na-ken-12.n1796530",
"timestamp": 1711826614,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796530,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/f89a9ffa23f5fc3321f3e2c476dbccbf0435fc98/%5BValenciano%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BAV1%2010bit%5D%5BAAC%5D%5BMulti-Sub%5D%20%28Weekly%29.torrent",
"torrent_name": "[Valenciano] Ore dake Level Up na Ken - 12 [1080p][AV1 10bit][AAC][Multi-Sub] (Weekly).mkv",
"info_hash": "f89a9ffa23f5fc3321f3e2c476dbccbf0435fc98",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:7CNJ76RD6X6DGIPT4LCHNW6MX4CDL7EY&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BValenciano%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BAV1%2010bit%5D%5BAAC%5D%5BMulti-Sub%5D%20%28Weekly%29.mkv",
"seeders": 22,
"leechers": 2,
"torrent_downloaded_count": 240,
"tracker_updated": 1711940503,
"nzb_url": "https://animetosho.org/storage/nzbs/00094872/%5BValenciano%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BAV1%2010bit%5D%5BAAC%5D%5BMulti-Sub%5D%20%28Weekly%29.nzb",
"total_size": 427930434,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/83dRFDFDp7"
},
{
"id": 608368,
"title": "[Erai-raws] Ore dake Level Up na Ken - 12 [1080p][HEVC][Multiple Subtitle] [ENG][POR-BR][SPA-LA][SPA][ARA][FRE][GER][ITA][RUS]",
"link": "https://animetosho.org/view/erai-raws-ore-dake-level-up-na-ken.n1796524",
"timestamp": 1711825169,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796524,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/8009ee0e9b20732f44df9bf5eaef926df0814d68/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BHEVC%5D%5BMultiple%20Subtitle%5D%5BB46F650F%5D.torrent",
"torrent_name": "[Erai-raws] Ore dake Level Up na Ken - 12 [1080p][HEVC][Multiple Subtitle][B46F650F].mkv",
"info_hash": "8009ee0e9b20732f44df9bf5eaef926df0814d68",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:QAE64DU3EBZS6RG7TP26V34SNXYICTLI&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fopen.acgnxtracker.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BHEVC%5D%5BMultiple%20Subtitle%5D%20%5BENG%5D%5BPOR-BR%5D%5BSPA-LA%5D%5BSPA%5D%5BARA%5D%5BFRE%5D%5BGER%5D%5BITA%5D%5BRUS%5D",
"seeders": 298,
"leechers": 12,
"torrent_downloaded_count": 2398,
"tracker_updated": 1711933623,
"nzb_url": "https://animetosho.org/storage/nzbs/00094870/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BHEVC%5D%5BMultiple%20Subtitle%5D%5BB46F650F%5D.nzb",
"total_size": 1073028408,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399105,
"article_url": null,
"article_title": null,
"website_url": "https://www.erai-raws.info/anime-list/ore-dake-level-up-na-ken/"
},
{
"id": 608349,
"title": "[DKB] Solo Leveling - S01E12 [1080p][END][HEVC x265 10bit][Multi-Subs][weekly]",
"link": "https://animetosho.org/view/dkb-solo-leveling-s01e12-1080p-end-hevc-x265.n1796502",
"timestamp": 1711823055,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796502,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/d89e1a3b415c0b569481b06dbbe58d936f2e6f0a/%5BDKB%5D%20Solo%20Leveling%20-%20S01E12%20%5B1080p%5D%5BEND%5D%5BHEVC%20x265%2010bit%5D%5BMulti-Subs%5D.torrent",
"torrent_name": "[DKB] Solo Leveling - S01E12 [1080p][END][HEVC x265 10bit][Multi-Subs].mkv",
"info_hash": "d89e1a3b415c0b569481b06dbbe58d936f2e6f0a",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:3CPBUO2BLQFVNFEBWBW3XZMNSNXS43YK&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&dn=%5BDKB%5D%20Solo%20Leveling%20-%20S01E12%20%5B1080p%5D%5BEND%5D%5BHEVC%20x265%2010bit%5D%5BMulti-Subs%5D%5Bweekly%5D",
"seeders": 153,
"leechers": 9,
"torrent_downloaded_count": 1010,
"tracker_updated": 1711922054,
"nzb_url": "https://animetosho.org/storage/nzbs/0009485d/%5BDKB%5D%20Solo%20Leveling%20-%20S01E12%20%5B1080p%5D%5BEND%5D%5BHEVC%20x265%2010bit%5D%5BMulti-Subs%5D.nzb",
"total_size": 665460303,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399329,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/ZBQCQ7u"
},
{
"id": 608347,
"title": "[ASW] Solo Leveling - 12 [1080p HEVC x265 10Bit][AAC]",
"link": "https://animetosho.org/view/asw-solo-leveling-12-1080p-hevc-x265-10bit-aac.n1796496",
"timestamp": 1711822239,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796496,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/78d41db42271123d520f971b71a67d970cfdb64c/%5BASW%5D%20Solo%20Leveling%20-%2012%20%5B1080p%20HEVC%5D%5BE1A01A3E%5D.torrent",
"torrent_name": "[ASW] Solo Leveling - 12 [1080p HEVC][E1A01A3E].mkv",
"info_hash": "78d41db42271123d520f971b71a67d970cfdb64c",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:PDKB3NBCOEJD2UQPS4NXDJT5S4GP3NSM&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BASW%5D%20Solo%20Leveling%20-%2012%20%5B1080p%20HEVC%20x265%2010Bit%5D%5BAAC%5D",
"seeders": 689,
"leechers": 212,
"torrent_downloaded_count": 1960,
"tracker_updated": null,
"nzb_url": "https://animetosho.org/storage/nzbs/0009485b/%5BASW%5D%20Solo%20Leveling%20-%2012%20%5B1080p%20HEVC%5D%5BE1A01A3E%5D.nzb",
"total_size": 455351405,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399037,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/6XnYdWP"
},
{
"id": 608346,
"title": "[Tenrai-Sensei] Solo Leveling - S01E12 - Arise [Web][1080p][HEVC 10bit x265] Ore dake Level Up na Ken",
"link": "https://animetosho.org/view/tenrai-sensei-solo-leveling-s01e12-arise-web-1080p.n1796495",
"timestamp": 1711822029,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796495,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/8b22acf6c18e9ac56f0af00a6061918712d8d992/Solo%20Leveling%20-%20S01E12%20-%20Arise.torrent",
"torrent_name": "Solo Leveling - S01E12 - Arise.mkv",
"info_hash": "8b22acf6c18e9ac56f0af00a6061918712d8d992",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:RMRKZ5WBR2NMK3YK6AFGAYMRQ4JNRWMS&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Fopentracker.i2p.rocks%3A6969%2Fannounce&dn=%5BTenrai-Sensei%5D%20Solo%20Leveling%20-%20S01E12%20-%20Arise%20%5BWeb%5D%5B1080p%5D%5BHEVC%2010bit%20x265%5D%20Ore%20dake%20Level%20Up%20na%20Ken",
"seeders": 1000000000,
"leechers": 1000000000,
"torrent_downloaded_count": 3028,
"tracker_updated": null,
"nzb_url": "https://animetosho.org/storage/nzbs/0009485a/Solo%20Leveling%20-%20S01E12%20-%20Arise.nzb",
"total_size": 574082022,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399753,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/WucPeE5ume"
},
{
"id": 608339,
"title": "[Judas] Ore dake Level Up na Ken (Solo Leveling) - S01E12 [1080p][HEVC x265 10bit][Multi-Subs] (Weekly)",
"link": "https://animetosho.org/view/judas-ore-dake-level-up-na-ken-solo.n1796483",
"timestamp": 1711821551,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796483,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/aa0f1690f5bff99891883dbbde61e4c59920aa5e/%5BJudas%5D%20Solo%20Leveling%20-%20S01E12.torrent",
"torrent_name": "[Judas] Solo Leveling - S01E12.mkv",
"info_hash": "aa0f1690f5bff99891883dbbde61e4c59920aa5e",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:VIHRNEHVX74ZREMIHW554YPEYWMSBKS6&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BJudas%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20%28Solo%20Leveling%29%20-%20S01E12%20%5B1080p%5D%5BHEVC%20x265%2010bit%5D%5BMulti-Subs%5D%20%28Weekly%29",
"seeders": 422,
"leechers": 20,
"torrent_downloaded_count": 3434,
"tracker_updated": 1711874024,
"nzb_url": "https://animetosho.org/storage/nzbs/00094853/%5BJudas%5D%20Solo%20Leveling%20-%20S01E12.nzb",
"total_size": 485334036,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399248,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/vbJ7RTn"
},
{
"id": 608338,
"title": "[Raze] Solo Leveling (Ore dake Level Up na Ken) - 12 x265 10bit 1080p 143.8561fps.mkv",
"link": "https://animetosho.org/view/raze-solo-leveling-ore-dake-level-up-na.n1796482",
"timestamp": 1711821474,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796482,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/bcebcb468c1a2557404afa18f4948cb4fded5c17/%5BRaze%5D%20Solo%20Leveling%20%28Ore%20dake%20Level%20Up%20na%20Ken%29%20-%2012%20x265%2010bit%201080p%20143.8561fps.torrent",
"torrent_name": "[Raze] Solo Leveling (Ore dake Level Up na Ken) - 12 x265 10bit 1080p 143.8561fps.mkv",
"info_hash": "bcebcb468c1a2557404afa18f4948cb4fded5c17",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:XTV4WRUMDISVOQCK7IMPJFEMWT662XAX&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BRaze%5D%20Solo%20Leveling%20%28Ore%20dake%20Level%20Up%20na%20Ken%29%20-%2012%20x265%2010bit%201080p%20143.8561fps.mkv",
"seeders": 15,
"leechers": 1,
"torrent_downloaded_count": 216,
"tracker_updated": 1711932770,
"nzb_url": "https://animetosho.org/storage/nzbs/00094852/%5BRaze%5D%20Solo%20Leveling%20%28Ore%20dake%20Level%20Up%20na%20Ken%29%20-%2012%20x265%2010bit%201080p%20143.8561fps.nzb",
"total_size": 987255128,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/72ZKssY"
},
{
"id": 608324,
"title": "Ore dake Level Up na Ken - S01E12 - 720p WEB x264 -NanDesuKa (CR).mkv",
"link": "https://animetosho.org/view/ore-dake-level-up-na-ken-s01e12-720p.n1796469",
"timestamp": 1711817371,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796469,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/514d25bbb699f0cd50ba82663f4d9972e42aec7e/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20720p%20WEB%20x264%20-NanDesuKa%20%28CR%29.torrent",
"torrent_name": "Ore dake Level Up na Ken - S01E12 - 720p WEB x264 -NanDesuKa (CR).mkv",
"info_hash": "514d25bbb699f0cd50ba82663f4d9972e42aec7e",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:KFGSLO5WTHYM2UF2QJTD6TMZOLSCV3D6&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20720p%20WEB%20x264%20-NanDesuKa%20%28CR%29.mkv",
"seeders": 24,
"leechers": 1,
"torrent_downloaded_count": 147,
"tracker_updated": 1711941873,
"nzb_url": "https://animetosho.org/storage/nzbs/00094844/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20720p%20WEB%20x264%20-NanDesuKa%20%28CR%29.nzb",
"total_size": 733563952,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608323,
"title": "Ore dake Level Up na Ken - S01E12 - 1080p WEB x264 -NanDesuKa (CR).mkv",
"link": "https://animetosho.org/view/ore-dake-level-up-na-ken-s01e12-1080p.n1796468",
"timestamp": 1711817278,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796468,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/2368c8599cb9dfcd15c4133c195a026c0c061452/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%201080p%20WEB%20x264%20-NanDesuKa%20%28CR%29.torrent",
"torrent_name": "Ore dake Level Up na Ken - S01E12 - 1080p WEB x264 -NanDesuKa (CR).mkv",
"info_hash": "2368c8599cb9dfcd15c4133c195a026c0c061452",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:ENUMQWM4XHP42FOECM6BSWQCNQGAMFCS&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%201080p%20WEB%20x264%20-NanDesuKa%20%28CR%29.mkv",
"seeders": 43,
"leechers": 1,
"torrent_downloaded_count": 325,
"tracker_updated": 1711950739,
"nzb_url": "https://animetosho.org/storage/nzbs/00094843/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%201080p%20WEB%20x264%20-NanDesuKa%20%28CR%29.nzb",
"total_size": 1444814636,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608322,
"title": "Ore dake Level Up na Ken - S01E12 - 480p WEB x264 -NanDesuKa (CR).mkv",
"link": "https://animetosho.org/view/ore-dake-level-up-na-ken-s01e12-480p.n1796467",
"timestamp": 1711817275,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796467,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/65c34046223f78409badf5138035708875dae046/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20480p%20WEB%20x264%20-NanDesuKa%20%28CR%29.torrent",
"torrent_name": "Ore dake Level Up na Ken - S01E12 - 480p WEB x264 -NanDesuKa (CR).mkv",
"info_hash": "65c34046223f78409badf5138035708875dae046",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:MXBUARRCH54EBG5N6UJYANLQRB25VYCG&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20480p%20WEB%20x264%20-NanDesuKa%20%28CR%29.mkv",
"seeders": 2,
"leechers": 1,
"torrent_downloaded_count": 47,
"tracker_updated": 1711939543,
"nzb_url": "https://animetosho.org/storage/nzbs/00094842/Ore%20dake%20Level%20Up%20na%20Ken%20-%20S01E12%20-%20480p%20WEB%20x264%20-NanDesuKa%20%28CR%29.nzb",
"total_size": 379888841,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": null
},
{
"id": 608321,
"title": "[ToonsHub] Solo Leveling E12 Arise 2160p B-Global WEB-DL x264 (Multi-Subs)",
"link": "https://animetosho.org/view/toonshub-solo-leveling-e12-arise-2160p-b-global.n1796464",
"timestamp": 1711816495,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796464,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/953e7663ac91c946ee46efd1f00c544a81ac5210/Solo%20Leveling%20E12%20Arise%202160p%20B-Global%20WEB-DL%20x264%20%5BJapanese%5D%20%28AAC%202.0%29%20MSubs_ToonsHub_.torrent",
"torrent_name": "Solo Leveling E12 Arise 2160p B-Global WEB-DL x264 [Japanese] (AAC 2.0) MSubs_ToonsHub_.mkv",
"info_hash": "953e7663ac91c946ee46efd1f00c544a81ac5210",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:SU7HMY5MSHEUN3SG57I7ADCUJKA2YUQQ&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=%5BToonsHub%5D%20Solo%20Leveling%20E12%20Arise%202160p%20B-Global%20WEB-DL%20x264%20%28Multi-Subs%29",
"seeders": 283,
"leechers": 6,
"torrent_downloaded_count": 2103,
"tracker_updated": 1711940653,
"nzb_url": "https://animetosho.org/storage/nzbs/00094841/Solo%20Leveling%20E12%20Arise%202160p%20B-Global%20WEB-DL%20x264%20%5BJapanese%5D%20%28AAC%202.0%29%20MSubs_ToonsHub_.nzb",
"total_size": 1725930387,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/2mPFKykW4j"
},
{
"id": 608320,
"title": "Solo Leveling S01E12 Arise 1080p CR WEB-DL AAC2.0 H 264-VARYG (Ore dake Level Up na Ken, Multi-Subs)",
"link": "https://animetosho.org/view/solo-leveling-s01e12-arise-1080p-cr-web-dl.n1796463",
"timestamp": 1711816461,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796463,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/e8c25942e297bfd38515d785ca82e0dac7a09688/Solo.Leveling.S01E12.Arise.1080p.CR.WEB-DL.AAC2.0.H.264-VARYG.torrent",
"torrent_name": "Solo.Leveling.S01E12.Arise.1080p.CR.WEB-DL.AAC2.0.H.264-VARYG.mkv",
"info_hash": "e8c25942e297bfd38515d785ca82e0dac7a09688",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:5DBFSQXCS675HBIV26C4VAXA3LD2BFUI&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=Solo%20Leveling%20S01E12%20Arise%201080p%20CR%20WEB-DL%20AAC2.0%20H%20264-VARYG%20%28Ore%20dake%20Level%20Up%20na%20Ken%2C%20Multi-Subs%29",
"seeders": 476,
"leechers": 78,
"torrent_downloaded_count": 2233,
"tracker_updated": 1711948863,
"nzb_url": "https://animetosho.org/storage/nzbs/00094840/Solo.Leveling.S01E12.Arise.1080p.CR.WEB-DL.AAC2.0.H.264-VARYG.nzb",
"total_size": 1447070929,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://myanimelist.net/anime/52299/"
},
{
"id": 608319,
"title": "[ToonsHub] Solo Leveling E12 Arise 1080p B-Global WEB-DL x264 (Multi-Subs)",
"link": "https://animetosho.org/view/toonshub-solo-leveling-e12-arise-1080p-b-global.n1796462",
"timestamp": 1711816458,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796462,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/adf123922973e4c0f7979ab6d3874d2e2e0e5207/Solo%20Leveling%20E12%20Arise%201080p%20B-Global%20WEB-DL%20x264%20%5BJapanese%5D%20%28AAC%202.0%29%20MSubs_ToonsHub_.torrent",
"torrent_name": "Solo Leveling E12 Arise 1080p B-Global WEB-DL x264 [Japanese] (AAC 2.0) MSubs_ToonsHub_.mkv",
"info_hash": "adf123922973e4c0f7979ab6d3874d2e2e0e5207",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:VXYSHERJOPSMB54XTK3NHB2NFYXA4UQH&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=http%3A%2F%2Fanidex.moe%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&dn=%5BToonsHub%5D%20Solo%20Leveling%20E12%20Arise%201080p%20B-Global%20WEB-DL%20x264%20%28Multi-Subs%29",
"seeders": 112,
"leechers": 2,
"torrent_downloaded_count": 955,
"tracker_updated": 1711941514,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483f/Solo%20Leveling%20E12%20Arise%201080p%20B-Global%20WEB-DL%20x264%20%5BJapanese%5D%20%28AAC%202.0%29%20MSubs_ToonsHub_.nzb",
"total_size": 424813220,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": null,
"article_url": null,
"article_title": null,
"website_url": "https://discord.gg/2mPFKykW4j"
},
{
"id": 608318,
"title": "[Erai-raws] Ore dake Level Up na Ken - 12 [480p][Multiple Subtitle] [ENG][POR-BR][SPA-LA][SPA][ARA][FRE][GER][ITA][RUS]",
"link": "https://animetosho.org/view/erai-raws-ore-dake-level-up-na-ken.n1796461",
"timestamp": 1711816354,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796461,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/5b4a6ec6c71d1033f336bdf027fc3f56dbb6544b/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B480p%5D%5BMultiple%20Subtitle%5D%5B348538A9%5D.torrent",
"torrent_name": "[Erai-raws] Ore dake Level Up na Ken - 12 [480p][Multiple Subtitle][348538A9].mkv",
"info_hash": "5b4a6ec6c71d1033f336bdf027fc3f56dbb6544b",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:LNFG5RWHDUIDH4ZWXXYCP7B7K3N3MVCL&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fopen.acgnxtracker.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B480p%5D%5BMultiple%20Subtitle%5D%20%5BENG%5D%5BPOR-BR%5D%5BSPA-LA%5D%5BSPA%5D%5BARA%5D%5BFRE%5D%5BGER%5D%5BITA%5D%5BRUS%5D",
"seeders": 57,
"leechers": 1,
"torrent_downloaded_count": 593,
"tracker_updated": 1711935570,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483e/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B480p%5D%5BMultiple%20Subtitle%5D%5B348538A9%5D.nzb",
"total_size": 390242548,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399156,
"article_url": null,
"article_title": null,
"website_url": "https://www.erai-raws.info/anime-list/ore-dake-level-up-na-ken/"
},
{
"id": 608317,
"title": "[Erai-raws] Ore dake Level Up na Ken - 12 [720p][Multiple Subtitle] [ENG][POR-BR][SPA-LA][SPA][ARA][FRE][GER][ITA][RUS]",
"link": "https://animetosho.org/view/erai-raws-ore-dake-level-up-na-ken.n1796459",
"timestamp": 1711816335,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796459,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/371911c245694044bb84dfa1cb162c5922e46090/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B720p%5D%5BMultiple%20Subtitle%5D%5BFF79133E%5D.torrent",
"torrent_name": "[Erai-raws] Ore dake Level Up na Ken - 12 [720p][Multiple Subtitle][FF79133E].mkv",
"info_hash": "371911c245694044bb84dfa1cb162c5922e46090",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:G4MRDQSFNFAEJO4E36Q4WFRMLEROIYEQ&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fopen.acgnxtracker.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B720p%5D%5BMultiple%20Subtitle%5D%20%5BENG%5D%5BPOR-BR%5D%5BSPA-LA%5D%5BSPA%5D%5BARA%5D%5BFRE%5D%5BGER%5D%5BITA%5D%5BRUS%5D",
"seeders": 244,
"leechers": 8,
"torrent_downloaded_count": 1819,
"tracker_updated": 1711891219,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483d/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B720p%5D%5BMultiple%20Subtitle%5D%5BFF79133E%5D.nzb",
"total_size": 743917601,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399115,
"article_url": null,
"article_title": null,
"website_url": "https://www.erai-raws.info/anime-list/ore-dake-level-up-na-ken/"
},
{
"id": 608316,
"title": "[Erai-raws] Ore dake Level Up na Ken - 12 [1080p][Multiple Subtitle] [ENG][POR-BR][SPA-LA][SPA][ARA][FRE][GER][ITA][RUS]",
"link": "https://animetosho.org/view/erai-raws-ore-dake-level-up-na-ken.n1796456",
"timestamp": 1711816309,
"status": "complete",
"tosho_id": null,
"nyaa_id": 1796456,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/927f32f78956475287b80b7a3b8069d775b3bb74/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BMultiple%20Subtitle%5D%5BC8116259%5D.torrent",
"torrent_name": "[Erai-raws] Ore dake Level Up na Ken - 12 [1080p][Multiple Subtitle][C8116259].mkv",
"info_hash": "927f32f78956475287b80b7a3b8069d775b3bb74",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:SJ7TF54JKZDVFB5YBN5DXADJ2523HO3U&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fopen.acgnxtracker.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&dn=%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BMultiple%20Subtitle%5D%20%5BENG%5D%5BPOR-BR%5D%5BSPA-LA%5D%5BSPA%5D%5BARA%5D%5BFRE%5D%5BGER%5D%5BITA%5D%5BRUS%5D",
"seeders": 1054,
"leechers": 30,
"torrent_downloaded_count": 7259,
"tracker_updated": 1711904421,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483c/%5BErai-raws%5D%20Ore%20dake%20Level%20Up%20na%20Ken%20-%2012%20%5B1080p%5D%5BMultiple%20Subtitle%5D%5BC8116259%5D.nzb",
"total_size": 1455168235,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399072,
"article_url": null,
"article_title": null,
"website_url": "https://www.erai-raws.info/anime-list/ore-dake-level-up-na-ken/"
},
{
"id": 608315,
"title": "[SubsPlease] Solo Leveling - 12 (1080p) [5B47BF7E].mkv",
"link": "https://animetosho.org/view/subsplease-solo-leveling-12-1080p-5b47bf7e-mkv.1859208",
"timestamp": 1711816291,
"status": "complete",
"tosho_id": 1859208,
"nyaa_id": 1796455,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/ac03972f83b13773c7d6c0387969d3873c98fe6e/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%281080p%29%20%5B5B47BF7E%5D.torrent",
"torrent_name": "[SubsPlease] Solo Leveling - 12 (1080p) [5B47BF7E].mkv",
"info_hash": "ac03972f83b13773c7d6c0387969d3873c98fe6e",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:VQBZOL4DWE3XHR6WYA4HS2OTQ46JR7TO&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2710%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710%2Fannounce&dn=%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%281080p%29%20%5B5B47BF7E%5D.mkv",
"seeders": 4800,
"leechers": 126,
"torrent_downloaded_count": 32750,
"tracker_updated": 1711902497,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483b/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%281080p%29%20%5B5B47BF7E%5D.nzb",
"total_size": 1448782755,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3398902,
"article_url": null,
"article_title": null,
"website_url": "https://subsplease.org"
},
{
"id": 608314,
"title": "[SubsPlease] Solo Leveling - 12 (720p) [83538700].mkv",
"link": "https://animetosho.org/view/subsplease-solo-leveling-12-720p-83538700-mkv.1859207",
"timestamp": 1711816270,
"status": "complete",
"tosho_id": 1859207,
"nyaa_id": 1796454,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/5a65737737ea4a6c24c2ef17fb87906f250f2b2b/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28720p%29%20%5B83538700%5D.torrent",
"torrent_name": "[SubsPlease] Solo Leveling - 12 (720p) [83538700].mkv",
"info_hash": "5a65737737ea4a6c24c2ef17fb87906f250f2b2b",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:LJSXG5ZX5JFGYJGC54L7XB4QN4SQ6KZL&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2710%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710%2Fannounce&dn=%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28720p%29%20%5B83538700%5D.mkv",
"seeders": 1155,
"leechers": 51,
"torrent_downloaded_count": 8614,
"tracker_updated": 1711883436,
"nzb_url": "https://animetosho.org/storage/nzbs/0009483a/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28720p%29%20%5B83538700%5D.nzb",
"total_size": 737532022,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3398956,
"article_url": null,
"article_title": null,
"website_url": "https://subsplease.org"
},
{
"id": 608313,
"title": "[SubsPlease] Solo Leveling - 12 (480p) [9FBA731B].mkv",
"link": "https://animetosho.org/view/subsplease-solo-leveling-12-480p-9fba731b-mkv.1859206",
"timestamp": 1711816267,
"status": "complete",
"tosho_id": 1859206,
"nyaa_id": 1796453,
"nyaa_subdom": null,
"anidex_id": null,
"torrent_url": "https://animetosho.org/storage/torrent/071cfac21f433b07e81e43f33f9a869098af4f64/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28480p%29%20%5B9FBA731B%5D.torrent",
"torrent_name": "[SubsPlease] Solo Leveling - 12 (480p) [9FBA731B].mkv",
"info_hash": "071cfac21f433b07e81e43f33f9a869098af4f64",
"info_hash_v2": null,
"magnet_uri": "magnet:?xt=urn:btih:A4OPVQQ7IM5QP2A6IPZT7GUGSCMK6T3E&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2710%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710%2Fannounce&dn=%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28480p%29%20%5B9FBA731B%5D.mkv",
"seeders": 385,
"leechers": 143,
"torrent_downloaded_count": 2467,
"tracker_updated": null,
"nzb_url": "https://animetosho.org/storage/nzbs/00094839/%5BSubsPlease%5D%20Solo%20Leveling%20-%2012%20%28480p%29%20%5B9FBA731B%5D.nzb",
"total_size": 383857166,
"num_files": 1,
"anidb_aid": 17495,
"anidb_eid": 277518,
"anidb_fid": 3399016,
"article_url": null,
"article_title": null,
"website_url": "https://subsplease.org"
}
]

File diff suppressed because one or more lines are too long

@ -0,0 +1,59 @@
#!/usr/bin/env python3
import os
import pytest
from subliminal_patch.core import Episode
from subliminal_patch.providers.animetosho import AnimeToshoProvider
from subzero.language import Language
@pytest.fixture(scope="session")
def anime_episodes():
return {
"frieren_s01e01": Episode(
"Frieren - Beyond Journey's End S01E28 1080p WEB x264 AAC -Tsundere-Raws (CR) (Sousou no Frieren).mkv",
"Frieren: Beyond Journey's End",
1,
28,
source="Web",
series_anidb_id=17617,
series_anidb_episode_id=271418,
series_tvdb_id=424536,
series_imdb_id="tt22248376",
release_group="Tsundere-Raws",
resolution="1080p",
video_codec="H.264",
),
"solo_leveling_s01e10": Episode(
"[New-raws] Ore Dake Level Up na Ken - 12 END [1080p] [AMZN].mkv",
"Solo Leveling",
1,
12,
source="Web",
series_anidb_id=17495,
series_anidb_episode_id=277518,
series_tvdb_id=389597,
series_imdb_id="tt21209876",
release_group="New-raws",
resolution="1080p",
video_codec="H.264",
),
}
def test_list_subtitles(anime_episodes, requests_mock, data):
language = Language("eng")
item = anime_episodes["solo_leveling_s01e10"]
with open(os.path.join(data, 'animetosho_episode_response.json'), "rb") as f:
requests_mock.get(' https://feed.animetosho.org/json?eid=277518', content=f.read())
with open(os.path.join(data, 'animetosho_series_response.json'), "rb") as f:
response = f.read()
requests_mock.get('https://feed.animetosho.org/json?show=torrent&id=608516', content=response)
requests_mock.get('https://feed.animetosho.org/json?show=torrent&id=608526', content=response)
with AnimeToshoProvider(2) as provider:
subtitles = provider.list_subtitles(item, languages={language})
assert len(subtitles) == 2
Loading…
Cancel
Save