diff options
Diffstat (limited to 'nephilim/plugins')
-rw-r--r-- | nephilim/plugins/AlbumCover.py | 8 | ||||
-rw-r--r-- | nephilim/plugins/Library.py | 18 | ||||
-rw-r--r-- | nephilim/plugins/Lyrics.py | 10 | ||||
-rw-r--r-- | nephilim/plugins/Playlist.py | 20 | ||||
-rw-r--r-- | nephilim/plugins/Songinfo.py | 2 |
5 files changed, 34 insertions, 24 deletions
diff --git a/nephilim/plugins/AlbumCover.py b/nephilim/plugins/AlbumCover.py index db4d6f8..01aa333 100644 --- a/nephilim/plugins/AlbumCover.py +++ b/nephilim/plugins/AlbumCover.py @@ -221,9 +221,9 @@ class AlbumCover(Plugin): url = QtCore.QUrl('http://ws.audioscrobbler.com/2.0/') url.setQueryItems([('api_key', 'c325945c67b3e8327e01e3afb7cdcf35'), ('method', 'album.getInfo'), - ('artist', song.artist()), - ('album', song.album()), - ('mbid', song.tag('MUSICBRAINZ_ALBUMID'))]) + ('artist', song['artist']), + ('album', song['album']), + ('mbid', song['MUSICBRAINZ_ALBUMID'])]) self.fetch2(song, url) self.rep.finished.connect(self.__handle_search_res) @@ -390,7 +390,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 74c5464..50f85a3 100644 --- a/nephilim/plugins/Library.py +++ b/nephilim/plugins/Library.py @@ -83,6 +83,11 @@ class LibraryWidget(QtGui.QWidget): plugin = None logger = None + class LibrarySongItem(QtGui.QStandardItem): + # public + "Song path" + path = None + class LibraryModel(QtGui.QStandardItemModel): def fill(self, songs, mode): self.clear() @@ -91,7 +96,7 @@ class LibraryWidget(QtGui.QWidget): for song in songs: cur_item = tree for part in mode.split('/'): - tag = song.tag(part) + tag = song[part] if isinstance(tag, list): tag = tag[0] #FIXME hack to make songs with multiple genres work. if not tag: @@ -104,11 +109,10 @@ class LibraryWidget(QtGui.QWidget): cur_item[1].appendRow(it) cur_item[0][tag] = [{}, it] cur_item = cur_item[0][tag] - it = QtGui.QStandardItem('%s%02d %s'%(song.tag('disc') + '/' if song.tag('disc') else '', - song.track() if song.track() else 0, - song.title() if song.title() else song.filepath())) + it = LibraryWidget.LibrarySongItem('%s%02d %s'%(song['disc'] + '/' if 'disc' in song else '', + song['tracknum'], song['title'])) + it.path = song['file'] it.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled) - it.setData(QVariant(song), QtCore.Qt.UserRole) cur_item[1].appendRow(it) self.sort(0, QtCore.Qt.AscendingOrder) @@ -196,8 +200,8 @@ class LibraryWidget(QtGui.QWidget): self.plugin.mpclient.add(paths) def item_to_playlist(self, item, add_queue): - if not item.hasChildren(): - add_queue.append(item.data(QtCore.Qt.UserRole).toPyObject().filepath()) + if isinstance(item, self.LibrarySongItem): + add_queue.append(item.path) else: for i in range(item.rowCount()): self.item_to_playlist(item.child(i), add_queue) diff --git a/nephilim/plugins/Lyrics.py b/nephilim/plugins/Lyrics.py index 9217df8..3b6224f 100644 --- a/nephilim/plugins/Lyrics.py +++ b/nephilim/plugins/Lyrics.py @@ -91,7 +91,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.decode('utf-8')) @@ -147,7 +147,7 @@ class Lyrics(Plugin): def fetch(self, song): url = QtCore.QUrl('http://lyricwiki.org/api.php') - url.setQueryItems([('func', 'getArtist'), ('artist', song.artist()), + url.setQueryItems([('func', 'getArtist'), ('artist', song['artist']), ('fmt', 'xml')]) self.fetch2(song, url) self.rep.finished.connect(self.__handle_artist_res) @@ -167,7 +167,7 @@ class Lyrics(Plugin): url = QtCore.QUrl('http://lyricwiki.org/api.php') url.setQueryItems([('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) @@ -215,7 +215,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) @@ -229,7 +229,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 44d7a40..d8147bc 100644 --- a/nephilim/plugins/Playlist.py +++ b/nephilim/plugins/Playlist.py @@ -44,6 +44,14 @@ class PlaylistWidget(QtGui.QWidget): plugin = None playlist = None + class PlaylistSongItem(QtGui.QTreeWidgetItem): + # public + id = -1 + + def __init__(self, id): + QtGui.QTreeWidgetItem.__init__(self) + self.id = id + def __init__(self, plugin): QtGui.QWidget.__init__(self) self.plugin = plugin @@ -55,7 +63,6 @@ class PlaylistWidget(QtGui.QWidget): self.layout().setMargin(0) self.layout().addWidget(self.playlist) - class Playlist(QtGui.QTreeWidget): song = None plugin = None @@ -80,23 +87,22 @@ class PlaylistWidget(QtGui.QWidget): self.plugin.settings.setValue(self.plugin.name + '/header_state', QVariant(self.header().saveState())) def _song_activated(self, item): - self.plugin.mpclient.play(item.data(0, QtCore.Qt.UserRole).toPyObject().id()) + self.plugin.mpclient.play(item.id) def fill(self): columns = self.plugin.settings.value(self.plugin.name + '/columns').toStringList() self.clear() - for song in self.plugin.mpclient.playlist(): - item = QtGui.QTreeWidgetItem() + for song in self.plugin.mpclient.playlistinfo(): + item = PlaylistWidget.PlaylistSongItem(song['id']) for i in range(len(columns)): - item.setText(i, unicode(song.tag(str(columns[i])))) - item.setData(0, QtCore.Qt.UserRole, QVariant(song)) + item.setText(i, unicode(song[str(columns[i])])) self.addTopLevelItem(item) def keyPressEvent(self, event): if event.matches(QtGui.QKeySequence.Delete): ids = [] for item in self.selectedItems(): - ids.append(item.data(0, QtCore.Qt.UserRole).toPyObject().id()) + ids.append(item.id) self.plugin.mpclient.delete(ids) else: diff --git a/nephilim/plugins/Songinfo.py b/nephilim/plugins/Songinfo.py index cad5dd0..144033b 100644 --- a/nephilim/plugins/Songinfo.py +++ b/nephilim/plugins/Songinfo.py @@ -105,7 +105,7 @@ class Songinfo(Plugin): song = self.mpclient.current_song() for tag in self.__tags: - metadata[tag] = song.tag(str(tag), '') if song else '' #XXX i don't like the explicit conversion to python string + metadata[tag] = song[str(tag)] if song else '' #XXX i don't like the explicit conversion to python string self.o.set_metadata(metadata) class SonginfoWidget(QtGui.QWidget): |