您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds Buttons to your favorite playlists.
当前为
// ==UserScript== // @name Playlists buttons V3 // @version 3 // @description Adds Buttons to your favorite playlists. // @author Bliwi // @match https://soundcloud.com/* // @grant none // @run-at document-end // @noframes // @license MIT // @namespace https://greasyfork.org/users/943433 // ==/UserScript== (function() { 'use strict'; //Load things setTimeout(function welcome(){ var root = document.documentElement; root.style.setProperty('--welcome', 'none'); }, 100); var savedUrls = JSON.parse(localStorage.getItem('urls')); var savedNames = JSON.parse(localStorage.getItem('names')); let currentPage = location.href; setTimeout(playlistsLoad, 500); setInterval(function() { if(!document.querySelector('.pinbutton')){ if(window.location.href.indexOf("com/you/sets") != -1){ pinToSidebar(); } }; }, 500); //console.log(savedNames); //add new playlist button function pinToSidebar() { //Pin button let button = document.createElement('a'); let header = document.querySelector('.collectionNav'); button.className = 'pinbutton'; button.innerHTML = '📌'; header.insertBefore(button, header.children[2]); //Clear setTimeout(function clear(){ let button = document.createElement('a'); let header = document.querySelector('.collectionNav'); button.className = 'pinbutton'; button.innerHTML = '🗑️'; header.insertBefore(button, header.children[2]); button.onclick = function (){ if (confirm("Are you sure you want to remove all the pinned playlists?")){ var savedUrls = []; var savedNames = []; localStorage.setItem('names', JSON.stringify(savedNames)); localStorage.setItem('urls', JSON.stringify(savedUrls)); location.reload();} } },10) //Plus Button setTimeout( function plus() { let button = document.createElement('a'); let header = document.querySelector('.collectionNav'); button.className = 'pinbutton'; button.innerHTML = '➕'; header.insertBefore(button, header.children[2]); button.onclick = function (){ var newName = prompt('Enter the name of the playlist:'); if (newName) { var newURL = prompt('Enter the URL for the playlist:'); if (newURL) { var modifiedUrl = newURL.replace('https://soundcloud.com', '').replace('http://soundcloud.com', ''); savedUrls.push(modifiedUrl); savedNames.push(newName); console.log(savedNames); console.log(savedUrls); localStorage.setItem('names', JSON.stringify(savedNames)); localStorage.setItem('urls', JSON.stringify(savedUrls)); if (confirm("Done pinning,Soundfy will now reload to take effect.")){location.reload();} } } } }, 10); //Extract the playlists button.onclick = function (){ button.innerHTML = 'Extracting the playlists'; setTimeout(function done(){ if (confirm("Done pinning,Soundfy will now reload to take effect.")){location.reload();} },1000) // Query the elements on the page var elements = document.querySelectorAll('a.sc-link-primary.sc-link-dark.sc-type-light.sc-text-secondary.playableTile__mainHeading.playableTile__heading.audibleTile__audibleHeading.sc-truncate.sc-font-light.sc-text-h4'); // Store the URLs in variables // var urls = []; var names = []; for (var i = 0; i < elements.length; i++) { let button = document.createElement('a'); let header = document.querySelector('.collectionSection__top'); header.style.display = "block !important"; button.innerHTML = modnames3; header.insertBefore(button, header.children[2]); button.className = 'playlist-name'; var url = elements[i].href; var modifiedUrl = url.replace('https://soundcloud.com', '').replace('http://soundcloud.com', ''); var modnames = url.replace('https://soundcloud.com/', '').replace('http://soundcloud.com/', ''); var modnames2 = modnames.replace('-', ' ').replace('-', ' '); var modnames3 = modnames2.replace('/sets/', ' - ').replace('/sets/', ' - '); names.push(modnames3); urls.push(modifiedUrl); } console.log(urls); console.log(names); //Save the Urls and names to the local storage // localStorage.setItem('urls', JSON.stringify(urls)); localStorage.setItem('names', JSON.stringify(names)); }; } //functions //Load the playlists function playlistsLoad() { for (var i = 0; i < savedUrls.length; i++) { var url = savedUrls[i]; var name = savedNames[i]; insertButton(name,url); } } //Insert the buttons function insertButton(playlistname,playlistlink) { let playlist = document.createElement('a'); let header = document.querySelector('.header__middle'); const i = savedNames.indexOf(playlistname); playlist.id = i; playlist.innerHTML = playlistname; playlist.className = 'playlist-button'; playlist.href = playlistlink; //Delete or rename playlist.ondblclick = function() { var newName = prompt('Enter a new name(del to delete):'); if (newName === 'del') { //delete savedNames[i]; savedNames.splice(i, 1); savedUrls.splice(i, 1); playlist.className = ''; playlist.innerHTML = ''; playlist.href = ''; console.log(savedNames); localStorage.setItem('names', JSON.stringify(savedNames)); localStorage.setItem('urls', JSON.stringify(savedUrls)); } else if (newName) { // Rename playlist.innerHTML = newName; savedNames[i] = newName; console.log(savedNames); localStorage.setItem('names', JSON.stringify(savedNames)); } } if (header) { header.insertBefore(playlist, header.children[2]); } else {setTimeout(playlistsLoad, 1000);} } })();