Fork me on GitHub

PyPandora by amoffat

Cross-platform Pandora Radio player in a single python script

Screenshot

Dependencies

Web browser, Python > 2.5

Author

Andrew Moffat andrew.robert.moffat@gmail.com. Want to collaborate on something cool? Drop me a line.

Download

pypandora.py

Running

$ python pypandora.py
Enjoy! Report any bugs to the project page.


Extending the UI

Most people will probably want to tweak the html interface. To do that, you should know a few things: the html is embedded in pypandora.py, in the variable name "html_page". It's zlib.compressed and base64.b64encoded to save space. Fortunately, getting it out is easy (that's what she said). Just run:

$ python pypandora.py --export
to export the html to index.html locally. You can then use this file as a base to make your changes. When you run pypandora, if it sees an index.html in its own directory, it will use that instead of the html_page variable. If you want to re-embed your index.html page back into pypandora.py, just run:
$ python pypandora.py --import
and pypandora will slurp up index.html, zlib.compress and base64 encode it, and embed it in pypandora.py

Re-distributing (IMPORTANT)

If you choose to re-distribute pypandora, PLEASE run the following command before doing so:

$ python pypandora.py --clean
This will clean out your saved settings from pypandora (like your login info!) You really don't want to be sharing that stuff with everyone.

Known Issues

SYNC START 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 SYNC END