Skip to content

Commit

Permalink
YouTube: Audio Only | Bug Fix
Browse files Browse the repository at this point in the history
Bug fix for Audio NetworkState
  • Loading branch information
cyfung1031 committed Feb 4, 2024
1 parent f87bc35 commit 3f962cd
Showing 1 changed file with 94 additions and 15 deletions.
109 changes: 94 additions & 15 deletions 484611-youtube-audio-only.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// @name YouTube: Audio Only
// @description No Video Streaming
// @namespace UserScript
// @version 1.6.8
// @version 1.7.0
// @author CY Fung
// @match https://www.youtube.com/*
// @match https://www.youtube.com/embed/*
Expand Down Expand Up @@ -241,6 +241,48 @@

};

const mediaNetworkStateReady = async (audio) => {

if (!(audio instanceof HTMLMediaElement)) {
return '';
}
let done = false;
const et = await Promise.race([

new Promise(resolve => {
audio.addEventListener('timeupdate', (evt) => {
!done && resolve && resolve(evt.type);
resolve = null
}, { once: true, capture: true, passive: true })
}),

new Promise(resolve => {
audio.addEventListener('waiting', (evt) => {
!done && resolve && resolve(evt.type);
resolve = null
}, { once: true, capture: true, passive: true })
}),

new Promise(resolve => {
audio.addEventListener('loadstart', (evt) => {
!done && resolve && resolve(evt.type);
resolve = null
}, { once: true, capture: true, passive: true })
}),

new Promise(resolve => {
audio.addEventListener('durationchange', (evt) => {
!done && resolve && resolve(evt.type);
resolve = null
}, { once: true, capture: true, passive: true })
})

]);
done = true;
return et;

};

const updateLastActiveTimeAsync = (player_) => {
// TBC
Promise.resolve().then(() => {
Expand Down Expand Up @@ -673,7 +715,7 @@
return true;
}
} catch (e) {
console.log('error_F3',e);
console.log('error_F3', e);
}
};
const fixLiveAudioFn = async () => {
Expand Down Expand Up @@ -714,7 +756,20 @@
}
}
try {
const ns23 = audio.networkState == 2 || audio.networkState == 3;
let ns23 = audio.networkState == 2 || audio.networkState == 3;

if (!ns23 && k === player_.getPlayerState()) {
if (k === -1 && audio.readyState === 0) {
const et = await mediaNetworkStateReady(audio);
if (audio.isConnected === false || player_.getPlayerState() === 5) return;
ns23 = audio.networkState == 2 || audio.networkState == 3;
// console.log(503, ns23, et, player_.getPlayerState());
if (player_.getPlayerState() !== -1) return;
} else {
console.log(507, k, audio.readyState, audio.networkState)
}
}

if (k === -1 && player_.getPlayerState() === -1 && audio.readyState === 0 && ns23) {
await delayPn(200);
if (k === -1 && player_.getPlayerState() === -1 && audio.readyState === 0 && ns23) {
Expand Down Expand Up @@ -968,7 +1023,20 @@
}
try {

const ns23 = audio.networkState == 2 || audio.networkState == 3;
let ns23 = audio.networkState == 2 || audio.networkState == 3;

if (!ns23 && k === player_.getPlayerState()) {
if (k === -1 && audio.readyState === 0) {
const et = await mediaNetworkStateReady(audio);
if (audio.isConnected === false || player_.getPlayerState() === 5) return;
ns23 = audio.networkState == 2 || audio.networkState == 3;
console.log(513, ns23, et, player_.getPlayerState());
if (player_.getPlayerState() !== -1) return;
} else {
console.log(517, k, audio.readyState, audio.networkState)
}
}

if (k === -1 && player_.getPlayerState() === -1 && audio.readyState === 0 && ns23) {
await delayPn(200);
if (k === -1 && player_.getPlayerState() === -1 && audio.readyState === 0 && ns23) {
Expand Down Expand Up @@ -1348,9 +1416,20 @@
}
try {

const ns23 = audio.networkState == 2 || audio.networkState == 3
let ns23 = audio.networkState == 2 || audio.networkState == 3
// console.log(127001, k, player_.getPlayerState(), audio.readyState, ns23, audio.muted)

if (!ns23 && k === player_.getPlayerState()) {
if (k === -1 && audio.readyState === 0) {
const et = await mediaNetworkStateReady(audio);
if (audio.isConnected === false || player_.getPlayerState() === 5) return;
ns23 = audio.networkState == 2 || audio.networkState == 3;
console.log(523, ns23, et, player_.getPlayerState());
if (player_.getPlayerState() !== -1) return;
} else {
console.log(527, k, audio.readyState, audio.networkState)
}
}

if (removeBottomOverlayForMobile) await removeBottomOverlayForMobile(300);

Expand Down Expand Up @@ -2078,25 +2157,25 @@
const mt = ++mz;

let q = document.querySelector('#video-preview > ytd-video-preview.style-scope.ytd-app');
if(!q) return;
if (!q) return;
if (q.hasAttribute('active') && !q.hasAttribute('hidden')) {

}else{
} else {
return;
}


let inlinePreviewPlayer = null;
const ss = [HTMLElement.prototype.querySelector.call(q, '#inline-preview-player')].filter(e=>e && !e.closest('[hidden]'));
const ss = [HTMLElement.prototype.querySelector.call(q, '#inline-preview-player')].filter(e => e && !e.closest('[hidden]'));
if (ss && ss.length === 1) {
inlinePreviewPlayer = ss[0];
}
if(!inlinePreviewPlayer) return;
if (!inlinePreviewPlayer) return;

const f = ()=>{
const f = () => {
if (mz !== mt || !(q.hasAttribute('active') && !q.hasAttribute('hidden')) || !(inlinePreviewPlayer && inlinePreviewPlayer.isConnected === true)) {
mzId && clearInterval(mzId);
mzId= 0;
mzId = 0;
return;
}

Expand All @@ -2109,9 +2188,9 @@
if (q.hasAttribute('hide-volume-controls')) {
q.removeAttribute('hide-volume-controls')
}
if(s.classList.contains('playing-mode') && !q.hasAttribute('playing')){
q.setAttribute('playing','')

if (s.classList.contains('playing-mode') && !q.hasAttribute('playing')) {
q.setAttribute('playing', '')
}
}
mzId = setInterval(f, 40);
Expand All @@ -2131,7 +2210,7 @@
}

}, false);

}
})

Expand Down

0 comments on commit 3f962cd

Please sign in to comment.