Spotify tamamen bir podcast uygulamasına döndüğü için tekrardan uzaklaşmak zorunda kaldım. Bu süre zarfında Deezer’ı deneyip en son yine Youtube Müzik’e geçtim.

Bu sefer Soundiiz kullanarak Spotify ve Deezer’daki şarkıları YTMüzik’e geçirirken aynı şarkılar bir kaç kere çalma listedinde belirmeye başladı. Anlayacağınız ortalık bir miktar karıştı.

İşinizi tamamen çözmese de büyük oranda sorunu halledecek bir kaç tane JavaScript kod paylaşacağım. Youtube’un bunlar için kolay bir yöntem sağlamıyor olması ve bizim bu tarz çözümlere başvuruyor olmamız da artık onların ayıbı.

Tüm bu kodlar tarayıcı üzerinden F12 tuşuna basıp konsol  sekmesine geçilerek çalıştırılacaktır.

Aynı/Çift Şarkıları Kaldırma  

Şimdi burada aynı derken gerçekten aynı olmasından bahsediyoruz. Farklı kullanıcıların yüklediği aynı şarkılar ne yazık ki birebir kopya sayılmıyor bundan dolayı bunlara dokunulmayacak; yani tek tek elle temizlemek gerekecek. Youtube üzerinden işlem yapmak istediğimiz oynatma listesini açıyoruz. Anasayfada soldaki kısımdan direkt tıklayarak açabilirsiniz. Daha sonra konsol üzerinden aşağıdaki kodu çalıştırıyoruz.

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function $$(selector,context=document.documentElement){return[...context?.querySelectorAll?.(selector) ?? []]}

async function removeduplicates(
) {
let titles = $$("#primary a#video-title")
.filter((i,j,k)=>k.
findIndex(k=>k.href.includes(Object.fromEntries(new URLSearchParams(i.href))['https://www.youtube.com/watch?v']))!==j)
for (let i = 0; i < titles.length; i++) {
titles[i].focus()
titles[i].closest("#contents > *").querySelector('button[aria-label="İşlem menüsü"]').click()
await sleep(100)
var things = document.evaluate(
'//span[contains(text(),"listesinden kaldır")]',
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)
}
}

removeduplicates()

Beğenilen Videoları / Şarkıları Kaldırma  

Beğenilen videoları Youtube üzerinden kaldırınca beğenilen şarkılar da kalkıyormuş (ne yazık ki). Öncelikle tarayıcıdan Beğenilen Videolar sayfasını açıyoruz ve konsol üzerinden aşağıdaki kodu çalıştırıyoruz.

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

async function deleteLikedVideos(
) {
`use strict`;
var items = document.querySelectorAll(
`#primary ytd-playlist-video-renderer yt-icon-button.dropdown-trigger > button[aria-label]`
);
var out;

for (var i = 0; i < items.length; i++) {
items[i].click();
out = setTimeout(function (
) {
if (
document.querySelector(
`tp-yt-paper-listbox.style-scope.ytd-menu-popup-renderer`
).lastElementChild
) {
document
.querySelector(
`tp-yt-paper-listbox.style-scope.ytd-menu-popup-renderer`
)
.lastElementChild.click();
}
}, 100);
await sleep(500);
clearTimeout(out);
}
}

deleteLikedVideos();

Kitaplıktaki Şarkılar, Sanatçılar ve Abonelikleri Kaldırma  

Youtube Müzik üzerinden kitaplığınızı açın. Daha sonra işlem yapmak istediğiniz sekmeye geçin (şarkılar, sanatçılar, abonelikler) ve alttaki kodu konsol üzerinden çalıştırınız. Burada dikkat etmeniz gereken abonelikler kısmında kodu bir kere çalıştırırsanız abonelikten çıkar, sayfayı yenilemeden tekrar çalıştırırsanız tekrar abone olur.

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

async function deleteLibSongs() {
`use strict`;
var items = document.body.querySelectorAll(
".dropdown-trigger.ytmusic-menu-renderer"
);
var out;

for (var i = 0; i < items.length; i++) {
items[i].click();
out = setTimeout(function () {
if (
document.querySelector(
`ytmusic-toggle-menu-service-item-renderer.ytmusic-menu-popup-renderer`
).lastElementChild
) {
document
.querySelector(
`ytmusic-toggle-menu-service-item-renderer.ytmusic-menu-popup-renderer`
)
.lastElementChild.click();
}
}, 100);
await sleep(500);
clearTimeout(out);
}
}

deleteLibSongs();