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);}
}
})();