Add support for “albumartist” tag (resolve #27)
This commit is contained in:
parent
1fdab35391
commit
c451c32437
7 changed files with 97 additions and 36 deletions
Binary file not shown.
|
@ -1,8 +1,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CoverGrid (mcg)\n"
|
||||
"POT-Creation-Date: 2017-04-26 12:15+0200\n"
|
||||
"PO-Revision-Date: 2017-04-28 10:59+0200\n"
|
||||
"POT-Creation-Date: 2017-06-04 15:34+0200\n"
|
||||
"PO-Revision-Date: 2017-06-04 15:34+0200\n"
|
||||
"Last-Translator: coderkun <olli@coderkun.de>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
|
@ -16,6 +16,7 @@ msgstr ""
|
|||
"X-Poedit-SearchPath-0: data/gtk.glade\n"
|
||||
"X-Poedit-SearchPath-1: data/gtk.menu.ui\n"
|
||||
"X-Poedit-SearchPath-2: data/gtk.shortcuts.ui\n"
|
||||
"X-Poedit-SearchPath-3: mcg\n"
|
||||
|
||||
#: data/gtk.glade:21
|
||||
msgid "Tracklist"
|
||||
|
@ -89,57 +90,57 @@ msgstr "Bildordner:"
|
|||
msgid "Connection"
|
||||
msgstr "Verbindung"
|
||||
|
||||
#: data/gtk.glade:698 data/gtk.menu.ui:30
|
||||
#: data/gtk.glade:715 data/gtk.menu.ui:30
|
||||
msgid "Cover"
|
||||
msgstr "Cover"
|
||||
|
||||
#: data/gtk.glade:809 data/gtk.menu.ui:36
|
||||
#: data/gtk.glade:826 data/gtk.menu.ui:36
|
||||
msgid "Playlist"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: data/gtk.glade:836
|
||||
#: data/gtk.glade:853
|
||||
msgid "search library"
|
||||
msgstr "Bibliothek durchsuchen"
|
||||
|
||||
#: data/gtk.glade:977 data/gtk.menu.ui:42
|
||||
#: data/gtk.glade:994 data/gtk.menu.ui:42
|
||||
msgid "Library"
|
||||
msgstr "Bibliothek"
|
||||
|
||||
#: data/gtk.glade:1049 data/gtk.shortcuts.ui:74
|
||||
#: data/gtk.glade:1066 data/gtk.shortcuts.ui:74
|
||||
msgid "Connect or disconnect"
|
||||
msgstr "Die Verbindung herstellen oder trennen"
|
||||
|
||||
#: data/gtk.glade:1071 data/gtk.shortcuts.ui:81
|
||||
#: data/gtk.glade:1088 data/gtk.shortcuts.ui:81
|
||||
msgid "Switch between play and pause"
|
||||
msgstr "Zwischen Abspielen und Pause wechseln"
|
||||
|
||||
#: data/gtk.glade:1091
|
||||
#: data/gtk.glade:1108
|
||||
msgid "Adjust the volume"
|
||||
msgstr "Die Lautstärke anpassen"
|
||||
|
||||
#: data/gtk.glade:1149 data/gtk.shortcuts.ui:101
|
||||
#: data/gtk.glade:1166 data/gtk.shortcuts.ui:101
|
||||
msgid "Show the cover in fullscreen mode"
|
||||
msgstr "Das Cover im Vollbildmodus anzeigen"
|
||||
|
||||
#: data/gtk.glade:1172 data/gtk.glade:1277
|
||||
#: data/gtk.glade:1189 data/gtk.glade:1294
|
||||
msgid "Settings and actions"
|
||||
msgstr "Einstellungen und Aktionen"
|
||||
|
||||
#: data/gtk.glade:1220 data/gtk.shortcuts.ui:88
|
||||
#: data/gtk.glade:1237 data/gtk.shortcuts.ui:88
|
||||
msgid "Clear the playlist"
|
||||
msgstr "Die Wiedergabeliste leeren"
|
||||
|
||||
#: data/gtk.glade:1254 data/gtk.shortcuts.ui:114
|
||||
#: data/gtk.glade:1271 data/gtk.shortcuts.ui:114
|
||||
msgid "Search the library"
|
||||
msgstr "Die Bibliothek durchsuchen"
|
||||
|
||||
#: data/gtk.glade:1322
|
||||
#: data/gtk.glade:1339
|
||||
msgid ""
|
||||
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
|
||||
"instead of single tracks."
|
||||
msgstr ""
|
||||
"CoverGrid ist ein ein Client für den Music Player Daemon, der sich "
|
||||
"auf Alben anstellen von einzelnen Songs fokussiert."
|
||||
"CoverGrid ist ein ein Client für den Music Player Daemon, der sich auf Alben "
|
||||
"anstellen von einzelnen Songs fokussiert."
|
||||
|
||||
#: data/gtk.menu.ui:7
|
||||
msgid "Connect"
|
||||
|
@ -209,6 +210,10 @@ msgstr "Cover-Paneel"
|
|||
msgid "Library Panel"
|
||||
msgstr "Bibliothekspaneel"
|
||||
|
||||
#: mcg/utils.py:61 mcg/widgets.py:989
|
||||
msgid "{} feat. {}"
|
||||
msgstr "{} mit {}"
|
||||
|
||||
#~ msgid "_Play"
|
||||
#~ msgstr "_Abspielen"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -1,8 +1,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CoverGrid (mcg)\n"
|
||||
"POT-Creation-Date: 2017-04-26 12:15+0200\n"
|
||||
"PO-Revision-Date: 2017-04-28 11:00+0200\n"
|
||||
"POT-Creation-Date: 2017-06-04 15:35+0200\n"
|
||||
"PO-Revision-Date: 2017-06-04 15:35+0200\n"
|
||||
"Last-Translator: coderkun <olli@coderkun.de>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: en\n"
|
||||
|
@ -15,6 +15,7 @@ msgstr ""
|
|||
"X-Poedit-SearchPath-0: data/gtk.glade\n"
|
||||
"X-Poedit-SearchPath-1: data/gtk.menu.ui\n"
|
||||
"X-Poedit-SearchPath-2: data/gtk.shortcuts.ui\n"
|
||||
"X-Poedit-SearchPath-3: mcg\n"
|
||||
|
||||
#: data/gtk.glade:21
|
||||
msgid "Tracklist"
|
||||
|
@ -88,51 +89,51 @@ msgstr "Image Directory:"
|
|||
msgid "Connection"
|
||||
msgstr "Connection"
|
||||
|
||||
#: data/gtk.glade:698 data/gtk.menu.ui:30
|
||||
#: data/gtk.glade:715 data/gtk.menu.ui:30
|
||||
msgid "Cover"
|
||||
msgstr "Cover"
|
||||
|
||||
#: data/gtk.glade:809 data/gtk.menu.ui:36
|
||||
#: data/gtk.glade:826 data/gtk.menu.ui:36
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: data/gtk.glade:836
|
||||
#: data/gtk.glade:853
|
||||
msgid "search library"
|
||||
msgstr "search library"
|
||||
|
||||
#: data/gtk.glade:977 data/gtk.menu.ui:42
|
||||
#: data/gtk.glade:994 data/gtk.menu.ui:42
|
||||
msgid "Library"
|
||||
msgstr "Library"
|
||||
|
||||
#: data/gtk.glade:1049 data/gtk.shortcuts.ui:74
|
||||
#: data/gtk.glade:1066 data/gtk.shortcuts.ui:74
|
||||
msgid "Connect or disconnect"
|
||||
msgstr "Connect or disconnect"
|
||||
|
||||
#: data/gtk.glade:1071 data/gtk.shortcuts.ui:81
|
||||
#: data/gtk.glade:1088 data/gtk.shortcuts.ui:81
|
||||
msgid "Switch between play and pause"
|
||||
msgstr "Switch between play and pause"
|
||||
|
||||
#: data/gtk.glade:1091
|
||||
#: data/gtk.glade:1108
|
||||
msgid "Adjust the volume"
|
||||
msgstr "Adjust the volume"
|
||||
|
||||
#: data/gtk.glade:1149 data/gtk.shortcuts.ui:101
|
||||
#: data/gtk.glade:1166 data/gtk.shortcuts.ui:101
|
||||
msgid "Show the cover in fullscreen mode"
|
||||
msgstr "Show the cover in fullscreen mode"
|
||||
|
||||
#: data/gtk.glade:1172 data/gtk.glade:1277
|
||||
#: data/gtk.glade:1189 data/gtk.glade:1294
|
||||
msgid "Settings and actions"
|
||||
msgstr "Settings and actions"
|
||||
|
||||
#: data/gtk.glade:1220 data/gtk.shortcuts.ui:88
|
||||
#: data/gtk.glade:1237 data/gtk.shortcuts.ui:88
|
||||
msgid "Clear the playlist"
|
||||
msgstr "Clear the playlist"
|
||||
|
||||
#: data/gtk.glade:1254 data/gtk.shortcuts.ui:114
|
||||
#: data/gtk.glade:1271 data/gtk.shortcuts.ui:114
|
||||
msgid "Search the library"
|
||||
msgstr "Search the library"
|
||||
|
||||
#: data/gtk.glade:1322
|
||||
#: data/gtk.glade:1339
|
||||
msgid ""
|
||||
"CoverGrid is a client for the Music Player Daemon, focusing on albums "
|
||||
"instead of single tracks."
|
||||
|
@ -208,6 +209,10 @@ msgstr "Cover Panel"
|
|||
msgid "Library Panel"
|
||||
msgstr "Library Panel"
|
||||
|
||||
#: mcg/utils.py:61 mcg/widgets.py:989
|
||||
msgid "{} feat. {}"
|
||||
msgstr "{} feat. {}"
|
||||
|
||||
#~ msgid "Show the keyboard shortcuts (this dialog)"
|
||||
#~ msgstr "Show the keyboard shortcuts (this dialog)"
|
||||
|
||||
|
|
|
@ -628,6 +628,8 @@ class Client(Base):
|
|||
track.set_length(song['time'])
|
||||
if 'date' in song:
|
||||
track.set_date(song['date'])
|
||||
if 'albumartist' in song:
|
||||
track.set_albumartists(song['albumartist'])
|
||||
return track
|
||||
|
||||
|
||||
|
@ -653,6 +655,7 @@ class MCGAlbum:
|
|||
|
||||
def __init__(self, title, host, image_dir):
|
||||
self._artists = []
|
||||
self._albumartists = []
|
||||
self._pathes = []
|
||||
if type(title) is list:
|
||||
title = title[0]
|
||||
|
@ -672,6 +675,14 @@ class MCGAlbum:
|
|||
|
||||
|
||||
def get_artists(self):
|
||||
if self._albumartists:
|
||||
return [artist for artist in self._artists if artist not in self._albumartists]
|
||||
return self._artists
|
||||
|
||||
|
||||
def get_albumartists(self):
|
||||
if self._albumartists:
|
||||
return self._albumartists
|
||||
return self._artists
|
||||
|
||||
|
||||
|
@ -699,6 +710,9 @@ class MCGAlbum:
|
|||
for artist in track.get_artists():
|
||||
if artist not in self._artists:
|
||||
self._artists.append(artist)
|
||||
for artist in track.get_albumartists():
|
||||
if artist not in self._albumartists:
|
||||
self._albumartists.append(artist)
|
||||
if track.get_date() is not None and track.get_date() not in self._dates:
|
||||
self._dates.append(track.get_date())
|
||||
path = os.path.dirname(track.get_file())
|
||||
|
@ -849,6 +863,7 @@ class MCGTrack:
|
|||
file = file[0]
|
||||
self._file = file
|
||||
|
||||
self._albumartists = []
|
||||
self._track = None
|
||||
self._length = 0
|
||||
self._date = None
|
||||
|
@ -859,6 +874,20 @@ class MCGTrack:
|
|||
|
||||
|
||||
def get_artists(self):
|
||||
if self._albumartists:
|
||||
return [artist for artist in self._artists if artist not in self._albumartists]
|
||||
return self._artists
|
||||
|
||||
|
||||
def set_albumartists(self, artists):
|
||||
if type(artists) is not list:
|
||||
artists = [artists]
|
||||
self._albumartists = artists
|
||||
|
||||
|
||||
def get_albumartists(self):
|
||||
if self._albumartists:
|
||||
return self._albumartists
|
||||
return self._artists
|
||||
|
||||
|
||||
|
@ -915,6 +944,7 @@ class MCGPlaylistTrack(MCGTrack):
|
|||
track.get_title(),
|
||||
track.get_file()
|
||||
)
|
||||
self.set_albumartists(track.get_albumartists())
|
||||
self.set_track(track.get_track())
|
||||
self.set_length(track.get_length())
|
||||
self.set_date(track.get_date())
|
||||
|
|
21
mcg/utils.py
21
mcg/utils.py
|
@ -3,6 +3,7 @@
|
|||
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
import locale
|
||||
import os
|
||||
import urllib
|
||||
|
||||
|
@ -54,6 +55,26 @@ class Utils:
|
|||
return pixbuf
|
||||
|
||||
|
||||
def create_artists_label(album):
|
||||
label = ', '.join(album.get_albumartists())
|
||||
if album.get_artists():
|
||||
label = locale.gettext("{} feat. {}").format(
|
||||
label,
|
||||
", ".join(album.get_artists())
|
||||
)
|
||||
return label
|
||||
|
||||
|
||||
def create_track_title(track):
|
||||
title = track.get_title()
|
||||
if track.get_artists():
|
||||
title = locale.gettext("{} feat. {}").format(
|
||||
title,
|
||||
", ".join(track.get_artists())
|
||||
)
|
||||
return title
|
||||
|
||||
|
||||
|
||||
|
||||
class TracklistSize:
|
||||
|
|
|
@ -907,7 +907,7 @@ class CoverPanel(GObject.GObject):
|
|||
)
|
||||
self._album_artist_label.set_markup(
|
||||
GObject.markup_escape_text(
|
||||
', '.join(album.get_artists())
|
||||
', '.join(album.get_albumartists())
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -985,7 +985,7 @@ class CoverPanel(GObject.GObject):
|
|||
cur_length,
|
||||
Gtk.PositionType.RIGHT,
|
||||
GObject.markup_escape_text(
|
||||
track.get_title()
|
||||
Utils.create_track_title(track)
|
||||
)
|
||||
)
|
||||
length = length + track.get_length()
|
||||
|
@ -1138,7 +1138,7 @@ class PlaylistPanel(GObject.GObject):
|
|||
|
||||
# Set labels
|
||||
self._standalone_title.set_text(album.get_title())
|
||||
self._standalone_artist.set_text(", ".join(album.get_artists()))
|
||||
self._standalone_artist.set_text(", ".join(album.get_albumartists()))
|
||||
|
||||
# Show panel
|
||||
self._open_standalone()
|
||||
|
@ -1213,7 +1213,7 @@ class PlaylistPanel(GObject.GObject):
|
|||
GObject.markup_escape_text("\n".join([
|
||||
album.get_title(),
|
||||
', '.join(album.get_dates()),
|
||||
', '.join(album.get_artists())
|
||||
Utils.create_artists_label(album)
|
||||
])),
|
||||
album.get_hash()
|
||||
])
|
||||
|
@ -1454,7 +1454,7 @@ class LibraryPanel(GObject.GObject):
|
|||
|
||||
# Set labels
|
||||
self._standalone_title.set_text(album.get_title())
|
||||
self._standalone_artist.set_text(", ".join(album.get_artists()))
|
||||
self._standalone_artist.set_text(", ".join(album.get_albumartists()))
|
||||
|
||||
# Show panel
|
||||
self._open_standalone()
|
||||
|
@ -1581,7 +1581,7 @@ class LibraryPanel(GObject.GObject):
|
|||
GObject.markup_escape_text("\n".join([
|
||||
album.get_title(),
|
||||
', '.join(album.get_dates()),
|
||||
', '.join(album.get_artists())
|
||||
Utils.create_artists_label(album)
|
||||
])),
|
||||
hash
|
||||
])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue