mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-03-28 20:28:43 +00:00
episode resolving improvement fallback for when episode count is missing
This commit is contained in:
parent
ea6c618d08
commit
ff73af994e
5 changed files with 18 additions and 16 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
],
|
||||
"share_target": {
|
||||
"action": "/app/#home",
|
||||
"method": "GET",
|
||||
"enctype": "application/x-www-form-urlencoded",
|
||||
"params": {
|
||||
"url": "link"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue