Осилил таки скрипт для работы с moskva/piter.fm
добавляет к песням ссылки для поиска/прослушивания на VK, Yandex-музыку и Гугль-Музыку.
Попутно фиксит пустое место (после urlfilter) от баннера высотой 400(!) пикселей.
Открытие в фоне при клике на ссылках не работает, но работает "открыть" и "открыть в новой вкладке" (особенности вставки ссылок внутри ссылок, как быстро пофиксить не нашел)
[more=Скрипт...]
Код: // ==UserScript==
// @name Moskva.fm muslink adder
// @author DCT (at ru-board Opera topic)
// @description Moskva.fm muslink adder
// @include
http://www.moskva.fm/* // @include
http://www.piter.fm/* // ==/UserScript==
// ========= если не нужна шапка - раскомментировать строчку под "удаляем шапку (если необходимо)"
window.addEventListener('DOMContentLoaded', function()
{
//удаляем шапку (если необходимо)
// var tmps = document.querySelectorAll("header.container"); for(var i=0;i<tmps.length;++i){tmps[i].style.cssText = "display: none";}
// прячем верхний рекламный блок
var elements = document.getElementsByClassName('ad-branding-block');
while(elements.length > 0){elements[0].parentNode.removeChild(elements[0]);}
// body#****.ad-branding после блока рекаламы имеет смещение padding =400, обнуляем
var tmps = document.querySelectorAll("body.ad-branding"); for(var i=0;i<tmps.length;++i){tmps[i].style.padding = "0px";}
// части вставляемых адресов
var urlVK1 = '<a style="margin: 1px 1px 0px 2px;" title="Композиция Вконтакте" href="https://vk.com/search?c[q]=';
var urlVK2 = '&c[section]=audio"><IMG style="border:0; margin-top: 0px; margin-bottom : -1px; width: 12px; height: 12px;" src="data:image/ico;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAALRJREFUOE9jjGla/Z+BEgAygBLMQIlmsOtpYsB/JPD95+//r95/+b9g2zmsXsXqApj+FXsu/T917QmY++/fv/+ZPZswDMFrAMh7ZdN2gA0AuSS5fT1pBrx89wWsEQSW7rpIuhc2H73xf9ep2/+//fj1/x/QkJkbT5HmAlgM7Tt7F+wKUHigxxrBQNx6/CbcG8uBgUqSASBbf/768//Zm0//1x28+j+ueQ1xBpCSuGiTEunqAgA6Z5y/YxmldAAAAABJRU5ErkJggg=="></a>';
var urlYM1 = '<a style="margin: 1px 1px 0px 1px;" title="Композиция в Яndex Музыке" href="https://music.yandex.ru/search?text=';
var urlYM2 = '"><IMG style="border:0; margin-top: 0px; margin-bottom : -1px; width: 12px; height: 12px;" src="data:image/ico;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98JEAwwJe/tKmQAAAHOSURBVDjLpZO9ixNRFMV/772ZjOwmroXYSKynyp8guEMKxWILGxsbBRtZLEQEPxq3ELdRWGys/AfsAlkyIyJECAiBBJakTbvbJMOaj5k31yIkkq+18MJt7j333HPu46kwDI219p2IPDLGbLEhRAQgLJfLdxcax8fHh41GQ4bDoVhrN2aaplKv16VWqz0UETVLqtXq+WQykeXIrF2pDQYDqVQqp2EYFmYE2hjjGGPWaeb0zi3ij+9JTtogQqFQoFgsXk3T9GAG05s8K62R3zHnXz5zdu822aAPgO/7KKWeRFHkX0gAQJaRf7yPuX4DsgwA13XxfV+Px+OjfxJIMmHr/gOu1X6idq7M68VikXw+vxtF0d5aArEWyTJQGqbPh9J/oUopSqUSSZJ8cJaHRz8i+i+foTwPkI3qlFIAWi977r9+jnIcSNOpb1lP0mq1cF33qb5gBSiF2t5eafV6PeI4/hYEwddFAq3ZeXuIpCkymXD51QHKzS1AkiSh0+lknuftA6zc4NLNXbzvv0BkamUput0uInIUBMEJgLbWptbaRfXGrB2O45her3fmOM6buWil1Kdms8loNCLLso1praXdbpPL5V4EQTCYL/vf7/wHpGAs+K0GPJsAAAAASUVORK5CYII="></a>';
var urlGM1 = '<a style="margin: 1px 1px 0px 1px;" title="Композиция в Google Музыке" href="https://play.google.com/store/search?q=';
var urlGM2 = '&c=music&hl=ru"><IMG style="border:0; margin-top: 0px; margin-bottom : -1px; width: 12px; height: 12px;" src="data:image/ico;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98JEAwuEG0f0ZgAAAHsSURBVDjLvdI7aFNRHMfx73n03iTtvb2hTTspBSehi1KpY5DOEqhuCnW1CC7WoUKbxalgu+qQDj6RPtZQNEFbiroIOkhTzcUhpdhHqIlJjJ7r0LQ+ito6+Ic/53DgfPhxzh+A4+lZryc96/EPJQE2npKqLpM/PT89enZxyjswYLUor/5Jexvv9YhnB/nLrx4OHAxwNLajKJUtVgohz7NN6vryg/wN/35iX4DtKGxHYzmatUqY3KpDLGK6oiEzc+/D3czs5p34XwDdSKGxXU2h1sLLtSixsKEtZOKtlsk8X0/NBKNXu34LbKdotKt4V3dZ2OygPWyI8YXuaT+BQz64OZQKbg95PwOuwnb1bluNJG9MlMxKG0emfMK1CkQDcBmgNcgHj64kAPROAqEEUgtkYxVKEKl9pufaY8pqjVBfJ0QCiABhQAb+d8DdC4Qqdc6MpOnw1ymLLZoWq7j9h4tYwQRNjIsTY8VfAJBKIhW0rFbpG56n/W2RQCoMkurrjUn33KGk6B3zf3xEDWA1KxDbB625MqcuvcAtf8QIiQlk9quwLnRm5nx65/Z8owZ2Lzu5KicHl9BlgxEqa4ROdj+5lf3TIOmdTfNSnWODBVQJ30iVjC8MT+5nlDVAOGeKRy9uFWVJJvufnR/nf9Y3YhyluqpoCZoAAAAASUVORK5CYII="></a>';
// страницы: станция и сборник, хитпарад справа, новинки/хитпарад-основная
var sngs=document.querySelectorAll("td > a.song[href*='artist'], div.b-song > div.b-info, div.js-song.thumbnail-caption > a.song[href*='artist'], a.artist-and-song[href*='artist']");
for(var i=0;i<sngs.length;++i){
var sngtxt = sngs[i].innerText.replace(/ {2,}/gi,"");
sngs[i].innerHTML = sngs[i].innerHTML + urlVK1 + sngtxt + urlVK2 + urlYM1 + sngtxt + urlYM2 + urlGM1 + sngtxt + urlGM2;
}
// дописываем исполнителя в его список песен и лучшие песни
var sngs=document.querySelectorAll("td.name > div.thumbnail > div.thumbnail-left > div.thumbnail-caption > a.song[href*='artist'] > span.song, a.song[href*='artist'] > span.msk-nav-underline");
for(var i=0;i<sngs.length;++i){
var sngtxt = sngs[i].innerText.replace(/ {2,}/gi,"");
var artst = sngs[i].parentNode.href;
artst = artst.replace(/.*artist\//i," ");
artst = artst.replace(/\/song.*/i," ");
artst = artst.replace(/_/gi," ");
sngtxt = sngtxt + artst;
sngs[i].parentNode.innerHTML = sngs[i].parentNode.innerHTML + urlVK1 + sngtxt + urlVK2 + urlYM1 + sngtxt + urlYM2 + urlGM1 + sngtxt + urlGM2;
}
// страница одиночной песни (похожий шаблон имеет страница исполнителя!)
var sngs=document.querySelector("div.span15 > h1 > a > span#js-song-name-title");
var sngtxt = sngs.parentNode.parentNode.innerText.replace(/Добавить в сборник/gi," ");
sngtxt = sngtxt.replace(/ {2,}/gi,"");
sngs.parentNode.parentNode.innerHTML = sngs.parentNode.parentNode.innerHTML + urlVK1 + sngtxt + urlVK2 + urlYM1 + sngtxt + urlYM2 + urlGM1 + sngtxt + urlGM2;
}, false);