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