Skip to content

Instantly share code, notes, and snippets.

@nicloay
Created June 25, 2014 18:27
Show Gist options
  • Select an option

  • Save nicloay/339cd4782f71811c7ce6 to your computer and use it in GitHub Desktop.

Select an option

Save nicloay/339cd4782f71811c7ce6 to your computer and use it in GitHub Desktop.
gracemonkey script transfer music from spotify in to vkontakte (right now, not sure that copy past works well, so I past spotify uri directly to the file)
// ==UserScript==
// @name SpotifyVK
// @namespace com.nicloy.vkspotify
// @description Import music from spotify to vk albums
// @grant GM_xmlhttpRequest
// @include http://vk.com/audio*
// @include https://vk.com/audio*
// @version 1
// ==/UserScript==
console.log("starting script");
//spotify:track:3nV3zKrWBuDcCYjju4LkNp
var SPOTIFY_BASE_URI="https://ws.spotify.com/lookup/1/.json?uri=";
var spotifyUrlArray =[];
var pastInProgress=true;
var pageWrap = document.getElementById("s_search");
var origOnPaste = pageWrap.onpaste;
function handleSpotifyRef(){
console.log("length = "+spotifyUrlArray.length);
if (spotifyUrlArray.length == 0){
pastInProgress = false;
return;
}
var spotifyRef = spotifyUrlArray.shift();
console.log("spotifyRef ="+spotifyRef);
if (spotifyRef == ""){
handleSpotifyRef();
} else {
var url = SPOTIFY_BASE_URI+spotifyRef;
console.log(url);
var req = GM_xmlhttpRequest({
method: "GET",
url: url,
headers: {"Accept": "application/json"},
onload: function(response) {
var spotObject = JSON.parse( response.responseText);
var songAndArtist = spotObject.track.name + " "+ spotObject.track.artists[0].name;
console.log(songAndArtist);
pageWrap.value= songAndArtist;
pageWrap.onkeyup();
setTimeout(handleSpotifyRef, 30000);
},
onerror: function(response){
alert( response);
}
});
}
}
function handleSpotifyData(pastedText){
spotifyUrlArray = pastedText.split(/[\r,\n, ]+/);
pastInProgress = true;
handleSpotifyRef(spotifyUrlArray);
}
var onPasteHandler = function(e){
if (pastInProgress) {
console.log("already do something");
return;
}
var pastedText = '';
if (window.clipboardData && window.clipboardData.getData) { // IE
pastedText = window.clipboardData.getData('Text');
} else if (e.clipboardData && e.clipboardData.getData) {
pastedText = e.clipboardData.getData('text/plain');
}
console.log(pastedText);
if (pastedText.trim().startsWith("spotify")){
e.preventDefault();
pageWrap.value = "";
handleSpotifyData(pastedText.trim());
}else{
origOnPaste();
}
}
pageWrap.onpaste = onPasteHandler;
function test(){
var songs=" \
spotify:track:33oSNr28y1sJdVPCxAuQUj\
spotify:track:6UpxgpAPvAXRdxQMI0PpMn\
spotify:track:3zECldeBYO8lj8QZlUB2Be\
spotify:track:7r7yufHWyMVJcc31l0EqzQ\
spotify:track:3fKg9Up2k4rMBbGgJQnd85\
spotify:track:7mPvLGEZAqIYzEz0nHSjeJ\
spotify:track:1dngxWbqUf8WYmOcUGYGGq\
spotify:track:3UduZBfrWQkNk46RbD3H9p\
spotify:track:1ph6Bncj7s3BmYp6FkIzP8\
spotify:track:3J9pd7B1AS0xJeX7k63EJf\
spotify:track:41pFyxOpS119Pb8JEzhx0w\
spotify:track:5wV0DFdwgTfLCDgkQRMGEL\
spotify:track:0oks4FnzhNp5QPTZtoet7c\
spotify:track:4D4RuVFzlNXSdf7IrBzE2o\
spotify:track:7LuojryrN6VkYWbax5dWTv\
spotify:track:0QwZfbw26QeUoIy82Z2jYp\
spotify:track:0DanGj9TtgZIjJnHdTbW9v\
spotify:track:2kHCRMBCGhuZo2vOAB0JrS\
spotify:track:0ORtVeSxQ54z9F8eJKkhIs\
spotify:track:2RcfeD1kA09Kjj6twD6eGs\
spotify:track:1SXP53Ue7P7ZBiDeRUG9H4\
spotify:track:6Ayw75pIMeKjoEO7I1MSqw\
spotify:track:3hMVNsHKnApzCa6Lw6vlVj\
spotify:track:4zH2xJAkTtnjJuQSjjw1IX\
spotify:track:6MbiVHE2xG242NuOgNIEYM\
spotify:track:6QpkhjUGO5OrOHAgFvmEDJ\
spotify:track:2eeW1sIe4qcTirHqEAjWGl\
spotify:track:1bYBLZUHKK0m93qZ4cMWJC\
spotify:track:0Aekazl3SoTfU42pWMP1Rb\
spotify:track:0jVy0Y3QEtUKsrIHAZuR45\
spotify:track:1u0aIMrEBvFkRtgcg264gW\
spotify:track:1KRH1AhRdmYh0OTZa5QAqn\
spotify:track:0qla0jAU8Z2RpH6q3Lvb92\
spotify:track:7cdxGn1ElZlpM4M1At0k4g\
spotify:track:2oFZRf3oYi7B6vC3t9iZrP\
spotify:track:7fXQ5AUAtmv1IaQbRtlyOm\
spotify:track:3jUTjCISntIUFL8jnAjzgc\
spotify:track:1FMm3wG5WOhi7js35KR7Ea\
spotify:track:0GjSbSr86nsOLJsibU2cjh\
spotify:track:3ZPTb9HHBRt2VDbsIUFnSD\
spotify:track:1ccFnIocW7FZ546v5cVqta\
spotify:track:5dIgg4mrQHOlVm1ZFYHW29\
spotify:track:5FbMKftNTXCKiBYSf0TQrs\
spotify:track:19MlCZz8yterrE7guDVJdL\
spotify:track:6QYW3HXqRTwLs75HDxLVgN\
spotify:track:1ru5R5iSawvuMELqKXxLjS\
spotify:track:3G9ImkMC04pq5UeHaUDr3T\
spotify:track:0QIYINh2AwmOmdu8CRYvlw\
spotify:track:0z1b34WikhOH9ZxU8QDWcv\
spotify:track:0aCtudavUSkvtS1MottwVU\
spotify:track:2JvXGzbMyqr2OkmsqDnQsL\
spotify:track:28XOSoxxj3Npuz52KP6FuE\
spotify:track:7nVxwYcdX9bG18qA9k74ID\
spotify:track:5KQrOv9nFVnM465CVGriW9\
spotify:track:3qjF2EzZ7Kx0VD1AooRFjy\
spotify:track:25nzKGDiua1lE9Qo5V19GL\
spotify:track:3oVSsJXNADnYAnZWiEWFJH\
spotify:track:27Ur4EIdqUJSlBi45E8gE9\
spotify:track:7hXyu2yIXRZv7hg7nWFlTR\
spotify:track:7xcuo1zlZ5cys40tpFKFzr\
spotify:track:3vqRwGd80zpGdpZmmotMfv\
spotify:track:0vKyA6t7Ncbl0ms0aNvntt\
spotify:track:6f4ys4e8vWJ2jDBlpqSNa6\
spotify:track:0xIof5gmHjFY0t1eX7angP\
spotify:track:3FpJxAODaFrO7NkHEuplIA\
spotify:track:0peYAmI5sjt67CFMgmUfjq\
spotify:track:1r9j3mBytoMwddWGJv6kF0\
spotify:track:2wfIav4mTuE5jd2QKyauKD\
spotify:track:57LP4yVIIBkRLWbq0ETF4K\
spotify:track:331q5cdwo9aq7ih6bSpoOa\
spotify:track:7GYTGDxy53uilTvcsAVqVo\
spotify:track:4ehFuOQd4GaJp08kNvMR3z\
spotify:track:45JxylFwaThjLsRBuzcfoL\
spotify:track:0mq8gFHMpr9Pc1603T7cdS\
spotify:track:422DJ0g3ZVW7aQu3Z6NEpq\
spotify:track:1TaT2vwgMrzOhDEMVNZ5Mr\
spotify:track:3ctoHckjyd13eBi2IDw2Ip\
spotify:track:2eQOMQkStoRUQyq6HGh1iG\
spotify:track:5Yihfvz56HKVjPJQm2uHbJ\
spotify:track:7DdXf9x75iEVCHWfoRwRuR\
spotify:track:519uJbE3zyKLlToVA65PrP\
spotify:track:5d4EJrwEEQgP4qzs6gwzsD\
spotify:track:66dxtOtemB4EcgCXUSNuKC\
spotify:track:5nG6XQckfjnPkDyxDGDFFV\
spotify:track:5BP0oaQ1VhuaznT77CBXQp\
spotify:track:4WpDqmZCa3JZGeOo1rzjK8\
spotify:track:2uyhhyy1VsqAuEsQnfbh0z\
spotify:track:22HUwdcICEa6IcmjirhXvG\
spotify:track:1LytkZ67Tquo5A5TyzqVcZ\
spotify:track:21RDsw7wzUJNl2FbWTgEfJ\
spotify:track:5kxxhOkxd7j57e7oL121gI\
spotify:track:1595LW73XBxkRk2ciQOHfr\
spotify:track:1jJci4qxiYcOHhQR247rEU\
spotify:track:3UPPGZeSjNwxyJslnSTm1c\
spotify:track:286bpRdcpueYPc7gLIvrzU\
spotify:track:7ncTtnHuRHExZGp18vnimz\
spotify:track:4BVEA1X7HXIK2ScfRoEzzb\
spotify:track:7gARZ2i5u5DHC1b1n1fML5\
spotify:track:55frTib3O35mjAbdyNj8me\
spotify:track:7KOh0GSvWyBbqglGkWdCpR\
spotify:track:0wuRFAZfya3gwGw3c6567P\
spotify:track:1oMesUID2788elbHOFFs4y\
spotify:track:7w87IxuO7BDcJ3YUqCyMTT\
spotify:track:2lbAU3IQytWjl9b0LLuztk\
spotify:track:06o8Gyc1W56J1pSs16RMC7\
spotify:track:3AszgPDZd9q0DpDFt4HFBy\
spotify:track:46WVVHERbHreW3Ap2ztQt8\
spotify:track:6Wze1mFZVcT3fj8hTKnBSz\
spotify:track:3skn2lauGk7Dx6bVIt5DVj\
spotify:track:0HQLq1DUWyhMN2gWXBQ89Y\
spotify:track:4dTVgHZFPlaq9nPbLVVLSG\
spotify:track:4bVVAGHw9NXZIxhXeB57a8\
spotify:track:0c7v6RPu6F8QKep5xhfgYU\
spotify:track:5D2vlXnwXXTPq5o2fm9bxw\
spotify:track:5KhBCD311UeeLlnxMqKlde"
handleSpotifyData(songs);
}
test();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment