episode resolving improvement fallback for when episode count is missing

This commit is contained in:
ThaUnknown 2021-01-26 20:11:55 +01:00
parent ea6c618d08
commit ff73af994e
5 changed files with 18 additions and 16 deletions

View file

@ -94,6 +94,7 @@ input:invalid {
height: 100%;
width: 10rem;
background: linear-gradient(270deg, rgba(37, 40, 44, 1) 0%, rgba(37, 40, 44, 1) 15%, rgba(37, 40, 44, .45) 70%, rgba(37, 40, 44, 0) 100%);
/*this gradient looks like ass, need to find smth better*/
}
#home.noauth #homeContinue,

View file

@ -486,13 +486,13 @@ function cardCreator(opts) {
<div class="col-8 h-full card-grid">
<div class="px-15 py-10 bg-very-dark">
<h5 class="m-0 text-capitalize font-weight-bold">${opts.media.title.userPreferred}${opts.episode ? " - " + opts.episode : ""}</h5>
${opts.schedule && opts.media.nextAiringEpisode ? "<span class='text-muted font-weight-bold'>EP " + opts.media.nextAiringEpisode.episode + " in " + countdown(opts.media.nextAiringEpisode.timeUntilAiring) + "</span>" : ""}
<p class="text-muted m-0 text-capitalize details">
${(opts.media.format ? (opts.media.format == "TV" ? "<span>" + opts.media.format + " Show" : "<span>" + opts.media.format.toLowerCase().replace(/_/g, " ")) : "") + "</span>"}
${opts.media.episodes ? "<span>" + opts.media.episodes + " Episodes</span>" : opts.media.duration ? "<span>" + opts.media.duration + " Minutes</span>" : ""}
${opts.media.status ? "<span>" + opts.media.status.toLowerCase().replace(/_/g, " ") + "</span>" : ""}
${opts.media.season || opts.media.seasonYear ? "<span>" + ((opts.media.season.toLowerCase() || "") + " ") + (opts.media.seasonYear || "") + "</span>" : ""}
</p>
${opts.schedule && opts.media.nextAiringEpisode ? "<span class='text-muted'>EP " + opts.media.nextAiringEpisode.episode + " in " + countdown(opts.media.nextAiringEpisode.timeUntilAiring) + "</span>" : ""}
</div>
<div class="overflow-y-auto px-15 pb-5 bg-very-dark card-desc">
${opts.media.description}
@ -589,7 +589,8 @@ async function resolveFileMedia(opts) {
//resolve name and shit
let method, res
if (opts.isRelease) {
method = { name: elems.anime_title, method: "SearchName", perPage: 1, status: "RELEASING", sort: "START_DATE_DESC" }
method = { name: elems.anime_title, method: "SearchName", perPage: 1, status: "RELEASING", sort: "TRENDING_DESC" } //START_DATE_DESC
// maybe releases should include this and last season? idfk
} else {
method = { name: elems.anime_title, method: opts.method, perPage: 1 }
}
@ -603,7 +604,7 @@ async function resolveFileMedia(opts) {
}
let episode, media = store[elems.anime_title]
// resolve episode, if movie, dont.
if ((media?.format != "MOVIE" || media.episodes) && elems.episode_number) {
if ((media?.format != "MOVIE" || (media.episodes || media.nextAiringEpisode.episode)) && elems.episode_number) {
async function resolveSeason(opts) {
// opts.media, opts.episode, opts.increment, opts.offset
let epMin, epMax
@ -622,11 +623,11 @@ async function resolveFileMedia(opts) {
tempMedia = opts.media.relations.edges.filter(edge => edge.relationType == "SEQUEL" && (edge.node.format == "TV" || "TV_SHORT"))[0].node
increment = true
}
if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) > media.episodes) {
if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) > (media.episodes || media.nextAiringEpisode.episode)) {
// episode is still out of bounds
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, increment: increment })
} else if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) < media.episodes && epMin - (opts.offset + tempMedia.episodes) > 0) {
} else if (tempMedia.episodes && epMax - (opts.offset + tempMedia.episodes) < (media.episodes || media.nextAiringEpisode.episode) && epMin - (opts.offset + tempMedia.episodes) > 0) {
// episode is in range, seems good! overwriting media to count up "seasons"
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)}`
@ -653,8 +654,8 @@ async function resolveFileMedia(opts) {
// if it starts with #1 and overflows then it includes more than 1 season in a batch, cant fix this cleanly, name is parsed per file basis so this shouldnt be an issue
episode = `${elems.episode_number[0]} - ${elems.episode_number[elems.episode_number.length - 1]}`
} else {
if (media.episodes && parseInt(elems.episode_number[elems.episode_number.length - 1]) > media.episodes) {
// if highest value is bigger than episode count, parseint to math.floor a number like 12.5 - specials - in 1 go
if ((media?.episodes || media?.nextAiringEpisode?.episode) && parseInt(elems.episode_number[elems.episode_number.length - 1]) > (media.episodes || media.nextAiringEpisode.episode)) {
// if highest value is bigger than episode count or latest streamed episode +1 for safety, parseint to math.floor a number like 12.5 - specials - in 1 go
await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 })
} else {
// cant find ep count or range seems fine
@ -662,7 +663,7 @@ async function resolveFileMedia(opts) {
}
}
} else {
if (media?.episodes && parseInt(elems.episode_number) > media.episodes) {
if ((media?.episodes || media?.nextAiringEpisode?.episode) && parseInt(elems.episode_number) > (media.episodes || media.nextAiringEpisode.episode)) {
// value bigger than episode count
await resolveSeason({ media: media, episode: elems.episode_number, offset: 0 })
} else {

View file

@ -6,7 +6,7 @@ async function loadHomePage() {
continue: async function (page) {
if (!page) gallerySkeleton(browseGallery)
let res = await alRequest({ method: "UserLists", status_in: "CURRENT", id: alID, page: page || 1 })
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: browseGallery, method: "continue", page: page || 1 })
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: browseGallery, method: "continue", page: page || 1, schedule: true})
},
releases: async function () {
gallerySkeleton(browseGallery)
@ -46,7 +46,7 @@ async function loadHomePage() {
homePreviewFunctions = {
continue: async function () {
let res = await alRequest({ method: "UserLists", status_in: "CURRENT", id: alID, perPage: 4 })
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: homeContinue })
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: homeContinue, schedule: true })
},
releases: async function () {
let frag = await releasesRss(4)
@ -94,7 +94,6 @@ async function loadHomePage() {
if (!opts.page || opts.page == 1) {
opts.gallery.innerHTML = '';
}
console.log(opts)
let frag = document.createDocumentFragment()
opts.media.forEach(media => {
let template = cardCreator({ media: media, schedule: opts.schedule })

View file

@ -132,9 +132,8 @@ async function buildVideo(torrent, opts) { // sets video source and creates a bu
navNowPlaying.classList.remove("d-none")
} else { // try to resolve name
let mediaInformation = await resolveFileMedia({ fileName: selectedFile.name, method: "SearchName" })
console.log(mediaInformation)
playerData.nowPlaying = [mediaInformation.media, mediaInformation.parseObject.episode_number]
if (mediaInformation.media) {
playerData.nowPlaying = [mediaInformation.media, mediaInformation.parseObject.episode_number]
navNowPlaying.classList.remove("d-none")
}
}
@ -654,9 +653,9 @@ if ('mediaSession' in navigator) {
//AL entry auto add
function checkCompletion() {
if (!playerData.watched && video.duration - 180 < video.currentTime && playerData.nowPlaying && playerData.nowPlaying[0].episodes) {
if (settings.other2 && !(!playerData.nowPlaying[0].episodes && playerData.nowPlaying[0].streamingEpisodes.length)) {
if (parseInt(playerData.nowPlaying[1]) <= playerData.nowPlaying[0].episodes) alEntry()
if (!playerData.watched && video.duration - 180 < video.currentTime && playerData.nowPlaying && (playerData.nowPlaying[0].episodes || playerData.nowPlaying[0].nextAiringEpisode.episode)) {
if (settings.other2 && !(!(playerData.nowPlaying[0].episodes || playerData.nowPlaying[0].nextAiringEpisode.episode) && playerData.nowPlaying[0].streamingEpisodes.length && parseInt(playerData.nowPlaying[1] > 12))) {
alEntry()
} else {
halfmoon.initStickyAlert({
content: `Do You Want To Mark <br><b>${playerData.nowPlaying[0].title.userPreferred}</b><br>Episode ${playerData.nowPlaying[1]} As Completed?<br>

View file

@ -21,6 +21,8 @@
],
"share_target": {
"action": "/app/#home",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": {
"url": "link"
}