--- /dev/null
+[settings]
+
+# Copy or move this file into ~/.i_like_pandora.config (your home folder). Lines that start with a # are ignored as comments.
+
+# Your username can be found by clicking "Your Profile" from http://pandora.com. You will be taken to a URL containing your username: http://pandora.com/people/<username>
+username: my_username
+
+# This is the folder your music will be downloaded to. It will not be created for you.
+download_folder: /home/user/pandora_music
+
+# On OSX this should likely be set to False, on Ubuntu, set True. Read the README for more information.
+notifications: True
+
+# This is the default icon used for notifications if a thumbnail is unable to be fetched (which would be unusual).
+default_icon: /usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-shockwave-flash.png
+
+# The following is the path to the youtube-dl executable.
+youtube-dl: /usr/bin/youtube-dl
-This script searches for each of your liked pandora songs and downloads the first YouTube result for "Title Artist" (some music is not avaiblable).
+This script searches for each of your liked Pandora songs and downloads the first YouTube result for "Title Artist" (some music is not avaiblable).
Your Pandora listening activity must be public for this script to work. You can edit your privacy settings here:
http://www.pandora.com/privacysettings
-This script allows you to quickly come back to all the songs you've forgotten you loved. A good way to keep up to date with your Pandora favorites is to add this script into cron and have it run daily. Remember to edit the settings in the first part of the script.
+Remember to set your username and download directory in a settings file at ~/.i_like_pandora.config. A sample file should be at ./.i_like_pandora.config and available here:
+http://github.com/nospampleasemam/i_like_pandora/
-You can edit your crontab with the command "crontab -e". When using this script via cron, a display must be specified to send the notifications to. Here is an example:
+A good way to keep up to date with your Pandora favorites is to add this script into cron and have it run daily. You can edit your crontab with the command "crontab -e". When using this script via cron, a display must be specified to send the notifications to. Here is an example:
$ crontab -e
@hourly env DISPLAY=:0 python ~/path/to/likes_pandora.py
LICENSING
-------
-This source (written by Dylan Lloyd <dylan@psu.edu> is subject to the following copyright:
-
-The original source and the derived work contained here is subject to the following license:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
__author__ = ("Dylan Lloyd <dylan@psu.edu>")
__license__ = "BSD"
-# SETTINGS
+default_options = {
+ 'notifications' : 'true',
+ # NOTIFICATIONS must be a string due to issues noted here:
+ # http://bugs.python.org/issue974019
+ # ConfigParser.getboolean fails when falling back to the default value
+ # if the value type is bool.
+ 'youtube-dl' : '/usr/bin/youtube-dl',
+ 'default_icon' : '/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-shockwave-flash.png',
+ 'youtube-dl_options' : '--no-progress --ignore-errors --continue --max-quality=22 -o "%(stitle)s---%(id)s.%(ext)s"'
+}
-USER = 'alphabethos' # pandora account name http://pandora.com/people/<USER>
-DIR = '/home/dylan/pandora/' # where to download the videos - will not be automatically created
-YT_DL = '/usr/bin/youtube-dl' # Path to youtube-dl
-NOTIFICATIONS = True # False
-DEFAULT_ICON ='/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-shockwave-flash.png' # for notifications
-YT_OPT = '--no-progress --ignore-errors --continue --max-quality=22 -o "%(stitle)s---%(id)s.%(ext)s"'
-# END OF SETTINGS
+import ConfigParser # This module has been renamed to configparser in python 3.0
+import sys
+import os
+
+CONFIG_FILE= os.path.join(os.path.expanduser('~'), '.i_like_pandora.config')
+config = ConfigParser.ConfigParser(default_options)
+loaded_files = config.read(CONFIG_FILE) # config.read returns an empty array if it fails.
+if len(loaded_files) == 0:
+ print 'Can\'t find a configuration file at', CONFIG_FILE
+ sys.exit()
+try:
+ USER = config.get('settings', 'username')
+ DIR = os.path.expanduser(config.get('settings', 'download_folder'))
+ NOTIFICATIONS = config.getboolean('settings', 'notifications')
+ YT_DL = config.get('settings', 'youtube-dl')
+ DEFAULT_ICON = config.get('settings', 'default_icon')
+except:
+ print 'There is a formatting error in the configuration file at', CONFIG_FILE
+ sys.exit()
from BeautifulSoup import BeautifulSoup
import urllib
import urllib2
-import os
import re
import copy
import shlex, subprocess
search_strings.append(search_string)
i += 1
else:
- pass ## ERROR
+ # This would mean something strange has happened: there
+ # aren't the same number of titles and artist names on a
+ # station page.
+ pass
return search_strings
def search_youtube(search_strings):
note = pynotify.Notification(title, 'video downloaded', thumbnail)
note.show()
-
def main():
stations = fetch_stations(USER)
if len(stations) == 0:
- print 'are you sure your pandora profile is public?'
+ print 'Are you sure your pandora profile is public? Can\'t seem to find any stations listed with your account.'
search_strings = fetch_tracks(stations)
videos = search_youtube(search_strings)
videos = check_for_existing(videos)