diff --git a/app/css/misc.css b/app/css/misc.css index 3c27e33..cd4e7f0 100644 --- a/app/css/misc.css +++ b/app/css/misc.css @@ -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, diff --git a/app/js/animeHandler.js b/app/js/animeHandler.js index 8b0e537..87c9e60 100644 --- a/app/js/animeHandler.js +++ b/app/js/animeHandler.js @@ -486,13 +486,13 @@ function cardCreator(opts) {
${opts.media.title.userPreferred}${opts.episode ? " - " + opts.episode : ""}
+ ${opts.schedule && opts.media.nextAiringEpisode ? "EP " + opts.media.nextAiringEpisode.episode + " in " + countdown(opts.media.nextAiringEpisode.timeUntilAiring) + "" : ""}

${(opts.media.format ? (opts.media.format == "TV" ? "" + opts.media.format + " Show" : "" + opts.media.format.toLowerCase().replace(/_/g, " ")) : "") + ""} ${opts.media.episodes ? "" + opts.media.episodes + " Episodes" : opts.media.duration ? "" + opts.media.duration + " Minutes" : ""} ${opts.media.status ? "" + opts.media.status.toLowerCase().replace(/_/g, " ") + "" : ""} ${opts.media.season || opts.media.seasonYear ? "" + ((opts.media.season.toLowerCase() || "") + " ") + (opts.media.seasonYear || "") + "" : ""}

- ${opts.schedule && opts.media.nextAiringEpisode ? "EP " + opts.media.nextAiringEpisode.episode + " in " + countdown(opts.media.nextAiringEpisode.timeUntilAiring) + "" : ""}
${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 { diff --git a/app/js/interface.js b/app/js/interface.js index 9c07d3c..c32c16c 100644 --- a/app/js/interface.js +++ b/app/js/interface.js @@ -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 }) diff --git a/app/js/playerHandler.js b/app/js/playerHandler.js index 004a50e..f03f424 100644 --- a/app/js/playerHandler.js +++ b/app/js/playerHandler.js @@ -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
${playerData.nowPlaying[0].title.userPreferred}
Episode ${playerData.nowPlaying[1]} As Completed?
diff --git a/manifest.json b/manifest.json index a417a8a..2df4ee7 100644 --- a/manifest.json +++ b/manifest.json @@ -21,6 +21,8 @@ ], "share_target": { "action": "/app/#home", + "method": "GET", + "enctype": "application/x-www-form-urlencoded", "params": { "url": "link" }