minor fixes and improvements for name resolving, batch support

This commit is contained in:
ThaUnknown 2021-01-22 23:23:27 +01:00
parent a5ba559a3a
commit d9c7073a73

View file

@ -454,7 +454,7 @@ function cardCreator(media, name, episode) {
${media.season || media.seasonYear ? "<span>" + ((media.season.toLowerCase() || "") + " ") + (media.seasonYear || "") + "</span>" : ""} ${media.season || media.seasonYear ? "<span>" + ((media.season.toLowerCase() || "") + " ") + (media.seasonYear || "") + "</span>" : ""}
</p> </p>
</div> </div>
<div class="overflow-y-auto px-15 py-10 bg-very-dark card-desc"> <div class="overflow-y-auto px-15 pb-5 bg-very-dark card-desc">
${media.description} ${media.description}
</div> </div>
<div class="px-15 pb-10 pt-5"> <div class="px-15 pb-10 pt-5">
@ -556,7 +556,7 @@ async function resolveName(name, method, release) {
return store[name] return store[name]
} }
async function resolveName2(opts) { async function resolveFileMedia(opts) {
// opts.fileName opts.method opts.isRelease // opts.fileName opts.method opts.isRelease
let elems = await anitomyscript(opts.fileName); let elems = await anitomyscript(opts.fileName);
@ -570,7 +570,7 @@ async function resolveName2(opts) {
} }
res = await alRequest(method) res = await alRequest(method)
if (!res.data.Page.media[0]) { if (!res.data.Page.media[0]) {
method.name = method.name.replace(" (TV)", "").replace(` (${new Date().getFullYear()})`, "").replace("-", "") method.name = method.name.replace(" (TV)", "").replace(` (${new Date().getFullYear()})`, "").replace("-", "") // this needs to be improved!!!
res = await alRequest(method) res = await alRequest(method)
} }
if (res.data.Page.media[0]) store[elems.anime_title] = res.data.Page.media[0] if (res.data.Page.media[0]) store[elems.anime_title] = res.data.Page.media[0]
@ -580,41 +580,64 @@ async function resolveName2(opts) {
if (media && media.format != "MOVIE" && elems.episode_number) { if (media && media.format != "MOVIE" && elems.episode_number) {
async function resolveSeason(opts) { async function resolveSeason(opts) {
// opts.media, opts.episode, opts.increment, opts.offset // opts.media, opts.episode, opts.increment, opts.offset
let epMin, epMax
if (opts.episode.constructor == Array) { // support batch episode ranges
epMin = Number(opts.episode[0])
epMax = Number(opts.episode[opts.episode.length - 1])
} else {
epMin = epMax = Number(opts.episode)
}
if (opts.media.relations.edges.some(edge => edge.relationType == "PREQUEL" && (edge.node.format == "TV" || "TV_SHORT")) && !opts.increment) { if (opts.media.relations.edges.some(edge => edge.relationType == "PREQUEL" && (edge.node.format == "TV" || "TV_SHORT")) && !opts.increment) {
// media has prequel and we dont want to move up in the tree // media has prequel and we dont want to move up in the tree
let tempMedia = opts.media.relations.edges.filter(edge => edge.relationType == "PREQUEL" && (edge.node.format == "TV" || "TV_SHORT"))[0].node let tempMedia = opts.media.relations.edges.filter(edge => edge.relationType == "PREQUEL" && (edge.node.format == "TV" || "TV_SHORT"))[0].node
if (tempMedia.episodes && opts.episode - (opts.offset + tempMedia.episodes) > media.episodes) { if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) > media.episodes) {
// episode is still out of bounds // episode is still out of bounds
let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id }) let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id })
await resolveSeason({ media: nextEdge.data.Media, episode: opts.episode, offset: opts.offset + nextEdge.data.Media.episodes }) await resolveSeason({ media: nextEdge.data.Media, episode: opts.episode, offset: opts.offset + nextEdge.data.Media.episodes })
} else if (tempMedia.episodes && opts.episode - (opts.offset + tempMedia.episodes) < media.episodes && opts.episode - (opts.offset + tempMedia.episodes) > 0) { } else if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) < media.episodes && epMin - (opts.offset + tempMedia.episodes) > 0) {
// episode is in range, seems good! // episode is in range, seems good!
episode = opts.episode - (opts.offset + tempMedia.episodes) if (opts.episode.constructor == Array) {
episode = `${elems.episode_number[0] - (opts.offset + tempMedia.episodes)} - ${elems.episode_number[elems.episode_number.length - 1] - (opts.offset + tempMedia.episodes)}`
} else {
episode = opts.episode - (opts.offset + tempMedia.episodes)
}
} else { } else {
console.log("error in parsing!") console.log("error in parsing!")
// there was an issue in parsing :( forcing display // there was an issue in parsing :( forcing display
episode = opts.episode if (opts.episode.constructor == Array) {
episode = `${Number(elems.episode_number[0])} - ${Number(elems.episode_number[elems.episode_number.length - 1])}`
} else {
episode = Number(opts.episode)
}
} }
} else if (opts.media.relations.edges.some(edge => edge.relationType == "SEQUEL" && (edge.node.format == "TV" || "TV_SHORT"))) { } else if (opts.media.relations.edges.some(edge => edge.relationType == "SEQUEL" && (edge.node.format == "TV" || "TV_SHORT"))) {
// media doesnt have prequel, or we want to move up in the tree // media doesnt have prequel, or we want to move up in the tree
let tempMedia = opts.media.relations.edges.filter(edge => edge.relationType == "SEQUEL" && (edge.node.format == "TV" || "TV_SHORT"))[0].node let tempMedia = opts.media.relations.edges.filter(edge => edge.relationType == "SEQUEL" && (edge.node.format == "TV" || "TV_SHORT"))[0].node
if (tempMedia.episodes && opts.episode - (opts.offset + tempMedia.episodes) > media.episodes) { if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) > media.episodes) {
// episode is still out of bounds // episode is still out of bounds
let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id }) let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id })
await resolveSeason({ media: nextEdge.data.Media, episode: opts.episode, offset: opts.offset + nextEdge.data.Media.episodes }) await resolveSeason({ media: nextEdge.data.Media, episode: opts.episode, offset: opts.offset + nextEdge.data.Media.episodes })
} else if (tempMedia.episodes && opts.episode - (opts.offset + tempMedia.episodes) < media.episodes && opts.episode - (opts.offset + tempMedia.episodes) > 0) { } else if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) < media.episodes && epMin - (opts.offset + tempMedia.episodes) > 0) {
// episode is in range, seems good! overwriting media to count up "seasons" // episode is in range, seems good! overwriting media to count up "seasons"
episode = opts.episode - (opts.offset + tempMedia.episodes) if (opts.episode.constructor == Array) {
episode = `${elems.episode_number[0] - (opts.offset + tempMedia.episodes)} - ${elems.episode_number[elems.episode_number.length - 1] - (opts.offset + tempMedia.episodes)}`
} else {
episode = opts.episode - (opts.offset + tempMedia.episodes)
}
let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id }) let nextEdge = await alRequest({ method: "SearchIDSingle", id: tempMedia.id })
media = nextEdge.data.Media media = nextEdge.data.Media
} else { } else {
console.log("error in parsing!") console.log("error in parsing!")
// there was an issue in parsing :( forcing display // there was an issue in parsing :( forcing display
episode = opts.episode if (opts.episode.constructor == Array) {
episode = `${Number(elems.episode_number[0])} - ${Number(elems.episode_number[elems.episode_number.length - 1])}`
} else {
episode = Number(opts.episode)
}
} }
} else { } else {
// something failed, most likely couldnt find an edge or processing failed, force episode number even if its invalid/out of bounds, better than nothing // something failed, most likely couldnt find an edge or processing failed, force episode number even if its invalid/out of bounds, better than nothing
episode = opts.episode episode = Number(opts.episode)
} }
} }
if (elems.episode_number.constructor == Array) { if (elems.episode_number.constructor == Array) {
@ -624,11 +647,11 @@ async function resolveName2(opts) {
episode = `${elems.episode_number[0]} - ${elems.episode_number[elems.episode_number.length - 1]}` episode = `${elems.episode_number[0]} - ${elems.episode_number[elems.episode_number.length - 1]}`
} else { } else {
if (media.episodes && parseInt(elems.episode_number[elems.episode_number.length - 1]) > media.episodes) { if (media.episodes && parseInt(elems.episode_number[elems.episode_number.length - 1]) > media.episodes) {
// if highest value is bigger than episode count // if highest value is bigger than episode count, parseint to math.floor a number like 12.5 - specials - in 1 go
await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 }) await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 })
} else { } else {
// cant find ep count or range seems fine // cant find ep count or range seems fine
episode = `${elems.episode_number[0]} - ${elems.episode_number[elems.episode_number.length - 1]}` episode = `${Number(elems.episode_number[0])} - ${Number(elems.episode_number[elems.episode_number.length - 1])}`
} }
} }
} else { } else {
@ -637,7 +660,7 @@ async function resolveName2(opts) {
await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 }) await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 })
} else { } else {
// cant find ep count or episode seems fine // cant find ep count or episode seems fine
episode = elems.episode_number episode = Number(elems.episode_number)
} }
} }
} }