Skip to content

Instantly share code, notes, and snippets.

@sagmor
Created August 27, 2011 01:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sagmor/1174827 to your computer and use it in GitHub Desktop.
Save sagmor/1174827 to your computer and use it in GitHub Desktop.
Some minor hacks for console.fm on fluid
// ==UserScript==
// @name Console Hacks
// @description Some minor hacks for console.fm
// @include http://*console.fm/*
var lastFm = {
enabled: false,
key: "APIKEY",
secret: "SECRETKEY",
session: "SESSIONKEY"
};
// Use HTML5 player
soundManager.html5Only = true;
soundManager.reboot();
function scrobble(track) {
if (!lastFM.enabled) return;
timestamp = Math.round((new Date()).getTime() / 1000);
try {
jQuery.post("http://ws.audioscrobbler.com/2.0/",
{
"api_key" : lastFm.key,
"method" : "track.scrobble",
"sk" : lastFm.session,
"artist" : track.by,
"track" : track.title,
"timestamp" : timestamp,
"api_sig" : $.md5("api_key" + lastFm.key + "artist" + track.by + "methodtrack.scrobblesk" + lastFm.session + "timestamp" + timestamp + "track" + track.title + lastFm.secret)
}
);
} catch(e) { console.log(e); }
}
function nowPlaying(track) {
if (!lastFM.enabled) return;
try {
jQuery.post("http://ws.audioscrobbler.com/2.0/", {
"api_key" : lastFm.key,
"method" : "track.updateNowPlaying",
"sk" : lastFm.session,
"artist" : track.by,
"track" : track.title,
"api_sig" : $.md5("api_key" + lastFm.key + "artist" + track.by + "methodtrack.updateNowPlayingsk" + lastFm.session + "track" + track.title + lastFm.secret)
});
} catch(e) { console.log(e); }
}
window.nowPlaying = nowPlaying;
fluid.addDockMenuItem("Play/Pause", function() {
if ( $('#play_button .pause').length ) {
soundManager.resumeAll();
} else {
soundManager.pauseAll();
}
});
fluid.addDockMenuItem("Next", function() {
pagePlayer.playNext();
});
function currentSong() {
var title = $('.playlist .sm2_playing a').html().split(' by ');
return {
by: title.pop(),
title: title.join(' by ')
};
}
function hackPlayer() {
console.log('Hacking Player')
var oPlay = pagePlayer.events.play;
var oFinish = pagePlayer.events.finish;
pagePlayer.events.play = function() {
oPlay.call(this);
var song = currentSong();
nowPlaying(song);
fluid.showGrowlNotification({
title: song.title,
description: "by "+ song.by
});
}
pagePlayer.events.finish = function() {
var song = currentSong();
oFinish.call(this);
// TODO: Scroble?
scrobble(song);
}
}
var hacksInitializer = setTimeout(function() {
if (pagePlayer && pagePlayer.events) {
hackPlayer();
clearTimeout(hacksInitializer);
}
},100);
// MD5 function
(function(v){function l(a,g){var b=(a&65535)+(g&65535);return(a>>16)+(g>>16)+(b>>16)<<16|b&65535}function i(a,g,b,m,i,h){a=l(l(g,a),l(m,h));return l(a<<i|a>>>32-i,b)}function h(a,g,b,m,h,j,k){return i(g&b|~g&m,a,g,h,j,k)}function j(a,g,b,m,h,j,k){return i(g&m|b&~m,a,g,h,j,k)}function k(a,g,b,h,j,k,l){return i(b^(g|~h),a,g,j,k,l)}function n(a,g){a[g>>5]|=128<<g%32;a[(g+64>>>9<<4)+14]=g;var b,m,p,q,n,c=1732584193,d=-271733879,e=-1732584194,f=271733878;for(b=0;b<a.length;b+=16)m=c,p=d,q=e,n=f,c=h(c,
d,e,f,a[b],7,-680876936),f=h(f,c,d,e,a[b+1],12,-389564586),e=h(e,f,c,d,a[b+2],17,606105819),d=h(d,e,f,c,a[b+3],22,-1044525330),c=h(c,d,e,f,a[b+4],7,-176418897),f=h(f,c,d,e,a[b+5],12,1200080426),e=h(e,f,c,d,a[b+6],17,-1473231341),d=h(d,e,f,c,a[b+7],22,-45705983),c=h(c,d,e,f,a[b+8],7,1770035416),f=h(f,c,d,e,a[b+9],12,-1958414417),e=h(e,f,c,d,a[b+10],17,-42063),d=h(d,e,f,c,a[b+11],22,-1990404162),c=h(c,d,e,f,a[b+12],7,1804603682),f=h(f,c,d,e,a[b+13],12,-40341101),e=h(e,f,c,d,a[b+14],17,-1502002290),
d=h(d,e,f,c,a[b+15],22,1236535329),c=j(c,d,e,f,a[b+1],5,-165796510),f=j(f,c,d,e,a[b+6],9,-1069501632),e=j(e,f,c,d,a[b+11],14,643717713),d=j(d,e,f,c,a[b],20,-373897302),c=j(c,d,e,f,a[b+5],5,-701558691),f=j(f,c,d,e,a[b+10],9,38016083),e=j(e,f,c,d,a[b+15],14,-660478335),d=j(d,e,f,c,a[b+4],20,-405537848),c=j(c,d,e,f,a[b+9],5,568446438),f=j(f,c,d,e,a[b+14],9,-1019803690),e=j(e,f,c,d,a[b+3],14,-187363961),d=j(d,e,f,c,a[b+8],20,1163531501),c=j(c,d,e,f,a[b+13],5,-1444681467),f=j(f,c,d,e,a[b+2],9,-51403784),
e=j(e,f,c,d,a[b+7],14,1735328473),d=j(d,e,f,c,a[b+12],20,-1926607734),c=i(d^e^f,c,d,a[b+5],4,-378558),f=i(c^d^e,f,c,a[b+8],11,-2022574463),e=i(f^c^d,e,f,a[b+11],16,1839030562),d=i(e^f^c,d,e,a[b+14],23,-35309556),c=i(d^e^f,c,d,a[b+1],4,-1530992060),f=i(c^d^e,f,c,a[b+4],11,1272893353),e=i(f^c^d,e,f,a[b+7],16,-155497632),d=i(e^f^c,d,e,a[b+10],23,-1094730640),c=i(d^e^f,c,d,a[b+13],4,681279174),f=i(c^d^e,f,c,a[b],11,-358537222),e=i(f^c^d,e,f,a[b+3],16,-722521979),d=i(e^f^c,d,e,a[b+6],23,76029189),c=i(d^
e^f,c,d,a[b+9],4,-640364487),f=i(c^d^e,f,c,a[b+12],11,-421815835),e=i(f^c^d,e,f,a[b+15],16,530742520),d=i(e^f^c,d,e,a[b+2],23,-995338651),c=k(c,d,e,f,a[b],6,-198630844),f=k(f,c,d,e,a[b+7],10,1126891415),e=k(e,f,c,d,a[b+14],15,-1416354905),d=k(d,e,f,c,a[b+5],21,-57434055),c=k(c,d,e,f,a[b+12],6,1700485571),f=k(f,c,d,e,a[b+3],10,-1894986606),e=k(e,f,c,d,a[b+10],15,-1051523),d=k(d,e,f,c,a[b+1],21,-2054922799),c=k(c,d,e,f,a[b+8],6,1873313359),f=k(f,c,d,e,a[b+15],10,-30611744),e=k(e,f,c,d,a[b+6],15,-1560198380),
d=k(d,e,f,c,a[b+13],21,1309151649),c=k(c,d,e,f,a[b+4],6,-145523070),f=k(f,c,d,e,a[b+11],10,-1120210379),e=k(e,f,c,d,a[b+2],15,718787259),d=k(d,e,f,c,a[b+9],21,-343485551),c=l(c,m),d=l(d,p),e=l(e,q),f=l(f,n);return[c,d,e,f]}function r(a){var g,b="";for(g=0;g<a.length*32;g+=8)b+=String.fromCharCode(a[g>>5]>>>g%32&255);return b}function o(a){var g,b=[];b[(a.length>>2)-1]=void 0;for(g=0;g<b.length;g+=1)b[g]=0;for(g=0;g<a.length*8;g+=8)b[g>>5]|=(a.charCodeAt(g/8)&255)<<g%32;return b}function s(a,g){var b,
h=o(a),i=[],j=[];i[15]=j[15]=void 0;h.length>16&&(h=n(h,a.length*8));for(b=0;b<16;b+=1)i[b]=h[b]^909522486,j[b]=h[b]^1549556828;b=n(i.concat(o(g)),512+g.length*8);return r(n(j.concat(b),640))}function t(a){var g="",b,h;for(h=0;h<a.length;h+=1)b=a.charCodeAt(h),g+="0123456789abcdef".charAt(b>>>4&15)+"0123456789abcdef".charAt(b&15);return g}function u(a){a=unescape(encodeURIComponent(a));return r(n(o(a),a.length*8))}v.md5=function(a,g,b){return!g?b?u(a):t(u(a)):b?s(unescape(encodeURIComponent(g)),unescape(encodeURIComponent(a))):
t(s(unescape(encodeURIComponent(g)),unescape(encodeURIComponent(a))))}})(typeof jQuery==="function"?jQuery:this);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment