Как пропускать видео в плейлисте музыкального сообщества YouTube?Html

Программисты Html
Ответить
Anonymous
 Как пропускать видео в плейлисте музыкального сообщества YouTube?

Сообщение Anonymous »

Я хочу воспроизводить только песни из плейлиста сообщества YouTube Music и пропускать видео. Я определил, что основное различие между ними заключается в том, что для проприетарного тега ytmusic-response-list-item-renderer, который является внешним контейнером для каждого элемента в списке воспроизведения, песни имеют атрибут must-render-subtitle-separators, а видео — нет.
Примерным плейлистом сообщества может быть JROCK. В него входят 4 песни: -CHAIN-, проклятие CRIMSON, 偽りのディストピア и 無限廻廊 - mugenkairou. Остальное видео. Я хочу воспроизвести только 4 песни и пропустить 11 видео.
Я попробовал использовать следующий букмарклет в Firefox. Никакого эффекта.

Код: Выделить всё

javascript: (function () {
{
if (window.skipVideos == "TRUE") {
return;
}
}
window.skipVideos = "TRUE";
const likeContainer = document.getElementById(
"ytmusic-responsive-list-item-renderer"
);
const nextButton = document.getElementsByClassName("next-button")[0];
if (!ytmusic-responsive-list-item-renderer || !nextButton) {
throw new Error("Failed to find list item renderer and next buttons");
}
setInterval(() => {
if (!ytmusic-responsive-list-item-renderer
.getAttribute("should-render-subtitle-separators") === ""
) {
nextButton.click();
}
}, 2000);
})();
Намерение при первом использовании — настроить вкладку/окно для нажатия следующей кнопки для всех элементов в списке воспроизведения, в которых отсутствует атрибут must-render-subtitle-separators в теге ytmusic-Response-list-item-renderer. Если я случайно щелкну букмарклет во второй раз, он немедленно закроется, поскольку я предположительно уже настроил его поведение.
(начните редактирование, чтобы ответить на комментарий @yogi)
В приведенном выше коде я использую «ytmusic-Response-list-item-renderer» для ссылки на собственный тег YouTube Music, который является контейнером для одной песни или видео. Если такой тег не содержит в этом же теге атрибута must-render-subtitle-separators, то я хочу нажать кнопку «Далее». (Технически мой код проверяет нулевое значение в этом атрибуте, но именно это и содержит код.) Вот пример тега для песни: А вот образец того же тега для видео: (конец редактирования)
Я сравниваю этот букмарклет с букмарклетом, который я изменил из «Автомагический пропуск нелюбимых песен на YouTube Music», и который работает по назначению: для пропуска нелюбимых песен:

Код: Выделить всё

javascript: (function () {
{
if (window.skipDisliked == "TRUE") {
return;
}
}
window.skipDisliked = "TRUE";
const likeContainer = document.getElementById("like-button-renderer");
const nextButton = document.getElementsByClassName("next-button")[0];
if (!likeContainer || !nextButton) {
throw new Error("Failed to find dislike and next buttons");
}
setInterval(() => {
if (likeContainer.getAttribute("like-status") === "DISLIKE") {
nextButton.click();
}
}, 2000);
})();
Поскольку я внес лишь минимальное количество изменений между ними, я не уверен, почему опция пропуска видео не работает.
В качестве примечания: я могу скрыть видео с помощью следующего CSS, но это не влияет на воспроизведение:
(исправленный код 04.11.25)

Код: Выделить всё

body:has(ytmusic-responsive-list-item-renderer[should-render-subtitle-separators]) ytmusic-responsive-list-item-renderer:not([should-render-subtitle-separators]) {
display: none !important;
}
Меня интересует одна вещь: удалить из объектной модели документа все узлы, имеющие тег ytmusic-Response-list-item-renderer без атрибута must-render-subtitle-separators, но я обеспокоен тем, что это может нарушить работу JavaScript YouTube и привести к поломке самой страницы. Преимущество приведенного выше сценария заключается в том, что он не будет вмешиваться в DOM.

Подробнее здесь: https://stackoverflow.com/questions/798 ... y-playlist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»