diff --git a/app/js/animeHandler.js b/app/js/animeHandler.js
index 9d78a38..9471d3c 100644
--- a/app/js/animeHandler.js
+++ b/app/js/animeHandler.js
@@ -85,6 +85,9 @@ async function alRequest(searchName, method) {
media (type: $type, search: $search, sort: $sort, status: $status) {
id
title {
+ romaji
+ english
+ native
userPreferred
}
description(
@@ -96,12 +99,23 @@ async function alRequest(searchName, method) {
status
episodes
duration
+ averageScore
genres
coverImage {
extraLarge
medium
color
}
+ bannerImage
+ synonyms
+ nextAiringEpisode {
+ timeUntilAiring
+ episode
+ }
+ trailer {
+ id
+ site
+ }
streamingEpisodes {
title
thumbnail
@@ -166,6 +180,9 @@ async function alRequest(searchName, method) {
media (type: $type, search: $search, sort: $sort) {
id
title {
+ romaji
+ english
+ native
userPreferred
}
description(
@@ -177,12 +194,23 @@ async function alRequest(searchName, method) {
status
episodes
duration
+ averageScore
genres
coverImage {
extraLarge
medium
color
}
+ bannerImage
+ synonyms
+ nextAiringEpisode {
+ timeUntilAiring
+ episode
+ }
+ trailer {
+ id
+ site
+ }
streamingEpisodes {
title
thumbnail
@@ -190,19 +218,63 @@ async function alRequest(searchName, method) {
}
}
}`
+ } else if (method == "SearchIDSingle") {
+ variables.id = searchName
+ query = `
+ query ($id: Int, $type: MediaType) {
+ Media (id: $id, type: $type){
+ id
+ title {
+ romaji
+ english
+ native
+ userPreferred
+ }
+ description(
+ asHtml: true
+ )
+ season
+ seasonYear
+ format
+ status
+ episodes
+ duration
+ averageScore
+ genres
+ coverImage {
+ extraLarge
+ medium
+ color
+ }
+ bannerImage
+ synonyms
+ nextAiringEpisode {
+ timeUntilAiring
+ episode
+ }
+ trailer {
+ id
+ site
+ }
+ streamingEpisodes {
+ title
+ thumbnail
+ }
+ }
+ }`
}
- options.body = JSON.stringify({
- query: query,
- variables: variables
- })
+ options.body = JSON.stringify({
+ query: query,
+ variables: variables
+ })
- let res = await fetch('https://graphql.anilist.co', options).catch((error) => console.error(error)),
- json = await res.json();
- return json
-}
-function alEntry() {
- if (playerData.nowPlaying && playerData.nowPlaying[0] && localStorage.getItem("ALtoken")) {
- let query = `
+ let res = await fetch('https://graphql.anilist.co', options).catch((error) => console.error(error)),
+ json = await res.json();
+ return json
+ }
+ function alEntry() {
+ if (playerData.nowPlaying && playerData.nowPlaying[0] && localStorage.getItem("ALtoken")) {
+ let query = `
mutation ($id: Int, $status: MediaListStatus, $episode: Int) {
SaveMediaListEntry (mediaId: $id, status: $status, progress: $episode) {
id
@@ -210,160 +282,160 @@ mutation ($id: Int, $status: MediaListStatus, $episode: Int) {
progress
}
}`,
- variables = {
- id: playerData.nowPlaying[0].id,
- status: "CURRENT",
- episode: parseInt(playerData.nowPlaying[1])
- },
- options = {
- method: 'POST',
- headers: {
- 'Authorization': 'Bearer ' + localStorage.getItem("ALtoken"),
- 'Content-Type': 'application/json',
- 'Accept': 'application/json'
+ variables = {
+ id: playerData.nowPlaying[0].id,
+ status: "CURRENT",
+ episode: parseInt(playerData.nowPlaying[1])
},
- body: JSON.stringify({
- query: query,
- variables: variables
- })
- }
- fetch("https://graphql.anilist.co", options)
+ options = {
+ method: 'POST',
+ headers: {
+ 'Authorization': 'Bearer ' + localStorage.getItem("ALtoken"),
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ body: JSON.stringify({
+ query: query,
+ variables: variables
+ })
+ }
+ fetch("https://graphql.anilist.co", options)
+ }
}
-}
-let alResponse
-async function searchAnime(a) {
- let frag = document.createDocumentFragment(),
- browse = document.querySelector(".browse")
- browse.textContent = '';
- browse.appendChild(skeletonCard)
- a ? alResponse = await alRequest(a, "SearchName") : alResponse = await alRequest(a, "Trending")
- try {
- alResponse.data.Page.media.forEach(media => {
- let template = cardCreator(media)
- template.onclick = () => {
- viewAnime(media)
- }
- frag.appendChild(template)
- })
- } catch (e) {
- console.error(e)
+ let alResponse
+ async function searchAnime(a) {
+ let frag = document.createDocumentFragment(),
+ browse = document.querySelector(".browse")
+ browse.textContent = '';
+ browse.appendChild(skeletonCard)
+ a ? alResponse = await alRequest(a, "SearchName") : alResponse = await alRequest(a, "Trending")
+ try {
+ alResponse.data.Page.media.forEach(media => {
+ let template = cardCreator(media)
+ template.onclick = () => {
+ viewAnime(media)
+ }
+ frag.appendChild(template)
+ })
+ } catch (e) {
+ console.error(e)
+ }
+ browse.textContent = '';
+ browse.appendChild(frag)
}
- browse.textContent = '';
- browse.appendChild(frag)
-}
-let detailsfrag = document.createDocumentFragment()
-let details = {
- averageScore: "Average Score",
- // duration: "Episode Duration",
- // episodes: "Episodes",
- // format: "Format",
- genres: "Genres",
- // season: "Season",
- // seasonYear: "Year",
- status: "Status",
- english: "English",
- romaji: "Romaji",
- native: "Native",
- synonyms: "Synonyms"
-}
-const episodeRx = /Episode (\d+) - (.*)/;
-function viewAnime(media) {
- halfmoon.toggleModal("view")
- view.setAttribute("style", `background-image: url(${media.bannerImage}) !important`)
- viewImg.src = media.coverImage.extraLarge
- viewTitle.textContent = media.title.userPreferred
- viewDesc.innerHTML = media.description || ""
+ let detailsfrag = document.createDocumentFragment()
+ let details = {
+ averageScore: "Average Score",
+ // duration: "Episode Duration",
+ // episodes: "Episodes",
+ // format: "Format",
+ genres: "Genres",
+ // season: "Season",
+ // seasonYear: "Year",
+ status: "Status",
+ english: "English",
+ romaji: "Romaji",
+ native: "Native",
+ synonyms: "Synonyms"
+ }
+ const episodeRx = /Episode (\d+) - (.*)/;
+ function viewAnime(media) {
+ halfmoon.toggleModal("view")
+ view.setAttribute("style", `background-image: url(${media.bannerImage}) !important`)
+ viewImg.src = media.coverImage.extraLarge
+ viewTitle.textContent = media.title.userPreferred
+ viewDesc.innerHTML = media.description || ""
- viewDetails.innerHTML = ""
- detailsCreator(media)
- viewDetails.appendChild(detailsfrag)
- if (media.nextAiringEpisode) {
- let temp = document.createElement("p")
- temp.innerHTML = `Airing
Episode ${media.nextAiringEpisode.episode}: ${toTS(media.nextAiringEpisode.timeUntilAiring)}`
- viewDetails.prepend(temp)
- }
- viewSeason.innerHTML = `${(media.season ? media.season.toLowerCase() + " " : "") + (media.seasonYear ? media.seasonYear : "")}`
- viewMediaInfo.innerHTML = `${media.format ? "" + media.format + "" : ""}${media.episodes ? "" + media.episodes + " Episodes" : ""}${media.duration ? "" + media.duration + " Minutes" : ""}`
- viewPlay.onclick = () => { nyaaSearch(media, 1); halfmoon.toggleModal("view") }
- if (media.trailer) {
- viewTrailer.removeAttribute("disabled", "")
- viewTrailer.onclick = () =>
- trailerPopup(media.trailer)
- } else {
- viewTrailer.setAttribute("disabled", "")
- }
- if (media.status == "NOT_YET_RELEASED") {
- viewPlay.setAttribute("disabled", "")
- } else {
- viewPlay.removeAttribute("disabled", "")
- }
- viewEpisodes.onclick = () => {
- viewEpisodesWrapper.classList.toggle("hidden")
- }
- viewSynonym.onclick = () => {
- store[viewSynonymText.value] = media
- viewSynonymText.value = ""
- localStorage.setItem("store", JSON.stringify(store))
- }
- episodes.innerHTML = ""
- if (media.streamingEpisodes.length) {
- viewEpisodesWrapper.classList.add("hidden")
- viewEpisodes.removeAttribute("disabled", "")
- let frag = document.createDocumentFragment()
- media.streamingEpisodes.forEach(episode => {
- let temp = document.createElement("div")
- temp.classList.add("position-relative", "w-250", "rounded", "mr-10", "overflow-hidden", "pointer")
- temp.innerHTML = `
+ viewDetails.innerHTML = ""
+ detailsCreator(media)
+ viewDetails.appendChild(detailsfrag)
+ if (media.nextAiringEpisode) {
+ let temp = document.createElement("p")
+ temp.innerHTML = `Airing
Episode ${media.nextAiringEpisode.episode}: ${toTS(media.nextAiringEpisode.timeUntilAiring)}`
+ viewDetails.prepend(temp)
+ }
+ viewSeason.innerHTML = `${(media.season ? media.season.toLowerCase() + " " : "") + (media.seasonYear ? media.seasonYear : "")}`
+ viewMediaInfo.innerHTML = `${media.format ? "" + media.format + "" : ""}${media.episodes ? "" + media.episodes + " Episodes" : ""}${media.duration ? "" + media.duration + " Minutes" : ""}`
+ viewPlay.onclick = () => { nyaaSearch(media, 1); halfmoon.toggleModal("view") }
+ if (media.trailer) {
+ viewTrailer.removeAttribute("disabled", "")
+ viewTrailer.onclick = () =>
+ trailerPopup(media.trailer)
+ } else {
+ viewTrailer.setAttribute("disabled", "")
+ }
+ if (media.status == "NOT_YET_RELEASED") {
+ viewPlay.setAttribute("disabled", "")
+ } else {
+ viewPlay.removeAttribute("disabled", "")
+ }
+ viewEpisodes.onclick = () => {
+ viewEpisodesWrapper.classList.toggle("hidden")
+ }
+ viewSynonym.onclick = () => {
+ store[viewSynonymText.value] = media
+ viewSynonymText.value = ""
+ localStorage.setItem("store", JSON.stringify(store))
+ }
+ episodes.innerHTML = ""
+ if (media.streamingEpisodes.length) {
+ viewEpisodesWrapper.classList.add("hidden")
+ viewEpisodes.removeAttribute("disabled", "")
+ let frag = document.createDocumentFragment()
+ media.streamingEpisodes.forEach(episode => {
+ let temp = document.createElement("div")
+ temp.classList.add("position-relative", "w-250", "rounded", "mr-10", "overflow-hidden", "pointer")
+ temp.innerHTML = `