summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2010-04-30 08:10:56 +0200
committerAnton Khirnov <wyskas@gmail.com>2010-04-30 08:10:56 +0200
commit1ff1ec58b8ad638e7ffa901a38351cecb3478320 (patch)
tree989be504d32215adef01a5cc2fdd68cd213cacc1
parent60088b7f5c672a3544edbacd88020e591017f653 (diff)
song: raise KeyError instead of returning empty string
-rw-r--r--nephilim/plugins/AlbumCover.py6
-rw-r--r--nephilim/plugins/Library.py10
-rw-r--r--nephilim/plugins/Lyrics.py10
-rw-r--r--nephilim/plugins/Playlist.py4
-rw-r--r--nephilim/song.py5
-rw-r--r--nephilim/winMain.py4
6 files changed, 22 insertions, 17 deletions
diff --git a/nephilim/plugins/AlbumCover.py b/nephilim/plugins/AlbumCover.py
index b630d76..21aaa8c 100644
--- a/nephilim/plugins/AlbumCover.py
+++ b/nephilim/plugins/AlbumCover.py
@@ -220,14 +220,14 @@ class AlbumCover(Plugin):
name = 'Last.fm'
def fetch(self, song):
- if not song['artist'] or not song['album']:
+ if not 'artist' in song or 'album' in song:
return self.finish()
url = QtCore.QUrl('http://ws.audioscrobbler.com/2.0/')
url.setQueryItems([('api_key', 'beedb2a8a0178b8059cd6c7e57fbe428'),
('method', 'album.getInfo'),
('artist', song['artist']),
('album', song['album']),
- ('mbid', song['MUSICBRAINZ_ALBUMID'])])
+ ('mbid', song['?MUSICBRAINZ_ALBUMID'])])
self.fetch2(song, url)
self.rep.finished.connect(self.__handle_search_res)
@@ -396,7 +396,7 @@ class AlbumCover(Plugin):
self.__abort_fetch()
file = QtGui.QFileDialog.getOpenFileName(None,
- 'Select album cover for %s - %s'%(song['artist'], song['album']),
+ 'Select album cover for %s - %s'%(song['?artist'], song['?album']),
self.__cover_dir, '')
if not file:
return
diff --git a/nephilim/plugins/Library.py b/nephilim/plugins/Library.py
index c746af6..0d7e8e1 100644
--- a/nephilim/plugins/Library.py
+++ b/nephilim/plugins/Library.py
@@ -111,8 +111,9 @@ class LibraryWidget(QtGui.QWidget):
for song in songs:
cur_item = tree
for part in grouping:
- tag = song[part]
- if not tag:
+ try:
+ tag = song[part]
+ except KeyError:
tag = 'Unknown'
if tag in cur_item[0]:
cur_item = cur_item[0][tag]
@@ -123,8 +124,9 @@ class LibraryWidget(QtGui.QWidget):
cur_item[0][tag] = [{}, it]
cur_item = cur_item[0][tag]
it = LibraryWidget.LibrarySongItem('%s%02d %s'%(song['disc'] + '/' if 'disc' in song else '',
- song['tracknum'], song['title']))
- it.path = song['file']
+ song['tracknum'] if 'tracknum' in song else 0,
+ song['?title']))
+ it.path = song['?file']
it.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled)
cur_item[1].appendRow(it)
diff --git a/nephilim/plugins/Lyrics.py b/nephilim/plugins/Lyrics.py
index d558165..4dc647e 100644
--- a/nephilim/plugins/Lyrics.py
+++ b/nephilim/plugins/Lyrics.py
@@ -92,7 +92,7 @@ class LyricsWidget(QtGui.QWidget):
self.__text_view.clear()
self.__label.setText('<b>%s</b> by <u>%s</u> on <u>%s</u>'\
- %(song['title'], song['artist'], song['album']))
+ %(song['?title'], song['?artist'], song['?album']))
if lyrics:
self.logger.info('Setting new lyrics.')
self.__text_view.insertPlainText(lyrics)
@@ -150,7 +150,7 @@ class Lyrics(Plugin):
def fetch(self, song):
url = QtCore.QUrl(self.__apiaddress)
- url.setQueryItems([('func', 'getArtist'), ('artist', song['artist']),
+ url.setQueryItems([('func', 'getArtist'), ('artist', song['?artist']),
('fmt', 'xml'), ('action', 'lyrics')])
self.fetch2(song, url)
self.rep.finished.connect(self.__handle_artist_res)
@@ -171,7 +171,7 @@ class Lyrics(Plugin):
url = QtCore.QUrl(self.__apiaddress)
url.setQueryItems([('action', 'lyrics'), ('func', 'getSong'), ('artist', artist),
- ('song', self.song['title']), ('fmt', 'xml')])
+ ('song', self.song['?title']), ('fmt', 'xml')])
self.rep = self.nam.get(QtNetwork.QNetworkRequest(url))
self.rep.finished.connect(self.__handle_search_res)
self.rep.error.connect(self.handle_error)
@@ -212,7 +212,7 @@ class Lyrics(Plugin):
def fetch(self, song):
url = QtCore.QUrl('http://www.animelyrics.com/search.php')
- url.setQueryItems([('t', 'performer'), ('q', song['artist'])])
+ url.setQueryItems([('t', 'performer'), ('q', song['?artist'])])
self.fetch2(song, url)
self.rep.finished.connect(self.__handle_search_res)
@@ -226,7 +226,7 @@ class Lyrics(Plugin):
url = None
for elem in tree.iterfind('.//a'):
- if ('href' in elem.attrib) and elem.text and (self.song['title'] in elem.text):
+ if ('href' in elem.attrib) and elem.text and (self.song['?title'] in elem.text):
url = QtCore.QUrl('http://www.animelyrics.com/%s'%elem.get('href'))
if not url:
diff --git a/nephilim/plugins/Playlist.py b/nephilim/plugins/Playlist.py
index ed86393..df78a44 100644
--- a/nephilim/plugins/Playlist.py
+++ b/nephilim/plugins/Playlist.py
@@ -114,7 +114,7 @@ class PlaylistTree(QtGui.QTreeWidget):
for song in self.plugin.mpclient.playlistinfo():
item = PlaylistSongItem(PlaylistEntryRef(self.plugin.mpclient, song['id']))
for i in range(len(columns)):
- item.setText(i, song[columns[i]])
+ item.setText(i, song['?' + columns[i]])
self.addTopLevelItem(item)
def keyPressEvent(self, event):
@@ -162,7 +162,7 @@ class PlaylistTree(QtGui.QTreeWidget):
def _add_selected_same(self, tag):
"""Adds all tracks in DB with tag 'tag' same as selected tracks."""
for it in self.selectedItems():
- self.plugin.mpclient.findadd(tag, it.song[tag])
+ self.plugin.mpclient.findadd(tag, it.song['?' + tag])
def _show_context_menu(self, pos):
if not self.indexAt(pos).isValid():
diff --git a/nephilim/song.py b/nephilim/song.py
index fb18ed3..6cf0a6b 100644
--- a/nephilim/song.py
+++ b/nephilim/song.py
@@ -65,7 +65,10 @@ class Song(dict):
return self['file']
elif key == 'albumartist':
return self['artist']
- return ''
+ elif key == 'songdir':
+ return os.path.dirname(self['file'])
+
+ raise KeyError
def __contains__(self, item):
if dict.__contains__(self, item):
diff --git a/nephilim/winMain.py b/nephilim/winMain.py
index fd6be88..cbd2649 100644
--- a/nephilim/winMain.py
+++ b/nephilim/winMain.py
@@ -171,8 +171,8 @@ class winMain(QtGui.QMainWindow):
state = self.mpclient.status()['state']
state = 'playing' if state == 'play' else 'paused' if state == 'pause' else 'stopped'
if song:
- self.setWindowTitle('%s by %s - %s [%s]'%(song['title'], song['artist'], APPNAME, state))
- self.__statuslabel.setText('%s by %s on %s [%s]'%(song['title'], song['artist'],song['album'], state))
+ self.setWindowTitle('%s by %s - %s [%s]'%(song['?title'], song['?artist'], APPNAME, state))
+ self.__statuslabel.setText('%s by %s on %s [%s]'%(song['?title'], song['?artist'],song['?album'], state))
else:
self.setWindowTitle(APPNAME)
self.__statuslabel.setText('')