mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-04-21 19:21:59 +00:00
- Minor formatting and QoL changes
This commit is contained in:
parent
7a1fdd9032
commit
4ced5ff9fe
2 changed files with 195 additions and 173 deletions
|
|
@ -1,13 +1,13 @@
|
|||
var query,
|
||||
variables = {
|
||||
var query;
|
||||
var variables = {
|
||||
type: "ANIME",
|
||||
page: 1,
|
||||
perPage: 50
|
||||
},
|
||||
request;
|
||||
}
|
||||
var request;
|
||||
|
||||
var url = 'https://graphql.anilist.co',
|
||||
options = {
|
||||
var url = 'https://graphql.anilist.co'
|
||||
var options = {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
|
|
@ -17,7 +17,7 @@ var url = 'https://graphql.anilist.co',
|
|||
query: query,
|
||||
variables: variables
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
function search() {
|
||||
let search = document.querySelector("#search").value
|
||||
|
|
@ -138,8 +138,8 @@ function alRequest(a) {
|
|||
function handleData(data) {
|
||||
request = data
|
||||
console.log(request);
|
||||
let frag = document.createDocumentFragment(),
|
||||
hasBegun = true
|
||||
let frag = document.createDocumentFragment()
|
||||
let hasBegun = true
|
||||
try {
|
||||
data.data.Page.media.forEach((media, index) => {
|
||||
let template = document.createElement("div")
|
||||
|
|
@ -185,8 +185,9 @@ function handleData(data) {
|
|||
}
|
||||
document.querySelector(".gallery").appendChild(frag)
|
||||
}
|
||||
let detailsfrag = document.createDocumentFragment(),
|
||||
details = {
|
||||
|
||||
let detailsfrag = document.createDocumentFragment()
|
||||
let details = {
|
||||
averageScore: "Average Score",
|
||||
duration: "Episode Duration",
|
||||
episodes: "Episodes",
|
||||
|
|
@ -200,8 +201,8 @@ let detailsfrag = document.createDocumentFragment(),
|
|||
native: "Native",
|
||||
synonyms: "Synonyms"
|
||||
}
|
||||
function viewAnime(media) {
|
||||
|
||||
function viewAnime(media) {
|
||||
halfmoon.toggleModal("view")
|
||||
document.querySelector(".view .banner img").src = ""
|
||||
document.querySelector(".view .banner img").src = media.bannerImage
|
||||
|
|
@ -213,6 +214,7 @@ function viewAnime(media) {
|
|||
detailsCreator(media)
|
||||
document.querySelector(".view .details").appendChild(detailsfrag)
|
||||
}
|
||||
|
||||
function detailsCreator(entry) {
|
||||
if (entry != undefined) {
|
||||
Object.entries(entry).forEach(value => {
|
||||
|
|
@ -235,33 +237,37 @@ function detailsCreator(entry) {
|
|||
})
|
||||
}
|
||||
}
|
||||
const DOMPARSER = new DOMParser().parseFromString.bind(new DOMParser()),
|
||||
searchTitle = document.querySelector("#title"),
|
||||
searchEpisode = document.querySelector("#ep")
|
||||
|
||||
var selected
|
||||
const DOMPARSER = new DOMParser().parseFromString.bind(new DOMParser())
|
||||
const searchTitle = document.querySelector("#title")
|
||||
const searchEpisode = document.querySelector("#ep")
|
||||
|
||||
var selected;
|
||||
|
||||
async function nyaaSearch(media, episode) {
|
||||
if (parseInt(episode) < 10) {
|
||||
episode = `0${episode}`
|
||||
}
|
||||
let titles = Object.values(media.title).concat(media.synonyms).filter(name => name != null),
|
||||
table = document.querySelector("tbody.results"),
|
||||
results = document.createDocumentFragment()
|
||||
|
||||
let titles = Object.values(media.title).concat(media.synonyms).filter(name => name != null)
|
||||
let table = document.querySelector("tbody.results")
|
||||
let results = document.createDocumentFragment()
|
||||
|
||||
for (let title of titles) {
|
||||
if (results.children.length == 0) {
|
||||
title = title.replace(/ /g, "+")
|
||||
let url = new URL(`https://nyaa.si/?page=rss&c=1_2&f=2&s=seeders&o=desc&q=${title}"+${episode}+"`)
|
||||
results = await rssFetch(url)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if (results.children.length == 0) {
|
||||
halfmoon.initStickyAlert({
|
||||
content: `Couldn't find torrent for ${!!media.title.english ? media.title.english : media.title.romaji} Episode ${parseInt(episode)}! Try specifying a torrent manually.`,
|
||||
title: "Search Failed",
|
||||
alertType: "alert-danger",
|
||||
fillType: ""
|
||||
});
|
||||
})
|
||||
} else {
|
||||
table.textContent = ""
|
||||
table.appendChild(results)
|
||||
|
|
@ -272,13 +278,14 @@ async function nyaaSearch(media, episode) {
|
|||
|
||||
async function rssFetch(url) {
|
||||
let frag = document.createDocumentFragment()
|
||||
|
||||
res = await fetch(url)
|
||||
await 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")
|
||||
let i = item.querySelector.bind(item)
|
||||
let template = document.createElement("tr")
|
||||
template.innerHTML += `
|
||||
<th>${(index + 1)}</th>
|
||||
<td>${i("title").textContent}</td>
|
||||
|
|
@ -293,6 +300,7 @@ async function rssFetch(url) {
|
|||
console.error(e)
|
||||
}
|
||||
})
|
||||
|
||||
return frag
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,25 +45,29 @@ for (let i = 0; i < controls.length; i++) {
|
|||
// progress bar and display
|
||||
|
||||
function updateDisplay() {
|
||||
let progressPercent = (video.currentTime / video.duration * 100),
|
||||
bufferPercent = video.buffered.length == 0 ? 0 : video.buffered.end(video.buffered.length - 1) / video.duration * 100
|
||||
let progressPercent = (video.currentTime / video.duration * 100)
|
||||
let bufferPercent = video.buffered.length == 0 ? 0 : video.buffered.end(video.buffered.length - 1) / video.duration * 100
|
||||
progress.style.setProperty("--buffer", bufferPercent + "%");
|
||||
updateBar(progressPercent || progress.value / 10);
|
||||
createThumbnail(video);
|
||||
}
|
||||
|
||||
function dragBar() {
|
||||
video.pause()
|
||||
updateBar(progress.value / 10)
|
||||
}
|
||||
|
||||
function dragBarEnd() {
|
||||
video.currentTime = currentTime || 0
|
||||
playVideo()
|
||||
}
|
||||
|
||||
async function dragBarStart() {
|
||||
await video.pause()
|
||||
updateBar(progress.value / 10)
|
||||
}
|
||||
let currentTime
|
||||
|
||||
let currentTime;
|
||||
function updateBar(progressPercent) {
|
||||
currentTime = video.duration * progressPercent / 100
|
||||
progress.style.setProperty("--progress", progressPercent + "%");
|
||||
|
|
@ -77,12 +81,11 @@ function updateBar(progressPercent) {
|
|||
}
|
||||
|
||||
// dynamic thumbnails
|
||||
let thumbnails = [],
|
||||
ratio,
|
||||
canvas = document.createElement("canvas"),
|
||||
context = canvas.getContext('2d'),
|
||||
w = 150,
|
||||
h
|
||||
let thumbnails = []
|
||||
let ratio
|
||||
let canvas = document.createElement("canvas")
|
||||
let context = canvas.getContext('2d')
|
||||
let w = 150, h
|
||||
|
||||
function initThumbnail() {
|
||||
thumbnails = []
|
||||
|
|
@ -92,6 +95,7 @@ function initThumbnail() {
|
|||
canvas.height = h;
|
||||
progress.style.setProperty("--height", h + "px");
|
||||
}
|
||||
|
||||
function createThumbnail(vid) {
|
||||
let index = Math.floor(vid.currentTime / 5)
|
||||
if (!thumbnails[index] && h) {
|
||||
|
|
@ -100,6 +104,7 @@ function createThumbnail(vid) {
|
|||
thumbnails[index] = canvas.toDataURL("image/jpeg")
|
||||
}
|
||||
}
|
||||
|
||||
function finishThumbnails() {
|
||||
let thumbVid = document.createElement("video")
|
||||
thumbVid.src = video.src
|
||||
|
|
@ -136,14 +141,15 @@ function resetBuffer() {
|
|||
function isBuffering() {
|
||||
buffer = setTimeout(displayBuffer, 150)
|
||||
}
|
||||
|
||||
function displayBuffer() {
|
||||
buffering.classList.remove('hidden')
|
||||
resetTimer()
|
||||
}
|
||||
|
||||
// immerse timeout
|
||||
let immerseTime;
|
||||
|
||||
|
||||
document.onmousemove = resetTimer;
|
||||
document.onkeypress = resetTimer;
|
||||
function immersePlayer() {
|
||||
|
|
@ -155,22 +161,26 @@ function resetTimer() {
|
|||
player.classList.remove('immersed')
|
||||
immerseTime = setTimeout(immersePlayer, 3000)
|
||||
}
|
||||
let islooped;
|
||||
|
||||
let islooped;
|
||||
|
||||
function toTS(sec) {
|
||||
if (Number.isNaN(sec)) {
|
||||
return "--:--";
|
||||
}
|
||||
let hours = Math.floor(sec / 3600),
|
||||
minutes = Math.floor((sec - (hours * 3600)) / 60),
|
||||
seconds = Math.floor(sec - (hours * 3600) - (minutes * 60));
|
||||
|
||||
let hours = Math.floor(sec / 3600)
|
||||
let minutes = Math.floor((sec - (hours * 3600)) / 60)
|
||||
let seconds = Math.floor(sec - (hours * 3600) - (minutes * 60));
|
||||
|
||||
if (minutes < 10) {
|
||||
minutes = `0${minutes}`;
|
||||
}
|
||||
|
||||
if (seconds < 10) {
|
||||
seconds = `0${seconds}`;
|
||||
}
|
||||
|
||||
if (hours > 0) {
|
||||
return `${hours}:${minutes}:${seconds}`;
|
||||
} else {
|
||||
|
|
@ -187,6 +197,7 @@ async function playVideo() {
|
|||
btnpp.innerHTML = "play_arrow";
|
||||
}
|
||||
}
|
||||
|
||||
function bpp() {
|
||||
if (video.paused) {
|
||||
playVideo();
|
||||
|
|
@ -341,6 +352,7 @@ document.onkeydown = function (a) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// media session
|
||||
function nowPlaying(sel) {
|
||||
nowPlaying = sel
|
||||
|
|
@ -359,6 +371,7 @@ function nowPlaying(sel) {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
function updatePositionState() {
|
||||
if ('setPositionState' in navigator.mediaSession) {
|
||||
navigator.mediaSession.setPositionState({
|
||||
|
|
@ -368,6 +381,7 @@ function updatePositionState() {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
if ('mediaSession' in navigator) {
|
||||
navigator.mediaSession.setActionHandler('play', bpp);
|
||||
navigator.mediaSession.setActionHandler('pause', bpp);
|
||||
|
|
|
|||
Loading…
Reference in a new issue