summaryrefslogtreecommitdiff
path: root/nephilim/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'nephilim/plugins')
-rw-r--r--nephilim/plugins/AlbumCover.py8
-rw-r--r--nephilim/plugins/Library.py18
-rw-r--r--nephilim/plugins/Lyrics.py10
-rw-r--r--nephilim/plugins/Playlist.py20
-rw-r--r--nephilim/plugins/Songinfo.py2
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):