fix: exclude unsupported codeds from tosho

fix: undefined episode on cards
This commit is contained in:
ThaUnknown 2023-06-25 11:11:14 +02:00
parent f13848d9f8
commit 98beb4e8e4
5 changed files with 31 additions and 23 deletions

View file

@ -1,6 +1,6 @@
{
"name": "Miru",
"version": "4.1.1",
"version": "4.1.2",
"author": "ThaUnknown_ <ThaUnknown@users.noreply.github.com>",
"description": "Stream anime torrents, real-time with no waiting for downloads.",
"main": "build/main.js",

View file

@ -31,14 +31,16 @@
{data.media?.title.userPreferred || data.parseObject.anime_title}
</div>
</div>
<div class='col-5 d-flex flex-column align-items-end text-right'>
<div class='text-white'>
Episode {data.episode}
{#if data.episode}
<div class='col-5 d-flex flex-column align-items-end text-right'>
<div class='text-white'>
Episode {data.episode}
</div>
<div class='text-muted font-size-12 title overflow-hidden'>
{data.episodeData?.title || ''}
</div>
</div>
<div class='text-muted font-size-12 title overflow-hidden'>
{data.episodeData?.title || ''}
</div>
</div>
{/if}
</div>
</div>
</div>

View file

@ -27,14 +27,16 @@
{data.media?.title.userPreferred || data.parseObject.anime_title}
</div>
</div>
<div class='col-5 d-flex flex-column align-items-end text-right'>
<div class='text-white'>
Episode {data.episode}
{#if data.episode}
<div class='col-5 d-flex flex-column align-items-end text-right'>
<div class='text-white'>
Episode {data.episode}
</div>
<div class='text-muted font-size-12 title overflow-hidden'>
{data.episodeData?.title || ''}
</div>
</div>
<div class='text-muted font-size-12 title overflow-hidden'>
{data.episodeData?.title || ''}
</div>
</div>
{/if}
</div>
<div class='w-full text-muted description overflow-hidden pt-10'>
{data.episodeData?.description || media?.description?.replace(/<[^>]*>/g, '') || ''}

View file

@ -1,23 +1,27 @@
import { mapBestRelease } from '../anime.js'
import { fastPrettyBytes } from '../util.js'
import { exclusions } from '../rss.js'
const toshoURL = decodeURIComponent(atob('aHR0cHM6Ly9mZWVkLmFuaW1ldG9zaG8ub3JnL2pzb24/'))
// TODO: exclude unsupported codecd, query resolution
// TODO query resolution
export default async function ({ media, episode }) {
const mappings = await fetch('https://api.ani.zip/mappings?anilist_id=' + media.id)
const mappings = await fetch('https://api.ani.zip/mappings?anilist_id=' + media.id + '&qx=' + exclusions.map(e => '!' + e).join(' '))
const { episodes, mappings: map } = await mappings.json()
const entries = []
const { anidbEid } = episodes[Number(episode)]
if (episodes[Number(episode)]) {
const { anidbEid } = episodes[Number(episode)]
const torrents = await fetch(toshoURL + 'eid=' + anidbEid)
const torrents = await fetch(toshoURL + 'eid=' + anidbEid)
const entries = (await torrents.json())
entries.push(...await torrents.json())
}
// look for batches
if (media.status === 'FINISHED' && media.episodes && media.episodes !== 1) {
const torrents = await fetch(toshoURL + 'aid=' + map.anidb_id + '&order=size-d')
if (map.anidb_id && (media.status === 'FINISHED' || media.episodes === 1)) {
const torrents = await fetch(toshoURL + 'aid=' + map.anidb_id + '&order=size-d' + '&qx=' + exclusions.map(e => '!' + e).join(' '))
const batches = (await torrents.json()).filter(entry => {
return entry.num_files >= media.episodes

View file

@ -99,7 +99,7 @@ class RSSMediaManager {
await this.lastResult
const res = (await resolveFileMedia(title))[0]
if (res.media?.id) {
res.episodeData = (await getEpisodeMetadataForMedia(res.media)).find(({ number }) => number === res.episode)
res.episodeData = (await getEpisodeMetadataForMedia(res.media))?.find(({ number }) => number === res.episode)
}
res.onclick = () => add(link)
return res