diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html index 31d0f4b4..fe789c72 100644 --- a/data/interfaces/default/config.html +++ b/data/interfaces/default/config.html @@ -205,6 +205,7 @@
(Web Interface changes require a restart to take effect)
-
-%def>
\ No newline at end of file
+
+%def>
diff --git a/headphones/__init__.py b/headphones/__init__.py
index 30b6917f..d7865ca2 100644
--- a/headphones/__init__.py
+++ b/headphones/__init__.py
@@ -73,6 +73,7 @@ RENAME_FILES = False
CLEANUP_FILES = False
ADD_ALBUM_ART = False
EMBED_ALBUM_ART = False
+EMBED_LYRICS = False
DOWNLOAD_DIR = None
BLACKHOLE = None
BLACKHOLE_DIR = None
@@ -175,7 +176,7 @@ def initialize():
HTTP_PORT, HTTP_HOST, HTTP_USERNAME, HTTP_PASSWORD, HTTP_ROOT, LAUNCH_BROWSER, GIT_PATH, \
CURRENT_VERSION, LATEST_VERSION, MUSIC_DIR, DESTINATION_DIR, PREFERRED_QUALITY, PREFERRED_BITRATE, DETECT_BITRATE, \
ADD_ARTISTS, CORRECT_METADATA, MOVE_FILES, RENAME_FILES, FOLDER_FORMAT, FILE_FORMAT, CLEANUP_FILES, INCLUDE_EXTRAS, \
- ADD_ALBUM_ART, EMBED_ALBUM_ART, DOWNLOAD_DIR, BLACKHOLE, BLACKHOLE_DIR, USENET_RETENTION, NZB_SEARCH_INTERVAL, \
+ ADD_ALBUM_ART, EMBED_ALBUM_ART, EMBED_LYRICS, DOWNLOAD_DIR, BLACKHOLE, BLACKHOLE_DIR, USENET_RETENTION, NZB_SEARCH_INTERVAL, \
LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, \
NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, \
NZBSORG, NZBSORG_UID, NZBSORG_HASH, NEWZBIN, NEWZBIN_UID, NEWZBIN_PASSWORD, LASTFM_USERNAME, INTERFACE, FOLDER_PERMISSIONS, \
@@ -223,6 +224,7 @@ def initialize():
CLEANUP_FILES = bool(check_setting_int(CFG, 'General', 'cleanup_files', 0))
ADD_ALBUM_ART = bool(check_setting_int(CFG, 'General', 'add_album_art', 0))
EMBED_ALBUM_ART = bool(check_setting_int(CFG, 'General', 'embed_album_art', 0))
+ EMBED_LYRICS = bool(check_setting_int(CFG, 'General', 'embed_lyrics', 0))
DOWNLOAD_DIR = check_setting_str(CFG, 'General', 'download_dir', '')
BLACKHOLE = bool(check_setting_int(CFG, 'General', 'blackhole', 0))
BLACKHOLE_DIR = check_setting_str(CFG, 'General', 'blackhole_dir', '')
@@ -404,6 +406,7 @@ def config_write():
new_config['General']['cleanup_files'] = int(CLEANUP_FILES)
new_config['General']['add_album_art'] = int(ADD_ALBUM_ART)
new_config['General']['embed_album_art'] = int(EMBED_ALBUM_ART)
+ new_config['General']['embed_lyrics'] = int(EMBED_LYRICS)
new_config['General']['download_dir'] = DOWNLOAD_DIR
new_config['General']['blackhole'] = int(BLACKHOLE)
new_config['General']['blackhole_dir'] = BLACKHOLE_DIR
diff --git a/headphones/lyrics.py b/headphones/lyrics.py
new file mode 100644
index 00000000..2e489d27
--- /dev/null
+++ b/headphones/lyrics.py
@@ -0,0 +1,67 @@
+import re
+import urllib
+from xml.dom import minidom
+import htmlentitydefs
+
+from headphones import logger
+
+def getLyrics(artist, song):
+
+ params = { "artist": artist,
+ "song": song,
+ "fmt": 'xml'
+ }
+
+ searchURL = 'http://lyrics.wikia.com/api.php?' + urllib.urlencode(params)
+
+ try:
+ data = urllib.urlopen(searchURL).read()
+ except Exception, e:
+ logger.warn('Error opening: %s. Error: %s' % (searchURL, e))
+ return
+
+ parseddata = minidom.parseString(data)
+
+ url = parseddata.getElementsByTagName("url")
+
+ if url:
+ lyricsurl = url[0].firstChild.nodeValue
+ else:
+ logger.info('No lyrics found for %s - %s' % (artist, song))
+ return
+
+ try:
+ lyricspage = urllib.urlopen(lyricsurl).read()
+ except Exception, e:
+ logger.warn('Error fetching lyrics from: %s. Error: %s' % (lyricsurl, e))
+ return
+
+ m = re.compile('''