gpt4 book ai didi

javascript - 是否有 javascript 可以删除 Youtube 播放列表中的重复视频?

转载 作者:行者123 更新时间:2023-12-05 01:30:40 25 4
gpt4 key购买 nike

YouTube discontinued remove duplicates 按钮从它的界面(大约在同一时间他们停止了他们的非聚合物界面),用户不知所措地删除他们的播放列表。我到处寻找工具来做到这一点,但无济于事。我发现这个脚本可以从播放列表中删除所有视频,想知道是否可以修改它(由比我更了解 javascript 的人修改)以仅删除重复的视频:

setInterval(function () {
document.querySelector('#primary button[aria-label="Action menu"]').click();
var things = document.evaluate(
'//span[contains(text(),"Remove from")]',
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);

最佳答案

实际上(截至 2021-11-07)仍然有一种官方方法可以创建播放列表的新的无重复副本:

  1. 打开 Youtube Music 并创建一个播放列表 https://music.youtube.com/library/playlists(播放列表需要在youtube music上创建,否则播放列表在youtube music上是看不到的...)

  2. 在常规 youtube 上打开您要从中删除重复项的播放列表,例如:https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb

  3. 使用第一个视频的菜单(视频右侧的三个点)并选择“保存到播放列表”并将播放列表的第一个视频保存到新创建的 youtube 音乐播放列表(已创建在步骤 1)

  4. 将您网址中的 www 替换为 music 以访问旧播放列表的 youtube 音乐 View ,例如:https://music.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb

  5. 使用菜单(三个点)并选择“添加到播放列表”将您的旧播放列表添加到新的(在步骤 1 中创建的)播放列表。因为新播放列表已经包含您旧播放列表的视频(在第 3 步中添加),您现在会收到一个问题,如果您想跳过重复项,所以...

  6. ...您选择“跳过重复项”。这似乎不仅会跳过最初已包含在新播放列表中的视频,而且只会将旧播放列表的每个视频添加一次,从而删除重复项。


备选方案:Javascript 解决方案:

这不是很好,因为它似乎只能在每次按下按钮后进入休眠状态,但这对我有用:

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

async function removeduplicates() {
let titles = document.querySelectorAll('#primary #video-title')
let href_pattern = RegExp('https?://www\\.youtube\\.com/watch\\?v=[^&]*&list=[^&]*&index=')
titles = Array.from(titles).filter(t => href_pattern.test(t.href))
let lastid='';
for (let i = 0; i < titles.length; i++) {
let id = titles[i].href.match(/\\?v=([^&]+)/)[1]
if(id == lastid){
titles[i].focus()
titles[i].parentElement.parentElement.parentElement.parentElement.parentElement.querySelector('button[aria-label="Action menu"]').click()
await sleep(100)
var things = document.evaluate(
'//span[contains(text(),"Remove from")]',
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
await sleep(300)
for (var j = 0; j < things.snapshotLength; j++) {
things.snapshotItem(j).click();
}
console.log(titles[i].innerText)
}
lastid=id;
}
}

removeduplicates()

另请注意,它仅在您的语言设置为英语时才有效,因为删除按钮是通过字符串“Remove from”找到的。

要运行它,您需要位于播放列表的播放列表页面(例如 https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb ),您要从中删除重复项。然后按 F12,将代码粘贴到 javascript 控制台并按 enter。

注意:仅当两个相同的视频紧随其后时,才会删除重复项,因此您需要按例如播放列表排序。视频发布日期。

注意2:只考虑当前加载到浏览器窗口中的视频,因此您需要向下滚动到播放列表的末尾,这样才能真正加载所有视频。

关于javascript - 是否有 javascript 可以删除 Youtube 播放列表中的重复视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66940041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com