var query, variables = { type: "ANIME", page: 1, perPage: 50 }, request; var url = 'https://graphql.anilist.co', options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ query: query, variables: variables }) }; function search() { let search = document.querySelector("#search").value if (search == "") { alRequest() } else { alRequest(search) } } function alRequest(a) { if (a == undefined) { variables.sort = "TRENDING_DESC" delete variables.search query = ` query ($page: Int, $perPage: Int, $sort: [MediaSort], $type: MediaType) { Page (page: $page, perPage: $perPage) { pageInfo { total currentPage lastPage hasNextPage perPage } media(type: $type, sort: $sort) { id title { romaji english native } description( asHtml: true ) season seasonYear format status episodes duration averageScore genres coverImage { large } bannerImage } } } ` } else { variables.search = a delete variables.sort query = ` query ($page: Int, $perPage: Int, $search: String, $type: MediaType) { Page (page: $page, perPage: $perPage) { pageInfo { total currentPage lastPage hasNextPage perPage } media (type: $type, search: $search) { id title { romaji english native } description( asHtml: true ) season seasonYear format status episodes duration averageScore genres coverImage { large } bannerImage } } } ` } options.body = JSON.stringify({ query: query, variables: variables }) fetch(url, options).then((handleResponse)) .then(handleData) .catch((error) => console.error(error)); function handleResponse(response) { return response.json().then(function (json) { return response.ok ? json : Promise.reject(json); }); } } function handleData(data) { request = data console.log(request); let frag = document.createDocumentFragment(), hasBegun = true try { data.data.Page.media.forEach((media, index) => { let template = document.createElement("div") template.classList.add("card", "bg-dark") template.innerHTML = `
${!!media.title.english ? media.title.english : media.title.romaji}
${(!!media.season ? media.season.toLowerCase()+" ": "") + (!!media.seasonYear ? media.seasonYear : "")}

${((!!media.format ? (media.format == "TV" ? media.format + " Show" : media.format) + " • " : "")+(!!media.episodes ? media.episodes + " Episodes • " : (!!media.duration ? media.duration + " Minutes • " : "" ))+(!!media.status ? media.status.toLowerCase() : ""))}

${media.description}

` template.onclick = function () { viewAnime(index) } frag.appendChild(template) }) } catch (e) { console.error(e) } if (hasBegun) { document.querySelector('.gallery').textContent = ''; hasBegun = false; } document.querySelector('.gallery').appendChild(frag) } function hideAnime(){ document.querySelector(".view").setAttribute("hidden", "") } function viewAnime(a) { let media = request.data.Page.media[a] let details =["title.english","title.romaji","status","season","seasonYear","episodes","duration","format","averageScore"] document.querySelector(".view").removeAttribute("hidden") document.querySelector(".view .banner img").src = media.bannerImage document.querySelector(".view .contain-img").src = media.coverImage.large document.querySelector(".view .contain-img").src = media.coverImage.large document.querySelector(".view .title").textContent = !!media.title.english ? media.title.english : media.title.romaji document.querySelector(".view .desc").innerHTML = !!media.description ? media.description : "" tsearch(a,1) } const DOMPARSER = new DOMParser().parseFromString.bind(new DOMParser()) function tsearch(a, b) { let name = request.data.Page.media[a].title.romaji if (b < 10) { b = "0" + b } let url = new URL("https://nyaa.si/?page=rss&c=1_2&f=2&s=seeders&o=desc&q=" + name + " \" " + b + " \"") let frag = document.createDocumentFragment(), hasBegun = true fetch(url).then((res) => { res.text().then((xmlTxt) => { try { let doc = DOMPARSER(xmlTxt, "text/xml") doc.querySelectorAll('item').forEach((item, index) => { let i = item.querySelector.bind(item), template = document.createElement("tr") template.innerHTML = ` ${(index+1)} ${i("title").textContent} ${i("size").textContent} ${i("seeders").textContent} ${i("leechers").textContent} ${i("downloads").textContent} Play ` frag.appendChild(template) }) } catch (e) { console.error(e) } if (hasBegun) { document.querySelector('tbody').textContent = ''; hasBegun = false; } document.querySelector('tbody').appendChild(frag) }) }).catch(() => console.error('Error in fetching the RSS feed')) } alRequest()