Как пропускать видео в плейлисте музыкального сообщества 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, но это не влияет на воспроизведение:
(исправленный код 12.11.25; мигающее предупреждение о содержимом)

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

body:has(ytmusic-responsive-list-item-renderer[secondary-flex-columns*="MUSIC_PAGE_TYPE_ARTIST"]) ytmusic-responsive-list-item-renderer:has(img[src*=".ytimg."]) {
display: none !important;
}
Добавлено 12.11.25: Следует отметить одно постоянное различие между песнями и видео: источником миниатюр изображений для песен является lh3.googleusercontent.com, а для видео — i.ytimg.com. Однако используйте приведенный выше код CSS с осторожностью, так как он приводит к тому, что фильтрация видео или эпизодов мигает. Но я собираюсь продолжить свои попытки кодирования, основываясь на этой разнице. (конец дополнения)
Одна вещь, которая меня интересует, - это удаление всех узлов, имеющих тег ytmusic-Response-list-item-renderer без атрибута must-render-subtitle-separators из объектной модели документа, но я обеспокоен тем, что это повлияет на JavaScript YouTube и приведет к поломке самой страницы. Преимущество приведенного выше сценария в том, что он не будет возиться с DOM. (Добавлено 12.11.25 Хорошо, это не сработает, потому что идентификаторы неправильные, но я могу рассмотреть такой код, если возьму за основу домен миниатюр, как указано выше.)

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

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

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

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

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

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