mirror of
https://github.com/NoCrypt/migu.git
synced 2026-04-20 08:02:12 +00:00
Merge upstream
This commit is contained in:
parent
ce5f6c88c3
commit
9cfe338333
3 changed files with 43 additions and 19 deletions
|
|
@ -305,19 +305,19 @@ class AnilistClient {
|
|||
// isAdult doesn't need an extra variable, as the title is the same regardless of type, so we re-use the same variable for adult and non-adult requests
|
||||
/** @type {Record<`v${number}`, string>} */
|
||||
const requestVariables = flattenedTitles.reduce((obj, { title, isAdult }, i) => {
|
||||
if (isAdult) return obj
|
||||
if (isAdult && i !== 0) return obj
|
||||
obj[`v${i}`] = title
|
||||
return obj
|
||||
}, {})
|
||||
|
||||
const queryVariables = flattenedTitles.reduce((arr, { isAdult }, i) => {
|
||||
if (isAdult) return arr
|
||||
if (isAdult && i !== 0) return arr
|
||||
arr.push(`$v${i}: String`)
|
||||
return arr
|
||||
}, []).join(', ')
|
||||
const fragmentQueries = flattenedTitles.map(({ year, isAdult }, i) => /* js */`
|
||||
v${i}: Page(perPage: 10) {
|
||||
media(type: ANIME, search: $v${isAdult ? i - 1 : i}, status_in: [RELEASING, FINISHED], isAdult: ${!!isAdult} ${year ? `, seasonYear: ${year}` : ''}) {
|
||||
media(type: ANIME, search: $v${(isAdult && i !== 0) ? i - 1 : i}, status_in: [RELEASING, FINISHED], isAdult: ${!!isAdult} ${year ? `, seasonYear: ${year}` : ''}) {
|
||||
...med
|
||||
}
|
||||
}`)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export default new class AnimeResolver {
|
|||
* @returns {string[]}
|
||||
*/
|
||||
alternativeTitles (title) {
|
||||
const titles = []
|
||||
const titles = new Set()
|
||||
|
||||
let modified = title
|
||||
// preemptively change S2 into Season 2 or 2nd Season, otherwise this will have accuracy issues
|
||||
|
|
@ -33,31 +33,31 @@ export default new class AnimeResolver {
|
|||
if (seasonMatch) {
|
||||
if (Number(seasonMatch[1]) === 1) { // if this is S1, remove the " S1" or " S01"
|
||||
modified = title.replace(/ S(\d+)/, '')
|
||||
titles.push(modified)
|
||||
titles.add(modified)
|
||||
} else {
|
||||
modified = title.replace(/ S(\d+)/, ` ${Number(seasonMatch[1])}${postfix[Number(seasonMatch[1])] || 'th'} Season`)
|
||||
titles.push(modified)
|
||||
titles.push(title.replace(/ S(\d+)/, ` Season ${Number(seasonMatch[1])}`))
|
||||
titles.add(modified)
|
||||
titles.add(title.replace(/ S(\d+)/, ` Season ${Number(seasonMatch[1])}`))
|
||||
}
|
||||
} else {
|
||||
titles.push(title)
|
||||
titles.add(title)
|
||||
}
|
||||
|
||||
// remove - :
|
||||
const specialMatch = modified.match(/[-:]/g)
|
||||
if (specialMatch) {
|
||||
modified = modified.replace(/[-:]/g, '')
|
||||
titles.push(modified)
|
||||
modified = modified.replace(/[-:]/g, '').replace(/[ ]{2,}/, ' ')
|
||||
titles.add(modified)
|
||||
}
|
||||
|
||||
// remove (TV)
|
||||
const tvMatch = modified.match(/\(TV\)/)
|
||||
if (tvMatch) {
|
||||
modified = modified.replace('(TV)', '')
|
||||
titles.push(modified)
|
||||
titles.add(modified)
|
||||
}
|
||||
|
||||
return titles
|
||||
return [...titles]
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -73,8 +73,10 @@ export default new class AnimeResolver {
|
|||
return titleObjects
|
||||
}).flat()
|
||||
|
||||
for (const [key, media] of await anilistClient.alSearchCompound(titleObjects)) {
|
||||
this.animeNameCache[key] = media
|
||||
for (const chunk of chunks(titleObjects, 62)) { // single title has a complexity of 8.1, al limits complexity to 500
|
||||
for (const [key, media] of await anilistClient.alSearchCompound(chunk)) {
|
||||
this.animeNameCache[key] = media
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -97,16 +99,17 @@ export default new class AnimeResolver {
|
|||
if (!fileName) return [{}]
|
||||
const parseObjs = await anitomyscript(fileName)
|
||||
|
||||
const TYPE_EXCLUSIONS = ['ED', 'ENDING', 'NCED', 'NCOP', 'OP', 'OPENING', 'PREVIEW', 'PV']
|
||||
|
||||
/** @type {Record<string, import('anitomyscript').AnitomyResult>} */
|
||||
const uniq = {}
|
||||
for (const obj of parseObjs) {
|
||||
const key = this.getCacheKeyForTitle(obj)
|
||||
if (key in this.animeNameCache) continue
|
||||
if (key in this.animeNameCache) continue // skip already resolved
|
||||
if (obj.anime_type && TYPE_EXCLUSIONS.includes(obj.anime_type.toUpperCase())) continue // skip non-episode media
|
||||
uniq[key] = obj
|
||||
}
|
||||
for (const chunk of chunks(Object.values(uniq), 50)) {
|
||||
await this.findAnimesByTitle(chunk)
|
||||
}
|
||||
await this.findAnimesByTitle(Object.values(uniq))
|
||||
|
||||
const fileAnimes = []
|
||||
for (const parseObj of parseObjs) {
|
||||
|
|
|
|||
|
|
@ -5947,6 +5947,7 @@ snapshots:
|
|||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
'@ionic/utils-fs@3.1.7':
|
||||
dependencies:
|
||||
|
|
@ -6043,6 +6044,7 @@ snapshots:
|
|||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
'@ionic/utils-terminal@2.3.3':
|
||||
dependencies:
|
||||
|
|
@ -6057,6 +6059,7 @@ snapshots:
|
|||
wrap-ansi: 7.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
'@ionic/utils-terminal@2.3.4':
|
||||
dependencies:
|
||||
|
|
@ -7198,6 +7201,7 @@ snapshots:
|
|||
bplist-parser@0.3.2:
|
||||
dependencies:
|
||||
big-integer: 1.6.52
|
||||
dev: true
|
||||
|
||||
brace-expansion@1.1.11:
|
||||
dependencies:
|
||||
|
|
@ -7668,7 +7672,7 @@ snapshots:
|
|||
debug: 4.3.6
|
||||
elementtree: 0.1.7
|
||||
sharp: 0.29.3
|
||||
tslib: 2.6.2
|
||||
tslib: 2.6.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
|
@ -8086,6 +8090,7 @@ snapshots:
|
|||
elementtree@0.1.7:
|
||||
dependencies:
|
||||
sax: 1.1.4
|
||||
dev: true
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
|
||||
|
|
@ -8531,6 +8536,7 @@ snapshots:
|
|||
fd-slicer@1.1.0:
|
||||
dependencies:
|
||||
pend: 1.2.0
|
||||
dev: true
|
||||
|
||||
fetch-blob@3.2.0:
|
||||
dependencies:
|
||||
|
|
@ -8660,6 +8666,7 @@ snapshots:
|
|||
graceful-fs: 4.2.11
|
||||
jsonfile: 6.1.0
|
||||
universalify: 2.0.1
|
||||
dev: true
|
||||
|
||||
fs-minipass@1.2.7:
|
||||
dependencies:
|
||||
|
|
@ -8668,6 +8675,7 @@ snapshots:
|
|||
fs-minipass@2.1.0:
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: true
|
||||
|
||||
fs-native-extensions@1.2.7:
|
||||
dependencies:
|
||||
|
|
@ -8805,6 +8813,7 @@ snapshots:
|
|||
minimatch: 8.0.4
|
||||
minipass: 4.2.8
|
||||
path-scurry: 1.11.1
|
||||
dev: true
|
||||
|
||||
global-agent@3.0.0:
|
||||
dependencies:
|
||||
|
|
@ -9259,6 +9268,7 @@ snapshots:
|
|||
is-wsl@2.2.0:
|
||||
dependencies:
|
||||
is-docker: 2.2.1
|
||||
dev: true
|
||||
|
||||
is-wsl@3.1.0:
|
||||
dependencies:
|
||||
|
|
@ -9616,6 +9626,7 @@ snapshots:
|
|||
minimatch@8.0.4:
|
||||
dependencies:
|
||||
brace-expansion: 2.0.1
|
||||
dev: true
|
||||
|
||||
minimatch@9.0.3:
|
||||
dependencies:
|
||||
|
|
@ -9641,6 +9652,7 @@ snapshots:
|
|||
minipass@3.3.6:
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
minipass@4.2.8: {}
|
||||
|
||||
|
|
@ -9656,6 +9668,7 @@ snapshots:
|
|||
dependencies:
|
||||
minipass: 3.3.6
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
mkdirp-classic@0.5.3: {}
|
||||
|
||||
|
|
@ -9703,6 +9716,7 @@ snapshots:
|
|||
yauzl: 2.10.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
natural-compare@1.4.0: {}
|
||||
|
||||
|
|
@ -9907,6 +9921,7 @@ snapshots:
|
|||
define-lazy-prop: 2.0.0
|
||||
is-docker: 2.2.1
|
||||
is-wsl: 2.2.0
|
||||
dev: true
|
||||
|
||||
optionator@0.9.4:
|
||||
dependencies:
|
||||
|
|
@ -10076,6 +10091,7 @@ snapshots:
|
|||
'@xmldom/xmldom': 0.8.10
|
||||
base64-js: 1.5.1
|
||||
xmlbuilder: 15.1.1
|
||||
dev: true
|
||||
|
||||
possible-typed-array-names@1.0.0: {}
|
||||
|
||||
|
|
@ -10166,6 +10182,7 @@ snapshots:
|
|||
dependencies:
|
||||
kleur: 3.0.3
|
||||
sisteransi: 1.0.5
|
||||
dev: true
|
||||
|
||||
proxy-addr@2.0.7:
|
||||
dependencies:
|
||||
|
|
@ -10411,6 +10428,7 @@ snapshots:
|
|||
rimraf@4.4.1:
|
||||
dependencies:
|
||||
glob: 9.3.5
|
||||
dev: true
|
||||
|
||||
rimraf@5.0.10:
|
||||
dependencies:
|
||||
|
|
@ -10714,6 +10732,7 @@ snapshots:
|
|||
ansi-styles: 4.3.0
|
||||
astral-regex: 2.0.0
|
||||
is-fullwidth-code-point: 3.0.0
|
||||
dev: true
|
||||
|
||||
smart-buffer@4.2.0: {}
|
||||
|
||||
|
|
@ -11122,6 +11141,7 @@ snapshots:
|
|||
through2@4.0.2:
|
||||
dependencies:
|
||||
readable-stream: 3.6.2
|
||||
dev: true
|
||||
|
||||
through@2.3.8: {}
|
||||
|
||||
|
|
@ -11718,6 +11738,7 @@ snapshots:
|
|||
dependencies:
|
||||
sax: 1.1.4
|
||||
xmlbuilder: 11.0.1
|
||||
dev: true
|
||||
|
||||
xml2js@0.6.2:
|
||||
dependencies:
|
||||
|
|
|
|||
Loading…
Reference in a new issue