mirror of
https://github.com/NoCrypt/migu.git
synced 2026-03-28 13:28:43 +00:00
feat: add lookup for absolute episode numbering for nyaa
This commit is contained in:
parent
83637c7581
commit
881ca0f0e1
3 changed files with 19 additions and 13 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Miru",
|
||||
"version": "1.1.5",
|
||||
"version": "1.2.0",
|
||||
"author": "ThaUnknown_ <ThaUnknown@users.noreply.github.com>",
|
||||
"main": "src/index.js",
|
||||
"homepage": "https://github.com/ThaUnknown/miru#readme",
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@
|
|||
<script>
|
||||
import { add } from '@/modules/torrent.js'
|
||||
import { episodeRx } from '@/modules/anime.js'
|
||||
import { findEdge, resolveSeason } from '@/modules/anime.js'
|
||||
|
||||
$: parseRss($rss)
|
||||
|
||||
|
|
@ -65,12 +66,17 @@
|
|||
]
|
||||
.join(')|(')
|
||||
.replace(/&/g, '%26')
|
||||
const ep =
|
||||
(media.episodes !== 1 &&
|
||||
(media.status === 'FINISHED' && settings.rssBatch
|
||||
? `"01-${media.episodes}"|"01~${media.episodes}"|"Batch"|"Complete"|"+${episode > 9 ? episode : `0${episode}`}+"|"+${episode > 9 ? episode : `0${episode}`}v"|"S01"`
|
||||
: `"+${episode > 9 ? episode : `0${episode}`}+"|"+${episode > 9 ? episode : `0${episode}`}v"`)) ||
|
||||
''
|
||||
const absolute = !!findEdge(media, 'PREQUEL')?.node && (await resolveSeason({ media, episode, force: true })).offset + episode
|
||||
const episodes = [episode, absolute].filter(e => e)
|
||||
let ep = ''
|
||||
if (media.episodes !== 1) {
|
||||
if (media.status === 'FINISHED' && settings.rssBatch) {
|
||||
ep = `"01-${media.episodes}"|"01~${media.episodes}"|"Batch"|"Complete"|"+${episode > 9 ? episode : `0${episode}`}+"|"+${episode > 9 ? episode : `0${episode}`}v"|"S01"`
|
||||
} else {
|
||||
ep = `(${episodes.map(episode => `"+${episode > 9 ? episode : `0${episode}`}+"|"+${episode > 9 ? episode : `0${episode}`}v"`).join('|')})`
|
||||
}
|
||||
}
|
||||
|
||||
const excl = ['DTS', 'AC3', 'HEVC', 'x265', 'H.265'].join('|')
|
||||
const quality = `"${settings.rssQuality}"` || '"1080p"'
|
||||
const trusted = settings.rssTrusted === true ? 2 : 0
|
||||
|
|
|
|||
|
|
@ -167,20 +167,20 @@ export async function resolveFileMedia (opts) {
|
|||
return fileMedias.length === 1 ? fileMedias[0] : fileMedias
|
||||
}
|
||||
|
||||
function findEdge (media, type, formats = ['TV', 'TV_SHORT'], skip) {
|
||||
const res = media.relations.edges.find(edge => {
|
||||
export function findEdge (media, type, formats = ['TV', 'TV_SHORT'], skip) {
|
||||
let res = media.relations.edges.find(edge => {
|
||||
if (edge.relationType === type) {
|
||||
return formats.includes(edge.node.format)
|
||||
}
|
||||
return false
|
||||
})
|
||||
// this is hit-miss
|
||||
// if (!res && !skip) res = findEdge(media, type, formats = ['TV', 'TV_SHORT', 'MOVIE', 'ONA', 'OVA'], true)
|
||||
if (!res && !skip) res = findEdge(media, type, formats = ['TV', 'TV_SHORT', 'MOVIE'], true)
|
||||
return res
|
||||
}
|
||||
|
||||
// note: this doesnt cover anime which uses partially relative and partially absolute episode number, BUT IT COULD!
|
||||
async function resolveSeason (opts) {
|
||||
export async function resolveSeason (opts) {
|
||||
// media, episode, increment, offset, force
|
||||
if (!opts.media || !opts.episode) throw new Error('No episode or media for season resolve!')
|
||||
|
||||
|
|
@ -188,8 +188,8 @@ async function resolveSeason (opts) {
|
|||
|
||||
const rootHighest = (rootMedia.nextAiringEpisode?.episode || rootMedia.episodes)
|
||||
|
||||
const prequel = !increment && findEdge(media, 'PREQUEL', undefined, force)?.node
|
||||
const sequel = !prequel && (increment || increment == null) && findEdge(media, 'SEQUEL', undefined, force)?.node
|
||||
const prequel = !increment && findEdge(media, 'PREQUEL')?.node
|
||||
const sequel = !prequel && (increment || increment == null) && findEdge(media, 'SEQUEL')?.node
|
||||
const edge = prequel || sequel
|
||||
increment = increment ?? !prequel
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue