Skip to content

Commit ffcd8ce

Browse files
authored
Add files via upload
1 parent 824e585 commit ffcd8ce

File tree

2 files changed

+64
-25
lines changed

2 files changed

+64
-25
lines changed

manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "YT-Nonstop",
3-
"version": "1.3.0",
3+
"version": "1.4.0",
44
"description": "Deletes the annoying \"Video paused. Continue watching?\" confirmation on YouTube and keeps YouTube running nonstop without autoplay message!",
55
"permissions": [ "storage", "https://www.youtube.com/*", "https://music.youtube.com/*", "https://m.youtube.com/*" ],
66
"background": {
@@ -9,7 +9,7 @@
99
"content_scripts": [
1010
{
1111
"matches": [ "https://www.youtube.com/*", "https://music.youtube.com/*", "https://m.youtube.com/*" ],
12-
"js": [ "autoconfirm.js", "script.js" ],
12+
"js": [ "script.js" ],
1313
"run_at": "document_end"
1414
}
1515
],

script.js

Lines changed: 62 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,38 +24,61 @@ let YTNonstop = (function YTNonstop(options) {
2424
// setters
2525
setAutoSkip: function(value) { return autotube._autoSkip = value},
2626
}
27-
const player = () => document.getElementById('movie_player');
27+
const YTMusic = window.location.hostname === 'music.youtube.com';
28+
const videoPlayer = document.getElementById('movie_player');
29+
30+
function getTimestamp() {
31+
return new Date().toLocaleTimeString();
32+
}
33+
function log(message) {
34+
console.log(`[YT-Nonstop | ${getTimestamp()}] ${message}`);
35+
}
2836

2937
// .getPlayerState(): -1 = unstarted, 0 = ended, 1 = playing, 2 = paused, 3 = buffering, 5 = video cued
30-
// if video ended ---> skip to next video
38+
// if video paused ---> play video
39+
const play = () => {
40+
const popupEventNodename = YTMusic ? document.querySelector('YTMUSIC-YOU-THERE-RENDERER') :
41+
document.querySelector('YT-CONFIRM-DIALOG-RENDERER');
42+
const popupContainer = YTMusic ? document.getElementsByTagName('ytmusic-popup-container')[0] :
43+
document.getElementsByTagName('ytd-popup-container')[0];
44+
45+
if (videoPlayer.getPlayerState() === 2 && popupEventNodename) {
46+
videoPlayer.playVideo();
47+
popupContainer.remove();
48+
log('Popup hidden and video played again');
49+
}
50+
}
51+
52+
// if video ended ---> skip to next video
3153
const skip = () => {
32-
if (player().getPlayerState() === 0 && !YTMusic) {
54+
if (videoPlayer.getPlayerState() === 0 && !YTMusic) {
3355
const overlay = document.querySelector('.ytp-autonav-endscreen-countdown-overlay[style="display: none;"]');
34-
const play = document.querySelector('.ytp-autonav-endscreen-upnext-play-button');
35-
const cancel = document.querySelector('.ytp-autonav-endscreen-upnext-cancel-button');
36-
37-
if (overlay) {
38-
log('Return skip; autonav-endscreen is not visible.');
39-
return;
40-
} else
41-
if (autotube.getIsAutoSkip() == true) {
42-
play.click();
56+
const overlay_v = document.getElementsByClassName('ytp-autonav-endscreen-countdown-overlay')[0];
57+
const next = document.getElementsByClassName('ytp-autonav-endscreen-upnext-play-button')[0];
58+
const cancel = document.getElementsByClassName('ytp-autonav-endscreen-upnext-cancel-button')[0];
59+
const autonav_off = document.querySelector('.ytp-autonav-toggle-button-container > .ytp-autonav-toggle-button[aria-checked="false"]');
60+
61+
if (autotube.getIsAutoSkip() == true && (!overlay || autonav_off)) {
62+
// videoPlayer.setAutonav(true);
63+
// videoPlayer.nextVideo();
64+
overlay_v.remove();
65+
next.click();
4366
log('Skipped to next video');
4467
} else
45-
if (autotube.getIsAutoSkip() == false) {
46-
// player().setAutonav(false);
68+
if (autotube.getIsAutoSkip() == false && !overlay) {
69+
// videoPlayer.setAutonav(false);
70+
overlay_v.remove();
4771
cancel.click();
48-
document.querySelector('.ytp-autonav-endscreen-countdown-overlay').remove();
4972
log('Canceled next video');
5073
}
5174
}
5275
}
5376

5477
const autonav_button = () => {
55-
const autonav_on = document.querySelector('.ytp-autonav-toggle-button-container > .ytp-autonav-toggle-button[aria-checked="true"]')
56-
|| document.querySelector('#automix[role="button"][aria-pressed="true"]');
57-
const autonav_off = document.querySelector('.ytp-autonav-toggle-button-container > .ytp-autonav-toggle-button[aria-checked="false"]')
58-
|| document.querySelector('#automix[role="button"][aria-pressed="false"]');
78+
const autonav_on = YTMusic ? document.querySelector('#automix[role="button"][aria-pressed="true"]') :
79+
document.querySelector('.ytp-autonav-toggle-button-container > .ytp-autonav-toggle-button[aria-checked="true"]');
80+
const autonav_off = YTMusic ? document.querySelector('#automix[role="button"][aria-pressed="false"]') :
81+
document.querySelector('.ytp-autonav-toggle-button-container > .ytp-autonav-toggle-button[aria-checked="false"]');
5982

6083
if (autotube.getIsAutoSkip() == true && autonav_off) {
6184
autonav_off.click();
@@ -68,19 +91,20 @@ let YTNonstop = (function YTNonstop(options) {
6891
}
6992

7093
const autonav_button_style = () => {
71-
const autonav = document.querySelector('.ytp-button[data-tooltip-target-id="ytp-autonav-toggle-button"]')
72-
|| document.querySelector('ytmusic-app .autoplay.ytmusic-tab-renderer');
94+
const autonav = YTMusic ? document.getElementsByClassName('autoplay')[1] :
95+
document.querySelector('.ytp-button[data-tooltip-target-id="ytp-autonav-toggle-button"]');
7396

7497
autonav.setAttribute("style", "height:0px; width:0px; opacity:0");
7598
log('Hide autoplay/autonav, since the button is overriden');
7699
}
77100

78101
function run() {
79102
const play_button = {
80-
getButton: window.document.querySelector('.ytp-play-button.ytp-button')
103+
getButton: window.document.getElementsByClassName('ytp-play-button ytp-button')[0]
81104
|| window.document.getElementById('play-pause-button'),
82105
config: { attributes: true, childList: true, subtree: true },
83106
callback: (mutationsList, observer) => {
107+
play();
84108
skip();
85109
}
86110
}
@@ -108,7 +132,22 @@ let YTNonstop = (function YTNonstop(options) {
108132
setAutonavButton: setInterval(() => {
109133
if (window.location.href.indexOf("/watch") == -1 ) return;
110134
autonav_button();
111-
}, 5000)
135+
}, 5000),
136+
137+
// Autoplay Method 1: Set last time active all 20 minutes to now
138+
// Autoplay Method 2: If video paused and popup visible ---> play video
139+
// Autoplay Method 3: Pause and UnPause after 20 minutes
140+
setOtherMethods: setInterval(() => {
141+
if (window.location.href.indexOf("/watch") == -1 ) return;
142+
window._lact = Date.now();
143+
log('Reset last time active');
144+
play();
145+
// if (videoPlayer.getPlayerState() === 1) {
146+
// videoPlayer.pauseVideo();
147+
// videoPlayer.playVideo();
148+
// log('Paused and unpaused video');
149+
// }
150+
}, 600000)
112151
}
113152

114153
return autotube;

0 commit comments

Comments
 (0)