Skip to content
This repository has been archived by the owner on Jun 1, 2019. It is now read-only.

Commit

Permalink
Fix up remora against the newest grooveshark, and fix the MPD server
Browse files Browse the repository at this point in the history
  • Loading branch information
danopia committed May 16, 2010
1 parent bafa242 commit 5424693
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 49 deletions.
20 changes: 15 additions & 5 deletions client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ class Client

UUID = '996A915E-4C56-6BE2-C59F-96865F748EAE'
CLIENT = 'gslite'
CLIENT_REV = '20100211.21'
CLIENT_REV = '20100412.09'

# "country":{"CC1":"0","CC3":"0","ID":"223","CC2":"0","CC4":"1073741824"}

COWBELL = 'cowbell.grooveshark.com'

Expand All @@ -40,6 +42,7 @@ def request page, method, parameters=nil, secure=false
'uuid' => UUID,
'client' => CLIENT,
'clientRevision' => CLIENT_REV,
'country' => {"CC1"=>"0","CC3"=>"0","ID"=>"223","CC2"=>"0","CC4"=>"1073741824"},
},
'method' => method,
'parameters' => parameters,
Expand All @@ -58,6 +61,7 @@ def request page, method, parameters=nil, secure=false
return data['result'] unless data['fault']

if data['fault']['code'] == 256
p data
$sock.puts "Getting new token" if $sock
get_comm_token
sleep 1
Expand Down Expand Up @@ -97,7 +101,7 @@ def get_comm_token
# shhhhhhh!
def create_token method
rnd = rand(256**3).to_s(16).rjust(6, '0')
plain = [method, @comm_token, 'theColorIsRed', rnd].join(':')
plain = [method, @comm_token, 'quitStealinMahShit', rnd].join(':')
hash = Digest::SHA1.hexdigest plain
"#{rnd}#{hash}"
end
Expand All @@ -112,8 +116,13 @@ def search_songs query

# streamKey, streamServer, streamServerID
def get_stream_auth song
results = request_more 'getStreamKeyFromSongID', {"songID" => song.id, "prefetch" => false}
results['result']
results = request_more 'getStreamKeyFromSongIDEx', {
"songID" => song.id,
"prefetch" => false,
'mobile' => false,
'country' => {"CC1"=>"0","CC3"=>"0","ID"=>"223","CC2"=>"0","CC4"=>"1073741824"},
}
results#['result']
end

def play song
Expand All @@ -128,7 +137,8 @@ def play song

@now_playing = song
key = get_stream_auth song
MPlayer.stream key['streamServer'], key['streamKey'], self
# {"uSecs":"273000000","FileToken":"1Uz0O8","streamKey":"9b90e6f64695493ca930","streamServerID":16384,"ip":"stream36akm.grooveshark.com"}
MPlayer.stream key['ip'], key['streamKey'], self
@now_playing = nil
@player = nil
end
Expand Down
88 changes: 44 additions & 44 deletions mpd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ def receive_line line

if @client.now_playing && @client.player
send_line "song: #{@client.queue.songs.values.index @client.now_playing}"
send_line "songid: #{@client.now_playing['SongID']}"
send_line "time: #{@client.player.position}:#{@client.now_playing['EstimateDuration']}"
send_line "songid: #{@client.now_playing.data['SongID']}"
send_line "time: #{@client.player.position}:#{@client.now_playing.data['EstimateDuration']}"
end

#~ send_line 'bitrate: 0'
Expand All @@ -90,40 +90,40 @@ def receive_line line
when 'currentsong'
song = @client.now_playing
if song
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
send_line "Pos: #{@client.queue.songs.values.index song}"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'

when 'playlistinfo'
@client.queue.songs.values.each_with_index do |song, pos|
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
send_line "Pos: #{pos}"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'

when 'lsinfo'
@client.queue.songs.values.each_with_index do |song, pos|
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
send_line "Pos: #{pos-1}"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'

Expand All @@ -146,26 +146,26 @@ def receive_line line
id = $1.to_i
song = @client.queue.songs.values.find{|info| info['SongID'] == id }

send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
send_line "Pos: #{@client.queue.songs.values.index song}"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
send_line 'OK'

when 'plchanges'
@client.queue.songs.values.each_with_index do |song, pos|
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
send_line "Pos: #{pos}"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'

Expand All @@ -179,14 +179,14 @@ def receive_line line
args[1..-1].join(' ') =~ /"([^"]*)"/
client.search_songs($1).each do |song|
@songs[song['SongID'].to_i] = song
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
#send_line "Pos: 11"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'

Expand All @@ -208,14 +208,14 @@ def receive_line line
end

songs.each do |song|
send_line "file: #{song['SongID']}.mp3"
send_line "Time: #{song['EstimateDuration']}"
send_line "Album: #{song['AlbumName']}"
send_line "Artist: #{song['ArtistName']}"
send_line "Title: #{song['SongName']}"
send_line "file: #{song.data['SongID']}.mp3"
send_line "Time: #{song.data['EstimateDuration']}"
send_line "Album: #{song.data['AlbumName']}"
send_line "Artist: #{song.data['ArtistName']}"
send_line "Title: #{song.data['SongName']}"
#send_line "Track: 12"
#send_line "Pos: 11"
send_line "Id: #{song['SongID']}"
send_line "Id: #{song.data['SongID']}"
end
send_line 'OK'
end
Expand Down

0 comments on commit 5424693

Please sign in to comment.