NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Songlink for Google Music and Spotify // @description Replaces share links in Google Music, YouTube Music & Spotify with cross-provider links via song.link // @author okj579 // @license MIT // @icon https://song.link/favicon.ico // @source https://openuserjs.org/scripts/okj579/Songlink_Universal_Share_Links // @updateURL https://openuserjs.org/meta/okj579/Songlink_Universal_Share_Links.meta.js // @downloadURL https://openuserjs.org/src/scripts/okj579/Songlink_Universal_Share_Links.user.js // @version 1.2.1 // @match https://play.google.com/music/listen* // @match https://open.spotify.com/* // @match https://music.youtube.com/* // @grant none // ==/UserScript== (function() { 'use strict'; if (window.location.origin == 'https://play.google.com') { document.addEventListener('iron-overlay-opened', function(e) { if (!e.target.classList.contains('get-link')) return; var link = document.querySelector('.link', e.target); link.value = link.value.replace(/^.*\/\/play.google.com\/music\/m\/(.*)\?.*$/, 'https://song.link/g/$1'); document.querySelector('input.paper-input', link).select(); }); } if (window.location.origin == 'https://music.youtube.com') { document.addEventListener('iron-overlay-opened', function(e) { var input = document.querySelector('input#share-url', e.target); if (!input) return; input.value = input.value.replace(/^.*\/\/music.youtube.com\/watch\?v=([^&]*).*?$/, 'https://song.link/y/$1'); }); } if (window.location.origin == 'https://open.spotify.com') { document.addEventListener('click', function(e) { var textarea = e.target.lastElementChild; if (e.target.classList.contains('react-contextmenu-item') && textarea && textarea.type === 'textarea') { textarea.value = textarea.value.replace('https://open.spotify.com/track/', 'https://song.link/s/'); } }); } })();