From ef57d3015336278037c1261d7b8baea346a21e8a Mon Sep 17 00:00:00 2001 From: Martin Wagner Date: Thu, 24 Sep 2020 16:50:19 +0200 Subject: [PATCH] simplified lyrics fetching --- bin/mpdevil | 37 +++++-- mpdevil/__init__.py | 20 ---- mpdevil/lyrics.py | 109 --------------------- po/de.po | 232 ++++++++++++++++++++++---------------------- po/mpdevil.pot | 224 +++++++++++++++++++++--------------------- 5 files changed, 258 insertions(+), 364 deletions(-) delete mode 100644 mpdevil/__init__.py delete mode 100644 mpdevil/lyrics.py diff --git a/bin/mpdevil b/bin/mpdevil index 3440942..e7bfcac 100755 --- a/bin/mpdevil +++ b/bin/mpdevil @@ -23,6 +23,8 @@ gi.require_version('Gtk', '3.0') gi.require_version('Notify', '0.7') from gi.repository import Gtk, Gio, Gdk, GdkPixbuf, Pango, GObject, GLib, Notify from mpd import MPDClient, base as MPDBase +import requests +from bs4 import BeautifulSoup import threading import locale import gettext @@ -32,7 +34,6 @@ import datetime import os import sys import re -from mpdevil.lyrics import LyricsHelper # MPRIS modules import dbus @@ -2394,7 +2395,6 @@ class LyricsWindow(FocusFrame): self._settings=settings self._client=client self._displayed_song_file=None - self._lyrics_helper=LyricsHelper(debug=False) # text view self._text_view=Gtk.TextView( @@ -2405,6 +2405,7 @@ class LyricsWindow(FocusFrame): opacity=0.9 ) self._text_view.set_left_margin(5) + self._text_view.set_right_margin(5) self._text_view.set_bottom_margin(5) self._text_view.set_top_margin(3) self.set_widget(self._text_view) @@ -2439,12 +2440,36 @@ class LyricsWindow(FocusFrame): def disable(self, *args): self._client.emitter.handler_block(self._song_changed) + def _get_lyrics(self, title, artist): + replaces=((' ', '+'),('.', '_'),('@', '_'),(',', '_'),(';', '_'),('&', '_'),('\\', '_'),('/', '_'),('"', '_'),('(', '_'),(')', '_')) + for char1, char2 in replaces: + title=title.replace(char1, char2) + artist=artist.replace(char1, char2) + req=requests.get('https://www.letras.mus.br/winamp.php?musica={0}&artista={1}'.format(title,artist)) + soup=BeautifulSoup(req.text, 'html.parser') + soup=soup.find(id="letra-cnt") + if soup is None: + raise ValueError("Not found") + paragraphs=[i for i in soup.children][1] # remove unneded paragraphs (NavigableString) + lyrics="" + for paragraph in paragraphs: + for line in paragraph.stripped_strings: + lyrics+=line+'\n' + lyrics+='\n' + output=lyrics[:-2] # omit last two newlines + if output == "": # assume song is instrumental when lyrics are empty + return "Instrumental" + else: + return output + def _display_lyrics(self, current_song): GLib.idle_add(self._text_buffer.set_text, _("searching..."), -1) - text=None - if current_song.get("artist", "") != "" and current_song.get("title", "") != "": - text=self._lyrics_helper.get_lyrics(current_song["artist"], current_song["title"]) - if text is None: + try: + text=self._get_lyrics(current_song.get("title", ""), current_song.get("artist", "")) + except requests.exceptions.ConnectionError: + self._displayed_song_file=None + text=_("connection error") + except ValueError: text=_("lyrics not found") GLib.idle_add(self._text_buffer.set_text, text, -1) diff --git a/mpdevil/__init__.py b/mpdevil/__init__.py deleted file mode 100644 index 3d8fbf6..0000000 --- a/mpdevil/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -# mpdevil - MPD Client. -# Copyright 2020 Martin Wagner -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 3 of the License. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA - diff --git a/mpdevil/lyrics.py b/mpdevil/lyrics.py deleted file mode 100644 index 36949c4..0000000 --- a/mpdevil/lyrics.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -# mpdevil - MPD Client. -# Copyright 2020 Martin Wagner -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 3 of the License. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA - -import requests -from bs4 import BeautifulSoup - -class LyricsHelper(object): - def __init__(self, debug=False): - self._debug=debug - - def _debug_print(self, text): - if self._debug: - print(text) - - def _get_lyrics_lyriki(self, singer, song): - self._debug_print("lyriki") - replaces=((' ', '_'),('.', '_'),('@', '_'),(',', '_'),(';', '_'),('&', '_'),('\\', '_'),('/', '_'),('"', '_')) - for char1, char2 in replaces: - singer=singer.replace(char1, char2) - song=song.replace(char1, char2) - self._debug_print('http://www.lyriki.com/{0}:{1}'.format(singer,song)) - r=requests.get('http://www.lyriki.com/{0}:{1}'.format(singer,song)) - s=BeautifulSoup(r.text, 'html.parser') - lyrics=s.p - if lyrics is None: - raise ValueError("Not found") - elif str(lyrics).startswith("

There is currently no text in this page."): - raise ValueError("Not found") - try: - lyrics.tt.unwrap() - except: - pass - output=str(lyrics)[3:-4].replace('\n','').replace('
','\n') - return output - - def _get_lyrics_songlyrics(self, singer, song): - self._debug_print("songlyrics") - replaces=((' ', '-'),('.', '-'),('_', '-'),('@', '-'),(',', '-'),(';', '-'),('&', '-'),('\\', '-'),('/', '-'),('"', '-')) - for char1, char2 in replaces: - singer=singer.replace(char1, char2) - song=song.replace(char1, char2) - self._debug_print('https://www.songlyrics.com/{0}/{1}-lyrics/'.format(singer,song)) - r=requests.get('https://www.songlyrics.com/{0}/{1}-lyrics/'.format(singer,song)) - s=BeautifulSoup(r.text, 'html.parser') - lyrics=s.find(id="songLyricsDiv") - if lyrics is None: - raise ValueError("Not found") - elif str(lyrics)[58:-4].startswith("Sorry, we have no"): - raise ValueError("Not found") - try: - lyrics.i.unwrap() - except: - pass - output=str(lyrics)[58:-4].replace('\n','').replace('\r','').replace(' /', '').replace('
','\n') - return output - - def _get_lyrics_letras(self, singer, song): - self._debug_print("letras") - replaces=((' ', '+'),('.', '_'),('@', '_'),(',', '_'),(';', '_'),('&', '_'),('\\', '_'),('/', '_'),('"', '_'),('(', '_'),(')', '_')) - for char1, char2 in replaces: - singer=singer.replace(char1, char2) - song=song.replace(char1, char2) - self._debug_print('https://www.letras.mus.br/winamp.php?musica={1}&artista={0}'.format(singer,song)) - r=requests.get('https://www.letras.mus.br/winamp.php?musica={1}&artista={0}'.format(singer,song)) - s=BeautifulSoup(r.text, 'html.parser') - s=s.find(id="letra-cnt") - if s is None: - raise ValueError("Not found") - paragraphs=[i for i in s.children][1] # remove unneded paragraphs (NavigableString) - lyrics="" - for p in paragraphs: - for line in p.stripped_strings: - lyrics+=line+'\n' - lyrics+='\n' - output=lyrics[:-2] # omit last two newlines - if output != "": # assume song is instrumental when lyrics are empty - return output - else: - return "Instrumental" - - def get_lyrics(self, singer, song): - self._debug_print("fetching lyrics for '"+singer+"' - '"+song+"'") - providers=[self._get_lyrics_letras, self._get_lyrics_lyriki, self._get_lyrics_songlyrics] - text=None - for provider in providers: - try: - text=provider(singer, song) - break - except ValueError: - pass - return text - diff --git a/po/de.po b/po/de.po index 72e9841..b3eb569 100644 --- a/po/de.po +++ b/po/de.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-17 12:53+0200\n" -"PO-Revision-Date: 2020-09-17 16:28+0200\n" +"POT-Creation-Date: 2020-09-24 16:49+0200\n" +"PO-Revision-Date: 2020-09-24 16:50+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: de\n" @@ -22,107 +22,99 @@ msgstr "" msgid "Unknown Title" msgstr "Unbekannter Titel" -#: mpdevil:476 -msgid "Unknown Artist" -msgstr "Unbekannter Interpret" - -#: mpdevil:477 -msgid "Unknown Album" -msgstr "Unbekanntes Album" - -#: mpdevil:753 +#: mpdevil:749 msgid "Main cover size:" msgstr "Größe des Haupt-Covers:" -#: mpdevil:754 +#: mpdevil:750 msgid "Album view cover size:" msgstr "Covergröße in Albumliste:" -#: mpdevil:755 +#: mpdevil:751 msgid "Action bar icon size:" msgstr "Symbolgröße Aktionsleiste:" -#: mpdevil:756 +#: mpdevil:752 msgid "Secondary icon size:" msgstr "Sekundäre Symbolgröße:" -#: mpdevil:769 +#: mpdevil:765 msgid "Sort albums by:" msgstr "Sortiere Alben nach:" -#: mpdevil:769 +#: mpdevil:765 msgid "name" msgstr "Name" -#: mpdevil:769 +#: mpdevil:765 msgid "year" msgstr "Jahr" -#: mpdevil:770 +#: mpdevil:766 msgid "Position of playlist:" msgstr "Wiedergabelistenposition:" -#: mpdevil:770 +#: mpdevil:766 msgid "bottom" msgstr "unten" -#: mpdevil:770 +#: mpdevil:766 msgid "right" msgstr "rechts" -#: mpdevil:788 +#: mpdevil:784 msgid "Use Client-side decoration" msgstr "Benutze \"Client-side decoration\"" -#: mpdevil:789 +#: mpdevil:785 msgid "Show stop button" msgstr "Zeige Stopp-Knopf" -#: mpdevil:790 +#: mpdevil:786 msgid "Show lyrics button" msgstr "Zeige Liedtext-Knopf" -#: mpdevil:791 +#: mpdevil:787 msgid "Show initials in artist view" msgstr "Zeige Anfangsbuchstaben in Interpretenliste" -#: mpdevil:792 +#: mpdevil:788 msgid "Show tooltips in album view" msgstr "Zeige Tooltips in Albumliste" -#: mpdevil:793 +#: mpdevil:789 msgid "Use 'Album Artist' tag" msgstr "Benutze \"Album Artist\" Tag" -#: mpdevil:794 +#: mpdevil:790 msgid "Send notification on title change" msgstr "Sende Benachrichtigung bei Titelwechsel" -#: mpdevil:795 +#: mpdevil:791 msgid "Stop playback on quit" msgstr "Wiedergabe beim Beenden stoppen" -#: mpdevil:796 +#: mpdevil:792 msgid "Play selected albums and titles immediately" msgstr "Ausgewählte Alben und Titel sofort abspielen" -#: mpdevil:809 +#: mpdevil:805 msgid "View" msgstr "Ansicht" -#: mpdevil:810 +#: mpdevil:806 msgid "Behavior" msgstr "Verhalten" -#: mpdevil:842 +#: mpdevil:838 msgid "(restart required)" msgstr "(Neustart erforderlich)" -#: mpdevil:904 mpdevil:3514 +#: mpdevil:900 mpdevil:3460 msgid "Connect" msgstr "Verbinden" -#: mpdevil:920 +#: mpdevil:916 msgid "" "The first image in the same directory as the song file matching this regex " "will be displayed. %AlbumArtist% and %Album% will be replaced by the " @@ -132,125 +124,125 @@ msgstr "" "regulären Ausdruck entspricht, wird angezeigt. %AlbumArtist% und %Album% " "werden durch die entsprechenden Tags des Liedes ersetzt." -#: mpdevil:925 +#: mpdevil:921 msgid "Profile:" msgstr "Profil:" -#: mpdevil:926 +#: mpdevil:922 msgid "Name:" msgstr "Name:" -#: mpdevil:927 +#: mpdevil:923 msgid "Host:" msgstr "Host:" -#: mpdevil:928 +#: mpdevil:924 msgid "Password:" msgstr "Passwort:" -#: mpdevil:929 +#: mpdevil:925 msgid "Music lib:" msgstr "Musikverzeichnis:" -#: mpdevil:930 +#: mpdevil:926 msgid "Cover regex:" msgstr "Cover-Regex:" -#: mpdevil:1061 +#: mpdevil:1057 msgid "Choose directory" msgstr "Verzeichnis Wählen" -#: mpdevil:1094 +#: mpdevil:1090 msgid "Choose the order of information to appear in the playlist:" msgstr "" "Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste " "angezeigt werden sollen:" -#: mpdevil:1118 mpdevil:1642 mpdevil:1980 mpdevil:2718 +#: mpdevil:1114 mpdevil:1631 mpdevil:1970 mpdevil:2687 msgid "No" msgstr "Nr." -#: mpdevil:1118 mpdevil:2719 +#: mpdevil:1114 mpdevil:2688 msgid "Disc" msgstr "CD" -#: mpdevil:1118 mpdevil:1647 mpdevil:1985 mpdevil:2720 +#: mpdevil:1114 mpdevil:1636 mpdevil:1975 mpdevil:2689 msgid "Title" msgstr "Titel" -#: mpdevil:1118 mpdevil:1653 mpdevil:1871 mpdevil:2721 +#: mpdevil:1114 mpdevil:1642 mpdevil:1861 mpdevil:2690 msgid "Artist" msgstr "Interpret" -#: mpdevil:1118 mpdevil:1659 mpdevil:2722 +#: mpdevil:1114 mpdevil:1648 mpdevil:2691 msgid "Album" msgstr "Album" -#: mpdevil:1118 mpdevil:1665 mpdevil:1991 mpdevil:2723 +#: mpdevil:1114 mpdevil:1654 mpdevil:1981 mpdevil:2692 msgid "Length" msgstr "Länge" -#: mpdevil:1118 mpdevil:2724 +#: mpdevil:1114 mpdevil:2693 msgid "Year" msgstr "Jahr" -#: mpdevil:1118 mpdevil:2725 +#: mpdevil:1114 mpdevil:2694 msgid "Genre" msgstr "Genre" -#: mpdevil:1234 mpdevil:1242 mpdevil:3597 +#: mpdevil:1230 mpdevil:1238 mpdevil:3543 msgid "Settings" msgstr "Einstellungen" -#: mpdevil:1253 mpdevil:3415 +#: mpdevil:1249 mpdevil:3361 msgid "General" msgstr "Allgemein" -#: mpdevil:1254 +#: mpdevil:1250 msgid "Profiles" msgstr "Profile" -#: mpdevil:1255 mpdevil:3419 +#: mpdevil:1251 mpdevil:3365 msgid "Playlist" msgstr "Wiedergabeliste" -#: mpdevil:1270 mpdevil:1278 +#: mpdevil:1266 mpdevil:1274 msgid "Stats" msgstr "Statistik" -#: mpdevil:1327 +#: mpdevil:1323 msgid "A simple music browser for MPD" msgstr "Ein einfacher Musikbrowser für MPD" -#: mpdevil:1399 +#: mpdevil:1395 msgid "MPD-Tag" msgstr "MPD-Tag" -#: mpdevil:1403 +#: mpdevil:1399 msgid "Value" msgstr "Wert" -#: mpdevil:1564 +#: mpdevil:1552 msgid "Append" msgstr "Anhängen" -#: mpdevil:1565 +#: mpdevil:1553 msgid "Add all titles to playlist" msgstr "Alle Titel der Wiedergabeliste anhängen" -#: mpdevil:1566 +#: mpdevil:1554 msgid "Play" msgstr "Abspielen" -#: mpdevil:1567 +#: mpdevil:1555 msgid "Directly play all titles" msgstr "Alle Titel sofort abspielen" -#: mpdevil:1568 +#: mpdevil:1556 msgid "Enqueue" msgstr "Einreihen" -#: mpdevil:1569 +#: mpdevil:1557 msgid "" "Append all titles after the currently playing track and clear the playlist " "from all other songs" @@ -258,54 +250,58 @@ msgstr "" "Alle Titel hinter dem aktuellen Stück einreihen und die weitere " "Wiedergabeliste leeren" -#: mpdevil:1723 +#: mpdevil:1713 #, python-format msgid "%i hits" msgstr "%i Treffer" -#: mpdevil:1761 +#: mpdevil:1751 msgid "all genres" msgstr "Alle Genres" -#: mpdevil:1869 +#: mpdevil:1859 msgid "Album Artist" msgstr "Albuminterpret" -#: mpdevil:1872 +#: mpdevil:1862 msgid "all artists" msgstr "Alle Interpreten" -#: mpdevil:1997 +#: mpdevil:1987 msgid "Close" msgstr "Schließen" -#: mpdevil:2168 +#: mpdevil:2152 #, python-format msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)" msgstr "%(total_tracks)i Titel auf %(discs)i CDs (%(total_length)s)" -#: mpdevil:2171 mpdevil:2813 +#: mpdevil:2155 mpdevil:2782 #, python-format msgid "%(total_tracks)i titles (%(total_length)s)" msgstr "%(total_tracks)i Titel (%(total_length)s)" -#: mpdevil:2297 mpdevil:3431 +#: mpdevil:2281 mpdevil:3377 msgid "Back to current album" msgstr "Zurück zu aktuellem Album" -#: mpdevil:2298 +#: mpdevil:2282 msgid "Search" msgstr "Suche" -#: mpdevil:2462 +#: mpdevil:2466 msgid "searching..." msgstr "suche..." -#: mpdevil:2466 +#: mpdevil:2471 +msgid "connection error" +msgstr "Verbindungsfehler" + +#: mpdevil:2473 msgid "lyrics not found" msgstr "Liedtext nicht gefunden" -#: mpdevil:2543 +#: mpdevil:2521 #, python-format msgid "" "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " @@ -314,163 +310,169 @@ msgstr "" "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " "Kanäle, %(file_type)s" -#: mpdevil:2687 +#: mpdevil:2656 msgid "Scroll to current song" msgstr "Gehe zu aktuellem Lied" -#: mpdevil:2694 +#: mpdevil:2663 msgid "Clear playlist" msgstr "Wiedergabeliste leeren" -#: mpdevil:2970 +#: mpdevil:2939 msgid "Show lyrics" msgstr "Zeige Liedtext" -#: mpdevil:3307 +#: mpdevil:3253 msgid "Random mode" msgstr "Zufallsmodus" -#: mpdevil:3308 +#: mpdevil:3254 msgid "Repeat mode" msgstr "Dauerschleife" -#: mpdevil:3309 +#: mpdevil:3255 msgid "Single mode" msgstr "Einzelstückmodus" -#: mpdevil:3310 +#: mpdevil:3256 msgid "Consume mode" msgstr "Wiedergabeliste verbrauchen" -#: mpdevil:3416 +#: mpdevil:3362 msgid "Window" msgstr "Fenster" -#: mpdevil:3417 +#: mpdevil:3363 msgid "Playback" msgstr "Wiedergabe" -#: mpdevil:3418 +#: mpdevil:3364 msgid "Search, Album Dialog and Album List" msgstr "Suche, Albumdialog und Albumliste" -#: mpdevil:3428 +#: mpdevil:3374 msgid "Toggle mini player" msgstr "Miniplayer ein-/ausschalten" -#: mpdevil:3429 +#: mpdevil:3375 msgid "Toggle lyrics" msgstr "Liedtext ein-/ausblenden" -#: mpdevil:3430 +#: mpdevil:3376 msgid "Toggle search" msgstr "Suche ein-/ausblenden" -#: mpdevil:3432 +#: mpdevil:3378 msgid "Open online help" msgstr "Onlinehilfe öffnen" -#: mpdevil:3433 mpdevil:3601 +#: mpdevil:3379 mpdevil:3547 msgid "Quit" msgstr "Beenden" -#: mpdevil:3434 +#: mpdevil:3380 msgid "Play/Pause" msgstr "Wiedergabe/Pause" -#: mpdevil:3435 +#: mpdevil:3381 msgid "Next title" msgstr "Nächster Titel" -#: mpdevil:3436 +#: mpdevil:3382 msgid "Previous title" msgstr "Vorheriger Titel" -#: mpdevil:3437 +#: mpdevil:3383 msgid "Seek forward" msgstr "Vorspulen" -#: mpdevil:3438 +#: mpdevil:3384 msgid "Seek backward" msgstr "Zurückspulen" -#: mpdevil:3439 mpdevil:3604 +#: mpdevil:3385 mpdevil:3550 msgid "Update database" msgstr "Datenbank aktualisieren" -#: mpdevil:3440 +#: mpdevil:3386 msgid "Play selected item (next)" msgstr "Ausgewähltes Element (als Nächstes) abspielen" -#: mpdevil:3440 +#: mpdevil:3386 msgid "Left-click" msgstr "Linksklick" -#: mpdevil:3441 +#: mpdevil:3387 msgid "Append selected item" msgstr "Ausgewähltes Element anhängen" -#: mpdevil:3441 mpdevil:3444 +#: mpdevil:3387 mpdevil:3390 msgid "Middle-click" msgstr "Mittelklick" -#: mpdevil:3442 +#: mpdevil:3388 msgid "Play selected item immediately" msgstr "Ausgewähltes Element sofort abspielen" -#: mpdevil:3442 +#: mpdevil:3388 msgid "Double-click" msgstr "Doppelklick" -#: mpdevil:3443 mpdevil:3445 +#: mpdevil:3389 mpdevil:3391 msgid "Show additional information" msgstr "Zeige weitere Informationen" -#: mpdevil:3443 mpdevil:3445 +#: mpdevil:3389 mpdevil:3391 msgid "Right-click" msgstr "Rechtsklick" -#: mpdevil:3444 +#: mpdevil:3390 msgid "Remove selected song" msgstr "Ausgewählten Titel entfernen" -#: mpdevil:3459 +#: mpdevil:3405 msgid "Select profile" msgstr "Profil auswählen" -#: mpdevil:3535 +#: mpdevil:3481 #, python-format msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed" msgstr "Verbindung zu \"%(profile)s\" (%(host)s:%(port)s) fehlgeschlagen" -#: mpdevil:3598 +#: mpdevil:3544 msgid "Keyboard shortcuts" msgstr "Tastenkürzel" -#: mpdevil:3599 +#: mpdevil:3545 msgid "Help" msgstr "Hilfe" -#: mpdevil:3600 +#: mpdevil:3546 msgid "About" msgstr "Über" -#: mpdevil:3605 +#: mpdevil:3551 msgid "Server stats" msgstr "Serverstatistik" -#: mpdevil:3608 +#: mpdevil:3554 msgid "Save window layout" msgstr "Fensterlayout speichern" -#: mpdevil:3609 +#: mpdevil:3555 msgid "Mini player" msgstr "Miniplayer" -#: mpdevil:3613 +#: mpdevil:3559 msgid "Menu" msgstr "Menü" +#~ msgid "Unknown Artist" +#~ msgstr "Unbekannter Interpret" + +#~ msgid "Unknown Album" +#~ msgstr "Unbekanntes Album" + #~ msgid "not connected" #~ msgstr "nicht verbunden" diff --git a/po/mpdevil.pot b/po/mpdevil.pot index 745231a..e3c57fc 100644 --- a/po/mpdevil.pot +++ b/po/mpdevil.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-17 12:53+0200\n" +"POT-Creation-Date: 2020-09-24 16:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,442 +21,438 @@ msgstr "" msgid "Unknown Title" msgstr "" -#: mpdevil:476 -msgid "Unknown Artist" -msgstr "" - -#: mpdevil:477 -msgid "Unknown Album" -msgstr "" - -#: mpdevil:753 +#: mpdevil:749 msgid "Main cover size:" msgstr "" -#: mpdevil:754 +#: mpdevil:750 msgid "Album view cover size:" msgstr "" -#: mpdevil:755 +#: mpdevil:751 msgid "Action bar icon size:" msgstr "" -#: mpdevil:756 +#: mpdevil:752 msgid "Secondary icon size:" msgstr "" -#: mpdevil:769 +#: mpdevil:765 msgid "Sort albums by:" msgstr "" -#: mpdevil:769 +#: mpdevil:765 msgid "name" msgstr "" -#: mpdevil:769 +#: mpdevil:765 msgid "year" msgstr "" -#: mpdevil:770 +#: mpdevil:766 msgid "Position of playlist:" msgstr "" -#: mpdevil:770 +#: mpdevil:766 msgid "bottom" msgstr "" -#: mpdevil:770 +#: mpdevil:766 msgid "right" msgstr "" -#: mpdevil:788 +#: mpdevil:784 msgid "Use Client-side decoration" msgstr "" -#: mpdevil:789 +#: mpdevil:785 msgid "Show stop button" msgstr "" -#: mpdevil:790 +#: mpdevil:786 msgid "Show lyrics button" msgstr "" -#: mpdevil:791 +#: mpdevil:787 msgid "Show initials in artist view" msgstr "" -#: mpdevil:792 +#: mpdevil:788 msgid "Show tooltips in album view" msgstr "" -#: mpdevil:793 +#: mpdevil:789 msgid "Use 'Album Artist' tag" msgstr "" -#: mpdevil:794 +#: mpdevil:790 msgid "Send notification on title change" msgstr "" -#: mpdevil:795 +#: mpdevil:791 msgid "Stop playback on quit" msgstr "" -#: mpdevil:796 +#: mpdevil:792 msgid "Play selected albums and titles immediately" msgstr "" -#: mpdevil:809 +#: mpdevil:805 msgid "View" msgstr "" -#: mpdevil:810 +#: mpdevil:806 msgid "Behavior" msgstr "" -#: mpdevil:842 +#: mpdevil:838 msgid "(restart required)" msgstr "" -#: mpdevil:904 mpdevil:3514 +#: mpdevil:900 mpdevil:3460 msgid "Connect" msgstr "" -#: mpdevil:920 +#: mpdevil:916 msgid "" "The first image in the same directory as the song file matching this regex " "will be displayed. %AlbumArtist% and %Album% will be replaced by the " "corresponding tags of the song." msgstr "" -#: mpdevil:925 +#: mpdevil:921 msgid "Profile:" msgstr "" -#: mpdevil:926 +#: mpdevil:922 msgid "Name:" msgstr "" -#: mpdevil:927 +#: mpdevil:923 msgid "Host:" msgstr "" -#: mpdevil:928 +#: mpdevil:924 msgid "Password:" msgstr "" -#: mpdevil:929 +#: mpdevil:925 msgid "Music lib:" msgstr "" -#: mpdevil:930 +#: mpdevil:926 msgid "Cover regex:" msgstr "" -#: mpdevil:1061 +#: mpdevil:1057 msgid "Choose directory" msgstr "" -#: mpdevil:1094 +#: mpdevil:1090 msgid "Choose the order of information to appear in the playlist:" msgstr "" -#: mpdevil:1118 mpdevil:1642 mpdevil:1980 mpdevil:2718 +#: mpdevil:1114 mpdevil:1631 mpdevil:1970 mpdevil:2687 msgid "No" msgstr "" -#: mpdevil:1118 mpdevil:2719 +#: mpdevil:1114 mpdevil:2688 msgid "Disc" msgstr "" -#: mpdevil:1118 mpdevil:1647 mpdevil:1985 mpdevil:2720 +#: mpdevil:1114 mpdevil:1636 mpdevil:1975 mpdevil:2689 msgid "Title" msgstr "" -#: mpdevil:1118 mpdevil:1653 mpdevil:1871 mpdevil:2721 +#: mpdevil:1114 mpdevil:1642 mpdevil:1861 mpdevil:2690 msgid "Artist" msgstr "" -#: mpdevil:1118 mpdevil:1659 mpdevil:2722 +#: mpdevil:1114 mpdevil:1648 mpdevil:2691 msgid "Album" msgstr "" -#: mpdevil:1118 mpdevil:1665 mpdevil:1991 mpdevil:2723 +#: mpdevil:1114 mpdevil:1654 mpdevil:1981 mpdevil:2692 msgid "Length" msgstr "" -#: mpdevil:1118 mpdevil:2724 +#: mpdevil:1114 mpdevil:2693 msgid "Year" msgstr "" -#: mpdevil:1118 mpdevil:2725 +#: mpdevil:1114 mpdevil:2694 msgid "Genre" msgstr "" -#: mpdevil:1234 mpdevil:1242 mpdevil:3597 +#: mpdevil:1230 mpdevil:1238 mpdevil:3543 msgid "Settings" msgstr "" -#: mpdevil:1253 mpdevil:3415 +#: mpdevil:1249 mpdevil:3361 msgid "General" msgstr "" -#: mpdevil:1254 +#: mpdevil:1250 msgid "Profiles" msgstr "" -#: mpdevil:1255 mpdevil:3419 +#: mpdevil:1251 mpdevil:3365 msgid "Playlist" msgstr "" -#: mpdevil:1270 mpdevil:1278 +#: mpdevil:1266 mpdevil:1274 msgid "Stats" msgstr "" -#: mpdevil:1327 +#: mpdevil:1323 msgid "A simple music browser for MPD" msgstr "" -#: mpdevil:1399 +#: mpdevil:1395 msgid "MPD-Tag" msgstr "" -#: mpdevil:1403 +#: mpdevil:1399 msgid "Value" msgstr "" -#: mpdevil:1564 +#: mpdevil:1552 msgid "Append" msgstr "" -#: mpdevil:1565 +#: mpdevil:1553 msgid "Add all titles to playlist" msgstr "" -#: mpdevil:1566 +#: mpdevil:1554 msgid "Play" msgstr "" -#: mpdevil:1567 +#: mpdevil:1555 msgid "Directly play all titles" msgstr "" -#: mpdevil:1568 +#: mpdevil:1556 msgid "Enqueue" msgstr "" -#: mpdevil:1569 +#: mpdevil:1557 msgid "" "Append all titles after the currently playing track and clear the playlist " "from all other songs" msgstr "" -#: mpdevil:1723 +#: mpdevil:1713 #, python-format msgid "%i hits" msgstr "" -#: mpdevil:1761 +#: mpdevil:1751 msgid "all genres" msgstr "" -#: mpdevil:1869 +#: mpdevil:1859 msgid "Album Artist" msgstr "" -#: mpdevil:1872 +#: mpdevil:1862 msgid "all artists" msgstr "" -#: mpdevil:1997 +#: mpdevil:1987 msgid "Close" msgstr "" -#: mpdevil:2168 +#: mpdevil:2152 #, python-format msgid "%(total_tracks)i titles on %(discs)i discs (%(total_length)s)" msgstr "" -#: mpdevil:2171 mpdevil:2813 +#: mpdevil:2155 mpdevil:2782 #, python-format msgid "%(total_tracks)i titles (%(total_length)s)" msgstr "" -#: mpdevil:2297 mpdevil:3431 +#: mpdevil:2281 mpdevil:3377 msgid "Back to current album" msgstr "" -#: mpdevil:2298 +#: mpdevil:2282 msgid "Search" msgstr "" -#: mpdevil:2462 +#: mpdevil:2466 msgid "searching..." msgstr "" -#: mpdevil:2466 +#: mpdevil:2471 +msgid "connection error" +msgstr "" + +#: mpdevil:2473 msgid "lyrics not found" msgstr "" -#: mpdevil:2543 +#: mpdevil:2521 #, python-format msgid "" "%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s " "channels, %(file_type)s" msgstr "" -#: mpdevil:2687 +#: mpdevil:2656 msgid "Scroll to current song" msgstr "" -#: mpdevil:2694 +#: mpdevil:2663 msgid "Clear playlist" msgstr "" -#: mpdevil:2970 +#: mpdevil:2939 msgid "Show lyrics" msgstr "" -#: mpdevil:3307 +#: mpdevil:3253 msgid "Random mode" msgstr "" -#: mpdevil:3308 +#: mpdevil:3254 msgid "Repeat mode" msgstr "" -#: mpdevil:3309 +#: mpdevil:3255 msgid "Single mode" msgstr "" -#: mpdevil:3310 +#: mpdevil:3256 msgid "Consume mode" msgstr "" -#: mpdevil:3416 +#: mpdevil:3362 msgid "Window" msgstr "" -#: mpdevil:3417 +#: mpdevil:3363 msgid "Playback" msgstr "" -#: mpdevil:3418 +#: mpdevil:3364 msgid "Search, Album Dialog and Album List" msgstr "" -#: mpdevil:3428 +#: mpdevil:3374 msgid "Toggle mini player" msgstr "" -#: mpdevil:3429 +#: mpdevil:3375 msgid "Toggle lyrics" msgstr "" -#: mpdevil:3430 +#: mpdevil:3376 msgid "Toggle search" msgstr "" -#: mpdevil:3432 +#: mpdevil:3378 msgid "Open online help" msgstr "" -#: mpdevil:3433 mpdevil:3601 +#: mpdevil:3379 mpdevil:3547 msgid "Quit" msgstr "" -#: mpdevil:3434 +#: mpdevil:3380 msgid "Play/Pause" msgstr "" -#: mpdevil:3435 +#: mpdevil:3381 msgid "Next title" msgstr "" -#: mpdevil:3436 +#: mpdevil:3382 msgid "Previous title" msgstr "" -#: mpdevil:3437 +#: mpdevil:3383 msgid "Seek forward" msgstr "" -#: mpdevil:3438 +#: mpdevil:3384 msgid "Seek backward" msgstr "" -#: mpdevil:3439 mpdevil:3604 +#: mpdevil:3385 mpdevil:3550 msgid "Update database" msgstr "" -#: mpdevil:3440 +#: mpdevil:3386 msgid "Play selected item (next)" msgstr "" -#: mpdevil:3440 +#: mpdevil:3386 msgid "Left-click" msgstr "" -#: mpdevil:3441 +#: mpdevil:3387 msgid "Append selected item" msgstr "" -#: mpdevil:3441 mpdevil:3444 +#: mpdevil:3387 mpdevil:3390 msgid "Middle-click" msgstr "" -#: mpdevil:3442 +#: mpdevil:3388 msgid "Play selected item immediately" msgstr "" -#: mpdevil:3442 +#: mpdevil:3388 msgid "Double-click" msgstr "" -#: mpdevil:3443 mpdevil:3445 +#: mpdevil:3389 mpdevil:3391 msgid "Show additional information" msgstr "" -#: mpdevil:3443 mpdevil:3445 +#: mpdevil:3389 mpdevil:3391 msgid "Right-click" msgstr "" -#: mpdevil:3444 +#: mpdevil:3390 msgid "Remove selected song" msgstr "" -#: mpdevil:3459 +#: mpdevil:3405 msgid "Select profile" msgstr "" -#: mpdevil:3535 +#: mpdevil:3481 #, python-format msgid "Connection to \"%(profile)s\" (%(host)s:%(port)s) failed" msgstr "" -#: mpdevil:3598 +#: mpdevil:3544 msgid "Keyboard shortcuts" msgstr "" -#: mpdevil:3599 +#: mpdevil:3545 msgid "Help" msgstr "" -#: mpdevil:3600 +#: mpdevil:3546 msgid "About" msgstr "" -#: mpdevil:3605 +#: mpdevil:3551 msgid "Server stats" msgstr "" -#: mpdevil:3608 +#: mpdevil:3554 msgid "Save window layout" msgstr "" -#: mpdevil:3609 +#: mpdevil:3555 msgid "Mini player" msgstr "" -#: mpdevil:3613 +#: mpdevil:3559 msgid "Menu" msgstr ""