diff --git a/app/index.html b/app/index.html
index 6afccc6..bfb0d10 100644
--- a/app/index.html
+++ b/app/index.html
@@ -195,7 +195,7 @@
+ aria-haspopup="true" aria-expanded="false" data-name="btnpl" disabled>
playlist_play
-
@@ -226,6 +225,15 @@
+
+
+ queue_music
+
+
+
00:00
diff --git a/app/js/animeHandler.js b/app/js/animeHandler.js
index 9f6623a..fdf4d96 100644
--- a/app/js/animeHandler.js
+++ b/app/js/animeHandler.js
@@ -510,9 +510,6 @@ async function nyaaSearch(media, episode) {
if (parseInt(episode) < 10) {
episode = `0${episode}`
}
- if (media.status == "FINISHED") {
-
- }
let table = document.querySelector("tbody.results")
let results = await nyaaRss(media, episode)
@@ -617,8 +614,10 @@ async function releasesRss() {
let media = await resolveName(regexParse[2], "SearchReleasesSingle"),
template = cardCreator(media, regexParse[2], episode)
- template.onclick = () => {
+ template.onclick = async () => {
addTorrent(i('link').textContent, media, episode)
+ let res = await alRequest(media.id, "SearchIDSingle")
+ store[regexParse[2]] = res.data.Media // force updates entry data on play in case its outdated, needs to be made cleaner and somewhere else...
}
frag.appendChild(template)
}
diff --git a/app/js/playerHandler.js b/app/js/playerHandler.js
index 15396e5..225590d 100644
--- a/app/js/playerHandler.js
+++ b/app/js/playerHandler.js
@@ -60,6 +60,7 @@ function cleanupVideo() { // cleans up objects, attemps to clear as much video c
}
nowPlayingDisplay.textContent = ""
onProgress = undefined;
+ bcap.setAttribute("disabled", "")
bnext.removeAttribute("disabled")
navNowPlaying.classList.add("d-none")
if ('mediaSession' in navigator)
@@ -86,6 +87,11 @@ async function buildVideo(file, nowPlaying) {
video.addEventListener("canplay", resetBuffer);
video.addEventListener("loadeddata", initThumbnail);
video.addEventListener("loadedmetadata", updateDisplay);
+ video.onloadedmetadata = () => {
+ updateDisplay();
+ if (video.audioTracks && video.audioTracks.length > 1)
+ baudio.removeAttribute("disabled")
+ }
video.addEventListener("ended", autoNext);
video.addEventListener("waiting", isBuffering);
video.addEventListener("timeupdate", updateDisplay);
@@ -172,7 +178,7 @@ let onProgress
// visibility loss
document.addEventListener("visibilitychange", () => {
- if (settings.player10 && typeof video !== 'undefined')
+ if (settings.player10 && typeof video !== 'undefined' && !video.ended)
document.visibilityState === "hidden" ? video.pause() : playVideo();
})
@@ -445,7 +451,7 @@ updateVolume(parseInt(settings.player1))
// PiP
async function btnpip() {
- if (typeof video !== 'undefined') {
+ if (typeof video !== 'undefined' && video.readyState) {
if (!playerData.octopusInstance) {
video !== document.pictureInPictureElement ? await video.requestPictureInPicture() : await document.exitPictureInPicture();
} else {
@@ -591,12 +597,7 @@ function btncap() {
}
function selectLang(lang) {
for (let track of video.textTracks) {
- if (track.language == lang) {
- track.mode = 'showing';
- }
- else {
- track.mode = 'hidden';
- }
+ track.language == lang ? track.mode = 'showing' : track.mode = 'hidden';
}
btncap()
}
@@ -620,6 +621,31 @@ function btnpl() {
playlistMenu.appendChild(frag)
}
+// audio tracks
+
+function btnaudio() {
+ let frag = document.createDocumentFragment()
+ for (let track of video.audioTracks) {
+ let template = document.createElement("a")
+ template.classList.add("dropdown-item", "pointer", "text-capitalize")
+ template.innerHTML = track.language || (!Object.values(video.audioTracks).some(track => track.language == "eng" || track.language == "en") ? "eng" : track.label)
+ track.enabled == true ? template.classList.add("text-white") : template.classList.add("text-muted")
+ template.onclick = () => {
+ selectAudio(track.id)
+ }
+ frag.appendChild(template)
+ }
+
+ audioTracksMenu.textContent = '';
+ audioTracksMenu.appendChild(frag)
+}
+function selectAudio(id) {
+ for (let track of video.audioTracks) {
+ track.id == id ? track.enabled = true : track.enabled = false;
+ }
+ seek(-1); // stupid fix because video freezes up when chaging tracks
+ btnaudio()
+}
// keybinds
document.onkeydown = (a) => {
diff --git a/app/js/settingsHandler.js b/app/js/settingsHandler.js
index f553827..66c8451 100644
--- a/app/js/settingsHandler.js
+++ b/app/js/settingsHandler.js
@@ -44,6 +44,7 @@ function registerProtocol() {
if (!localStorage.getItem("settings")) {
saveSettings()
+ location.reload()
} else {
settings = JSON.parse(localStorage.getItem("settings"))
}
diff --git a/app/js/subtitleOctopus.js b/app/js/subtitleOctopus.js
index 73e5138..28d6e94 100644
--- a/app/js/subtitleOctopus.js
+++ b/app/js/subtitleOctopus.js
@@ -8,6 +8,7 @@ function subStream(stream) {
} else {
playerData.subtitleStream = new SubtitleStream()
playerData.subtitleStream.once('tracks', pTracks => {
+ bcap.removeAttribute("disabled")
pTracks.forEach(track => {
if (track.type == "ass") {
if (!playerData.headers) {
diff --git a/app/js/torrentHandler.js b/app/js/torrentHandler.js
index d04d70b..334b081 100644
--- a/app/js/torrentHandler.js
+++ b/app/js/torrentHandler.js
@@ -10,7 +10,7 @@ window.onbeforeunload = () => {
}
client.torrents[0] ? client.torrents[0].destroy() : ""
client.destroy()
- resetVideo()
+ cleanupVideo()
if (playerData.fonts) {
playerData.fonts.forEach(file => {
URL.revokeObjectURL(file)