YouPlay 0.40 erschienen

  Ralf Hersel   Lesezeit: 4 Minuten  🗪 8 Kommentare

Der Player und Downloader von Youtube-Musikstücken basiert jetzt auf Gtk4 und libadwaita.

youplay 0.40 erschienen

Ein wenig Werbung in eigener Sache gefällig? YouPlay ist eine Gtk-Anwendung, mit der man Musiktitel bei YouTube suchen und diese herunterladen und abspielen kann. Die heruntergeladenen Stücke werden in einem Unterordner des Musik-Verzeichnisses abgelegt und können mit YouPlay eingelesen und wiedergegeben werden. Die Anwendung unterstützt einen GUI- und CLI-Modus.

Bei der neuen Version 0.40, habe ich die Anwendung von Gtk3 auf Gtk4 und LibAdwaita portiert. Aufgrund der ungenügenden Gtk4-Dokumentation für Python war diese Aufgabe von vielen Suchen im Internet und einigen Programmzeilen geprägt, die mehr auf Versuchen als auf Wissen beruhten. Trotzdem ist es mir gelungen, YouPlay auf den aktuellen Stand der Technik umzustellen.

Falls euch die Anwendung gefällt, oder ihr bereits eine frühere Version installiert habt, würde ich mich über Rückmeldungen freuen. Funktional gibt es keine Unterschiede zur letzten Version 0.38. Mein Aufwand steckt bei 0.40 nur in der Portierung auf Gtk4 und LibAdwaita.

Leider gibt es immer noch kein Flatpak oder ein anderes Paketformat für YouPlay. Die Installation des 600-Zeilen Programms ist jedoch sehr einfach, wenn man der Anleitung folgt. Alle, die YouPlay bereits installiert haben, müssen nur die Datei youplay.py austauschen. Die übrigen Dateien wurden zwar teilweise aktualisiert, haben aber keinen Einfluss auf die Funktionalität.

YouPlay verwendet yt-dlp, um die Musikinformation von YouTube zu beziehen und für das Herunterladen der Stücke. Für die Ermittlung der Dauer kommt ffmpeg zum Einsatz und die Wiedergabe erledigt mpv. Die Bedienung der Anwendung ist intuitiv: Gebt in das Suchfeld einen Titel ein; dann werden euch 10 Treffer angezeigt. Ein Doppelklick auf einen Eintrag in der Liste startet das Herunterladen des Stücks in den Ordner ~/Musik/youplay und beginnt mit der Wiedergabe. Die übrigen Schaltflächen sollten selbsterklärend sein. Songs lädt die Liste aller bereits heruntergeladenen Titel.

Den grössten Aufwand bei der Portierung hatte ich mit der Implementierung von Nebenläufigkeiten (threading), den schlecht dokumentierten Eigenschaften und Methoden von Gtk4 in Python und dem generellen App-Handling von Gtk4 und LibAdwaita, welches noch schlechter dokumentiert ist, als Gtk4. Hier ist kleines Beispiel für den About-Dialog.

In der Gtk3-Version habe ich einfach einen Info-Dialog verwendet:

def on_button_about_clicked(self, widget):
    self.show_info_dialog(PROG_NAME, ABOUT)

Bei Gtk4 kommt stattdessen ein About-Dialog zum Einsatz:

def on_button_about_clicked(self, widget):
    about = Adw.AboutWindow()
    about.set_application_name(PROG_NAME)
    # ~ about.set_application_icon("youplay.svg")
    about.set_version(VERSION)
    about.set_license_type(Gtk.License(Gtk.License.GPL_3_0))
    about.set_developer_name(AUTHOR)
    about.set_comments(ABOUT)
    about.set_website("https://codeberg.org/ralfhersel/youplay")
    about.set_issue_url("https://codeberg.org/ralfhersel/youplay/issues")
    about.show()

Wobei ich noch nicht herausgefunden habe, wie man das Application-Icon korrekt verwendet. Es gäbe viele weitere Beispiele, bei denen sich der Code substanziell geändert hat, aber damit möchte ich euch nicht langweilen. Ich hatte erwogen, die Beschriftung der Schaltflächen durch Symbole zu ersetzen. Nach ein paar Diskussionen mit meiner Frau, habe ich mich gegen die Symbole und für die Texte entschieden, weil sie besser verständlich sind, als Symbole. Dieser Drops ist aber noch nicht endgültig gelutscht.

Falls euch YouPlay gefällt, freue ich mich über eure Rückmeldungen und Verbesserungsvorschläge.

Quelle: https://codeberg.org/ralfhersel/youplay

Tags

YouPlay, YouTube, Gtk4, libadwaita, Musik, Download

Mancus Nemo
Geschrieben von Mancus Nemo am 21. Dezember 2022 um 12:01

Linux Mint 20.2

Traceback (most recent call last): File "youplay.py", line 47, in gi.require_version('Gtk', '4.0') File "/usr/lib/python3/dist-packages/gi/init.py", line 132, in require_version raise ValueError('Namespace %s not available for version %s' % ValueError: Namespace Gtk not available for version 4.0

Tja das ist aber schade. Kein Legacy Support eingebaut... Hätte man ja mit einer einfachen Abfrage abfangen können. Dann entweder den oder den Code nutzen können.... egal setze nach Neujahr mein PC mit ner dickeren SSD neu auf und da kommt dann gleich 21.1 drauf.... Ich weiß Legacy Support ist uncool und macht arbeit ...

Ralf Hersel
Geschrieben von Ralf Hersel am 21. Dezember 2022 um 16:35

Du kannst ja die vorherige Version nehmen. Funktional macht die genau das gleiche wie die 0.40.

Huk
Geschrieben von Huk am 21. Dezember 2022 um 13:46

Opus als Downloadformat wäre gut. Wird sogar von Youtube direkt angeboten.

Helmut
Geschrieben von Helmut am 21. Dezember 2022 um 16:16

Im AUR gibts noch 0.38.1 hast du das bereitgestellt? Wann kommt 0.40?

Ralf Hersel
Geschrieben von Ralf Hersel am 22. Dezember 2022 um 00:43

Gar nicht, weil ich nicht weiss, wie man Pakete baut. Hier ist Hilfe sehr willkommen, insbesondere für Flatpak.

Michael
Geschrieben von Michael am 27. Dezember 2022 um 09:19

Danke für das feine Werkzeug, ich installiere es von Anfang an aus dem AUR, Aktualisierungen erfolgten regelmäßig, zuletzt am 23.12.20222.

Ronald
Geschrieben von Ronald am 9. März 2023 um 17:16

Hallo, hab auf meinem Android ein script, dass mir den Interpreten und Titel von dem aktuell im Radio (FM4) laufenden Lied in einem file als neue Zeile in der Form "Interpret - Liedtitel" speichert.

Schön wäre es youplay cli diese Liste zu übergeben und er lädt automatisch den ersten Treffer von jedem Eintrag bzw. Zeile als mp3 herunter.

Hab an ein weiteres script gedacht, dass youplay für jeden Titel der Liste einzeln aufruft, da müsste es dann jedoch einen Aufrufparameter geben, womit youplay per default den ersten Treffer runter lädt und sich dann beendet.

Jedenfalls ein sehr feines Programm, der Einzelaufruf funktioniert sehr gut.

Vielen Dank Ralf für youplay!

Torsten
Geschrieben von Torsten am 11. März 2023 um 17:33

Das Tool ist echt klasse. Dann und wann habe ich den Effekt, dass am Ende ein komplett Stückheruntergeladen wurde, als im Suchfenster angeklickt wurde. Aber das schiebe ich auf YT im Hintergrund.