Jump to content

Nebster's Pandora Song Ripper


nebster

Recommended Posts

---------------------------------------------------------------------COMPLETELY NEW VERSION RELEASED---------------------------------------------------------------------

Features:

  • Written in Perl
  • Open Source (Code is interpreted not compiled)
  • Works as a proxy
  • Supports Tor (As long as Privoxy is used)
  • Creates logs of what it's doing
  • Can rip songs from pandora (Almost perfectly if not perfectly)
  • Supports Windows Vista too!

This is my latest pandora project but at very early stages. I only work on it if I find a bug or want a new feature.

Ignore the funny names of the m4a files. I will release my song renamer in the future when I have more time

I wasn't going to release this yet but I felt like it :P

Names of songs are stored in SongBackup\PandoraNames.txt

Store in C:\Pandora\ since it contains long filenames. Use only on NTFS drives or drives that support file names of 255 (i think it is)

Download from here:

http://www.esnips.com/web/EvilNebster-Pandora

---------------------------------------------------------------------

OLD VERSION BELOW

---------------------------------------------------------------------

Features:

  • Written in VB.Net
  • Open Source (Request if wanted and will be posted here)
  • Adds the song playing to the msn status if enabled
  • Can hook volume keys
  • Can rip songs from pandora (Almost perfectly if not perfectly)
  • Auto-tags songs
  • Creates logs of what it's doing
  • Stores music in a simple subdirectory format I use for tagging

This is not my latest pandora project so it may contain bugs (only noticed when loading pandora and a button on the icon menu is pressed too early)

It can be dragged around via the small bar at the top or double-clicked to minimize to the Tray

Double-clicking the tray opens up the window again

This uses the proxy set up in IE so if you use tor, make sure it's set up for the domain pandora.com

Since it's too big to attach to a post because of Interop.MSHTML.dll, I've hosted it here:

Pandora

Link to post
Share on other sites

It's working great!

I have only two questions.

1. Could you enable that you can select the download folder manually?

[edit]If the ripper is able to get the Album name and artist name, why doesn't it fill it in the tags?[/edit]

2. The MP3 came in like this:

Song name - Album name ~ Artist name

Maybe you like it like that, which I can understand, but I like it like this:

Artist Name - Song Name

Could you please enable that too?

Thanks!

Link to post
Share on other sites
[*]Can rip songs from pandora (Almost perfectly if not perfectly)

Nice =)

Happy camper again =)

It's been killing me (since Pandora Rip stopped working) to hear something once and not be able to recall it for a re-listen!

Would there be any way to paste something here, or import something there, in your program.... I mean.... [ARGH].... Words!

I guess what I'm asking is, could there be a way to make your app recognize the songs already on file? Ya'know, so no duplicates? Any way to update the file that handles what it downloads and what it leaves alone?

I think it would be really great if the database/log file for this kind of app could be 'upgraded' with the lists from your other existing libraries.

Man, I hope that made sense :blink:

Thank you so much for posting your program!

Link to post
Share on other sites

This works really well - Thanks!

Couple of questions:

1 - is there a manual "backup" button?

2 - it seems the format for the files is M4a - is there a way to change this or does anyone else have this issue?

Keep up the great work...

Link to post
Share on other sites
This works really well - Thanks!

Couple of questions:

1 - is there a manual "backup" button?

2 - it seems the format for the files is M4a - is there a way to change this or does anyone else have this issue?

Keep up the great work...

Pandora has changed from mp3 to m4a, there's no way to change that.

I'd also like to see a manual backup button.

Link to post
Share on other sites
Pandora has changed from mp3 to m4a, there's no way to change that.

I'd also like to see a manual backup button.

Oh thanks - I wasn't aware they changed to m4a...

It appears they have also changed the bitrate - the files in the backup are coming in with smaller sizes and a quick mediainfo indicates a 64K bitrate...

Link to post
Share on other sites
It's working great!

I have only two questions.

1. Could you enable that you can select the download folder manually?

[edit]If the ripper is able to get the Album name and artist name, why doesn't it fill it in the tags?[/edit]

2. The MP3 came in like this:

Song name - Album name ~ Artist name

Maybe you like it like that, which I can understand, but I like it like this:

Artist Name - Song Name

Could you please enable that too?

Thanks!

1- As I stated, this isn't my latest project. Some people just requested this cos it was ready. That format is just for the tagger to understand. It does fill in the tags in the mp4 format

2- Since this is an old project, i won't do this cos it involves a lot of work changing the tagging stuff as well. i may rewrite this in the future to work with my new project

How do you install this? I've downloaded it, but I'm not sure where to go from there with all of the files.

Just extract all the files to a folder and run :)

Nice =)

Happy camper again =)

It's been killing me (since Pandora Rip stopped working) to hear something once and not be able to recall it for a re-listen!

Would there be any way to paste something here, or import something there, in your program.... I mean.... [ARGH].... Words!

I guess what I'm asking is, could there be a way to make your app recognize the songs already on file? Ya'know, so no duplicates? Any way to update the file that handles what it downloads and what it leaves alone?

I think it would be really great if the database/log file for this kind of app could be 'upgraded' with the lists from your other existing libraries.

Man, I hope that made sense :blink:

Thank you so much for posting your program!

Sorry, I don't quite get that. I'll try and answer it! You're about as good at explaining as I am! :P

Songs are downloaded then copied over the old file if it's bigger in size meaning that last time it may not have got the whole file. So no duplicates are created unless they're played on different channels.

This is not your newest pandora project, so you have more rippers?

Yes, this was my 3rd that I wrote. They all still work but this works virtually everytime. My latest works everytime even when you skip a song in pandora!

This works really well - Thanks!

Couple of questions:

1 - is there a manual "backup" button?

2 - it seems the format for the files is M4a - is there a way to change this or does anyone else have this issue?

Keep up the great work...

1- no, the problem with this is how the backup function is implemented

2- This is the default format, you may be able to change this using my next ripper (totally different to this)

Pandora has changed from mp3 to m4a, there's no way to change that.

I'd also like to see a manual backup button.

Like I said above, it's hard to implement

Snoopfree is telling me this program is trying to hook the keyboard. Why does it do that? I'm a little worried there is a key logger in it.

I can understand this. If it gives you the option, you can deny it. It just will stop the volume and media keys from being hooked

Where do the downloaded files go to? All I find is 1 temporary file in the songbackup folder, nothing more.

And whats with the program making Windows to access my floppy drive?

Downloaded files go into the songbackup\radio where radio is the station name. You may need more than one station created?

Sorry, backup procedure. When I release my new version it won't require this

Oh thanks - I wasn't aware they changed to m4a...

It appears they have also changed the bitrate - the files in the backup are coming in with smaller sizes and a quick mediainfo indicates a 64K bitrate...

Yeah, they have much better quality at smaller sizes! I love it! :lol:

Link to post
Share on other sites

Thanks for the installation help, but the songs are not backing up. This error appears in the log:

----------

ID

----------

116

----------

Category

----------

ShadyStuff - BackupSong()

----------

Content

----------

Could not backup song, Error: Retrieving the COM class factory for component with CLSID {E579AB5F-1CC4-44B4-BED9-DE0991FF0623} failed due to the following error: 80070005.

----------

----------------------------------

----------------------------------

Any ideas?

Link to post
Share on other sites

nebster, I have to say I like how your app puts the songs in playlist folders. It's making it a lot easier for me to find what I listened to.

On a side note.

Not to sound completely stoopid.

But, what is the preferred way of shutting this thing down when I'm finished?

Link to post
Share on other sites
This error appears in the log:

----------

ID

----------

116

----------

Category

----------

ShadyStuff - BackupSong()

----------

Content

----------

Could not backup song, Error: Retrieving the COM class factory for component with CLSID {E579AB5F-1CC4-44B4-BED9-DE0991FF0623} failed due to the following error: 80070005.

----------

----------------------------------

----------------------------------

Any ideas?

HI THERE !

I got exactly the same Problem.

May somebody could tell "US" how to fix it???

@ Polymer_Zephyr

Try using the taskbar symbol to shutdown !

Best regards ;-)

Bo

Link to post
Share on other sites
Thanks for the installation help, but the songs are not backing up. This error appears in the log:

----------

ID

----------

116

----------

Category

----------

ShadyStuff - BackupSong()

----------

Content

----------

Could not backup song, Error: Retrieving the COM class factory for component with CLSID {E579AB5F-1CC4-44B4-BED9-DE0991FF0623} failed due to the following error: 80070005.

----------

----------------------------------

----------------------------------

Any ideas?

Ok, what version of windows are you on? Windows Vista is not supported and anything but XP is also not supported due to not being able to test on it. It's cos of the backup method!

nebster, I have to say I like how your app puts the songs in playlist folders. It's making it a lot easier for me to find what I listened to.

On a side note.

Not to sound completely stoopid.

But, what is the preferred way of shutting this thing down when I'm finished?

Ok, you can shut it down using the taskbar icon but it may not shut down so you should end process it if it doesn't after about 5 mins after closing (so it has time to finish backing up, etc

HI THERE !

I got exactly the same Problem.

May somebody could tell "US" how to fix it???

@ Polymer_Zephyr

Try using the taskbar symbol to shutdown !

Best regards ;-)

Bo

Stated above if you're on Vista or something below XP I think it may not work

PS. I don't check this site much so I may not answer for a while

PPS. Nearly finished my other one which will also stop extra bandwidth being used and buffer songs in about 2 secs if they've been played before

Link to post
Share on other sites
Stated above if you're on Vista or something below XP I think it may not work

PS. I don't check this site much so I may not answer for a while

PPS. Nearly finished my other one which will also stop extra bandwidth being used and buffer songs in about 2 secs if they've been played before

Hi!

Surprised of you fast answer ! Thx!

Sorry. Unfortunatly I didn´t meantio my runing OS - it is XP at SP2. ... No Idea why this ClassId Error happens.

you told us you don´t check thsi site very often, maybe you could tell which sites you check rather often! ? -;-)

I... and i guess everyone else here would be very pleased if you could post Info-Links to your new Project... We are so... (gespannt=DE) ..

Thx and best regards out of Germany

Bo

Link to post
Share on other sites
Hi!

Surprised of you fast answer ! Thx!

Sorry. Unfortunatly I didn´t meantio my runing OS - it is XP at SP2. ... No Idea why this ClassId Error happens.

you told us you don´t check thsi site very often, maybe you could tell which sites you check rather often! ? -;-)

I... and i guess everyone else here would be very pleased if you could post Info-Links to your new Project... We are so... (gespannt=DE) ..

Thx and best regards out of Germany

Bo

Ok, look in your Event Log (Not my log) after running the program and post that here. Also, long shot but what version of IE have you got installed?

i don't have this linked to on any other sites cos this is just a personal tool that I released

I'm not getting this error but it may be that the services aren't starting (I think they're called Volume Shadow Service and Microsoft Volume Service or something)

My new project I'm still developing as it get's stuck in infinite loops for some reason

Link to post
Share on other sites
Ok, look in your Event Log (Not my log) after running the program and post that here. Also, long shot but what version of IE have you got installed?

i don't have this linked to on any other sites cos this is just a personal tool that I released

I'm not getting this error but it may be that the services aren't starting (I think they're called Volume Shadow Service and Microsoft Volume Service or something)

My new project I'm still developing as it get's stuck in infinite loops for some reason

Hi Ho... Nice to read you....Thx for answering

I´m looking foward for futher development of this great brain ;-) ... Soon come !

Ok, as you asked, my IE Version is 7.0.5730.11

I will soon check the VS Service...

Here is my Log, any Idea? :

----------------------------------
Log file for Pandora by Nebster
Date: 26/7/2008
Time: 9:16:40
----------------------------------

----------------------------------
----------
ID
----------
0
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Loading: http://openpandora.googlepages.com/pandoraevents6.htm
----------
----------------------------------
----------------------------------
----------
ID
----------
1
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: java script:void(setTimeout(function(){(function(){var a,d,r
----------
----------------------------------
----------------------------------
----------
ID
----------
2
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: if(d=window.downloadMP3){downloadMP3=function(){}
----------
----------------------------------
----------------------------------
----------
ID
----------
3
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: downloadMP3.toString=function(){return d.toString()
----------
----------------------------------
----------------------------------
----------
ID
----------
4
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: if(window.downloadMP3Response&&(a=window.Ajax)){r=a.Request
----------
----------------------------------
----------------------------------
----------
ID
----------
5
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: a.Request=function(){}
----------
----------------------------------
----------------------------------
----------
ID
----------
6
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: a.Request.toString=function(){return r.toString()
----------
----------------------------------
----------------------------------
----------
ID
----------
7
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: })()},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
8
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Before Pandora Started, Command: java script:void(setTimeout(function(){(function(){if(window.leBridge)top.location='about:blank'})()},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
9
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Pandora Ended: java script:void(setTimeout(function(){Pandora.fireEvent("PandoraEnded",{})},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
10
----------
Category
----------
DPA - Load()
----------
Content
----------
Getting Radio and Tuner Container Elements and setting PandoraBrowser size...
----------
----------------------------------
----------------------------------
----------
ID
----------
11
----------
Category
----------
DPA - Load()
----------
Content
----------
Done
----------
----------------------------------
----------------------------------
----------
ID
----------
12
----------
Category
----------
IPA - GetPandoraWindow()
----------
Content
----------
Getting Pandora Window
----------
----------------------------------
----------------------------------
----------
ID
----------
13
----------
Category
----------
IPA - GetPandoraWindow()
----------
Content
----------
Found Flash Window with size: 1x1 (Looking for: 640x250)
----------
----------------------------------
----------------------------------
----------
ID
----------
14
----------
Category
----------
IPA - GetPandoraWindow()
----------
Content
----------
Found Flash Window with size: 640x250 (Looking for: 640x250)
----------
----------------------------------
----------------------------------
----------
ID
----------
15
----------
Category
----------
IPA - GetPandoraWindow()
----------
Content
----------
Done
----------
----------------------------------
----------------------------------
----------
ID
----------
16
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Pandora Started: java script:void(setTimeout(function(){Pandora.fireEvent("PandoraStarted",{})},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
17
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Station Changed: java script:void(setTimeout(function(){Pandora.fireEvent("StationPlayed",{stationName:unescape('Damien Rice Radio'), stationId:unescape('29390070433537215'), isShared:false, isQuickMix:false})},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
18
----------
Category
----------
Handlers - BeforeNavigate2()
----------
Content
----------
Song Changed: java script:void(setTimeout(function(){Pandora.fireEvent("SongPlayed",{songName:unescape('Outloud'), artistName:unescape('Dispatch'), songURL:unescape('http://www.pandora.com/music/song/dispatch/outloud'), artURL:unescape('http://images-lev3-2.pandora.com/images/public/amz/1/2/9/8/601143108921_130W_130H.jpg')})},1))
----------
----------------------------------
----------------------------------
----------
ID
----------
19
----------
Category
----------
ShadyStuff - BackupSongsThread()
----------
Content
----------
New file found: C:\Dokumente und Einstellungen\Bo\Lokale Einstellungen\Temp\fla75D.tmp
----------
----------------------------------
----------------------------------
----------
ID
----------
20
----------
Category
----------
ShadyStuff - BackupSong()
----------
Content
----------
Could not backup song, Error: Die COM-Klassenfactory für die Komponente mit CLSID {E579AB5F-1CC4-44B4-BED9-DE0991FF0623} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80070422.
----------
----------------------------------
----------------------------------
----------

The Log is much longer, but will repeat ID 19 + ID 20 continously to ID 160... Much to long to post.

If it helps getting the whole log, tell my, i will upload it....

Thx

and best regards...

Bo

edit:

VS Service was off. After Turning it on and running pandora.exe form c:\ pandora\

the error changes in this way:

ID
----------
25
----------
Category
----------
ShadyStuff - BackupSongsThread()
----------
Content
----------
New file found: C:\Dokumente und Einstellungen\Bo\Lokale Einstellungen\Temp\fla293.tmp
----------
----------------------------------
----------------------------------
----------
ID
----------
26
----------
Category
----------
ShadyStuff - BackupSong()
----------
Content
----------
Could not backup song, Error: Ausnahme von HRESULT: 0x8004230F
----------
----------------------------------

Link to post
Share on other sites

I keep getting this Unimplemented error, every song I changed to created a folder with the correct station name but within that folder it makes an empty "Unknown" folder. I've tried it on two different xp machines running SP2 with all the .net updates and IE 7, one of them doesn't run any antivirus software or firewalls.. clean install as of a week ago.

----------------------------------

----------------------------------

----------

ID

----------

26

----------

Category

----------

Handlers - BeforeNavigate2()

----------

Content

----------

Song Changed: java script:void(setTimeout(function(){Pandora.fireEvent("SongPlayed",{songName:unescape('I Got A Right To Know'), artistName:unescape('Prince Po'), songURL:unescape('http://www.pandora.com/music/song/prince+po/i+got+right+to+know'), artURL:unescape('http://images-ntt-2.pandora.com/images/public/amz/2/2/8/1/706962101822_130W_130H.jpg')})},1))

----------

----------------------------------

----------------------------------

----------

ID

----------

27

----------

Category

----------

Handlers - BeforeNavigate2()

----------

Content

----------

Unimplemented: java script:void(setTimeout(function(){Pandora.fireEvent("SongEnded",{songName:unescape('I Got A Right To Know'), artistName:unescape('Prince Po'), songURL:unescape('http://www.pandora.com/music/song/prince+po/i+got+right+to+know'), artURL:unescape('http://images-ntt-2.pandora.com/images/public/amz/2/2/8/1/706962101822_130W_130H.jpg')})},1))

----------

----------------------------------

----------------------------------

It seems like it creates the "Unknown" folder before the song is done downloading.

any help would be appreciated.

Link to post
Share on other sites

I'm gonna be away for 3 weeks so I'll look into the errors then

About the source, same applies, I'll release it then

I keep getting this Unimplemented error, every song I changed to created a folder with the correct station name but within that folder it makes an empty "Unknown" folder. I've tried it on two different xp machines running SP2 with all the .net updates and IE 7, one of them doesn't run any antivirus software or firewalls.. clean install as of a week ago.

----------------------------------

----------------------------------

----------

ID

----------

26

----------

Category

----------

Handlers - BeforeNavigate2()

----------

Content

----------

Song Changed: java script:void(setTimeout(function(){Pandora.fireEvent("SongPlayed",{songName:unescape('I Got A Right To Know'), artistName:unescape('Prince Po'), songURL:unescape('http://www.pandora.com/music/song/prince+po/i+got+right+to+know'), artURL:unescape('http://images-ntt-2.pandora.com/images/public/amz/2/2/8/1/706962101822_130W_130H.jpg')})},1))

----------

----------------------------------

----------------------------------

----------

ID

----------

27

----------

Category

----------

Handlers - BeforeNavigate2()

----------

Content

----------

Unimplemented: java script:void(setTimeout(function(){Pandora.fireEvent("SongEnded",{songName:unescape('I Got A Right To Know'), artistName:unescape('Prince Po'), songURL:unescape('http://www.pandora.com/music/song/prince+po/i+got+right+to+know'), artURL:unescape('http://images-ntt-2.pandora.com/images/public/amz/2/2/8/1/706962101822_130W_130H.jpg')})},1))

----------

----------------------------------

----------------------------------

It seems like it creates the "Unknown" folder before the song is done downloading.

any help would be appreciated.

Uknown folder is for songs it hasn't managed to get the song names yet. Ignore files in this folder as it will usually mean they are incomplete

Link to post
Share on other sites
I'm gonna be away for 3 weeks so I'll look into the errors then

About the source, same applies, I'll release it then

Uknown folder is for songs it hasn't managed to get the song names yet. Ignore files in this folder as it will usually mean they are incomplete

My Unknown Folder is saving all the songs as "fla38.m4a, fla39.m4a..etc" When I first start the program it picks the first song, writes that with the correct artist/album/title, outside of the "Unknown Folder" then proceeds to write over it with every new song that starts up.

Link to post
Share on other sites
  • 4 weeks later...
My Unknown Folder is saving all the songs as "fla38.m4a, fla39.m4a..etc" When I first start the program it picks the first song, writes that with the correct artist/album/title, outside of the "Unknown Folder" then proceeds to write over it with every new song that starts up.

Sorry, I seem to have misplaced the source so I can't fix any problems that are causing this but it may fixable still. You need to paste the log here

btw, if anyone want's the source (my code doesn't have comments i think) just decompile it using .net reflector and you then get it in basically any language you want!

I'll post my latest one soon but there's a few bugs I'm dealing with!

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...