Advertisement
AK-47_AUTO_FEM

Yandex Music PlayList Duplicate Remover

Apr 26th, 2020
12,745
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. async function get_playlist(owner, playlist_id) {url = "https://music.yandex.ru/handlers/playlist.jsx?owner=" + owner + "&kinds=" + playlist_id + "&light=true&madeFor=&lang=ru&external-domain=music.yandex.ru&overembed=false&ncrnd=0.433024083735819"; var playlist = null;await $.get(url).done(function(data) {playlist = data.playlist;});return playlist;}; async function playlist_patch(owner_id, playlist_id, data, revision_id) {url = "https://music.yandex.ru/handlers/playlist-patch.jsx";await $.post(url, {owner: owner_id, kind: playlist_id,revision: revision_id,diff: JSON.stringify(data),lang: "ru",sign: Mu['authData']['user']['sign'],experiments: JSON.stringify(Mu['experiments']),"external-domain": "music.yandex.ru"}).done(function(data) {console.log('done');}).error(function(data){console.log(data);});};function get_name(item, sort_by_name=false) { if(sort_by_name) {let a_name = item['title'];let a_artists = " - ";item['artists'].forEach(function(art) { a_artists += art['name'] + ", ";});a_name += a_artists;return a_name;} else {let a_name = "";item['artists'].forEach(function(art) { a_name += art['name'] + ", ";});a_name = a_name + " - " + item['title'];return a_name;}};function get_track_ids(tracks) { var track_ids = [];for(i=0; i < tracks.length; i++) {if( tracks[i]["albums"] > 0) {track_ids.push({"id": tracks[i]["id"],"albumId": tracks[i]["albums"][0]["id"]});} else {track_ids.push({"id": tracks[i]["id"]});}}return track_ids;};async function del_duplicates() { let username = Mu['authData']['user']['login'];let playlist_id = (Mu["pages"]["current"]["currSelected"] != undefined) ? Mu["pages"]["current"]["currSelected"]["data"]["playlist"]["kind"]:Mu["pages"]["current"]["kind"];  playlist = await get_playlist(username, playlist_id);revision_id = playlist['revision']; tracks = playlist["tracks"]; let track_count = tracks.length;let list = tracks;list = list.reduce((accumulator, thing) => {if (!accumulator.filter((duplicate) => get_name(thing) === get_name(duplicate))[0]) {accumulator.push(thing);}return accumulator;}, []);tracks = list;var track_ids = get_track_ids(tracks);patch_data = [{"op":"insert","at":0,"tracks":track_ids}];await playlist_patch(Mu['authData']['user']['uid'], playlist_id, patch_data, revision_id ); delete_data = [{"op":"delete","from":tracks.length,"to": tracks.length + track_count}];await playlist_patch(Mu['authData']['user']['uid'], playlist_id, delete_data, revision_id + 1);location.reload(true);console.log('delete duplicates clicked');};function injected_main() { var context_menu_list = document.getElementsByClassName("d-context-menu__list");if(context_menu_list.length >= 1) { for (i = 0; i < context_menu_list.length; i++) {var context_menu_list_item = context_menu_list[i];var sort_menu_injected = false;var del_duplicates_menu_injected = false;var child_nodes = context_menu_list_item.children;for (j = 0; j < child_nodes.length; j++) {if (child_nodes[j].classList.contains("d-context-menu__item_del_duplicates")) {del_duplicates_menu_injected = true;}} if(del_duplicates_menu_injected == false) { var del_duplicates_button = document.createElement("li");del_duplicates_button.classList.add("d-context-menu__item");del_duplicates_button.classList.add("deco-popup-menu__item");del_duplicates_button.classList.add("d-context-menu__item_del_duplicates");del_duplicates_button.onclick = del_duplicates;var span = document.createElement("span");span.classList.add("d-context-menu__item-icon");var span_icon = document.createElement("span");span_icon.classList.add("d-icon");span_icon.classList.add("deco-icon");span_icon.classList.add("d-icon_sun");var span_image = document.createElement("img");span_image.width = 24;span_image.height = 24;span_image.src = "https://static.thenounproject.com/png/217757-200.png";span_image.classList.add("d-icon_sort");span_icon.appendChild(span_image);span.appendChild(span_icon);del_duplicates_button.appendChild(span);var span_title = document.createElement("span");span_title.classList.add("d-context-menu__item-title");span_title.innerHTML = "Удалить дубликаты";del_duplicates_button.appendChild(span_title);context_menu_list_item.appendChild(del_duplicates_button);}}}var tid = setTimeout(injected_main, 300)};injected_main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement