-
Notifications
You must be signed in to change notification settings - Fork 0
/
youtubemusic-autoskip.js
66 lines (59 loc) · 1.83 KB
/
youtubemusic-autoskip.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// ==UserScript==
// @name YouTube Music Auto Skip
// @namespace https://lixquid.com/
// @version 0.1
// @author Lixquid
// @description Automatically skips songs on YouTube Music depending on user-defined rules.
// @license MIT
// @supportURL https://github.com/Lixquid/js-monkey-userscripts/issues
// @icon https://www.google.com/s2/favicons?domain=music.youtube.com
// @match https://music.youtube.com/*
// @grant none
// ==/UserScript==
(function () {
"use strict";
//// OPTIONS ////
// Rules contain a title and/or artist to match against.
// If both are present, both must match.
const rules = [
{
title: "title name",
},
{
artist: "artist name",
},
{
title: "title",
artist: "and artist",
},
];
//// DO NOT EDIT BELOW THIS LINE ////
setInterval(() => {
/** @type string */
const songTitle =
document
.querySelector(".ytmusic-player-bar .title")
?.innerText.toLowerCase() ?? "";
/** @type string */
const songArtist =
document
.querySelector(".ytmusic-player-bar .byline")
?.innerText.toLowerCase() ?? "";
if (songTitle === "" && songArtist === "") {
return;
}
for (const { title, artist } of rules) {
if (!title && !artist) {
continue;
}
if (title && !songTitle.includes(title.toLowerCase())) {
continue;
}
if (artist && !songArtist.includes(artist.toLowerCase())) {
continue;
}
document.querySelector(".ytmusic-player-bar .next-button").click();
break;
}
}, 5000);
})();