[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete_installieren:] [:Programme_starten:] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild('./Streamtuner2/streamtuner2 2.2.0-logo.png', 45, left)]] [http://milki.include-once.org/streamtuner2/ Streamtuner2] {en} ist ein von [user:milki:] in [:Python:] verfasstes Programm zur Wiedergabe und Aufzeichnung von Internetradio. Namenspate ist das Programm [:Archiv/Streamtuner:Streamtuner], das nicht mehr weiterentwickelt bzw. gepflegt wird. Mit Streamtuner2 kann auf eine Vielzahl verschiedener Anbieter und Portale zugegriffen werden: * [http://www.shoutcast.com/ SHOUTcast] {en} * [http://dir.xiph.org/ Xiph.org] {en} * [http://www.jamendo.com/ Jamendo] (Browser und Ogg/MP3 Download) {en} * [http://www.myoggradio.org/ MyOggRadio] (Open Source Stream-Verzeichnis-Projekt) {en} * [http://www.internet-radio.com/ InternetRadio.com] {en} * [http://tunein.com/ TuneIn] {en} * [http://surfmusic.de SurfMusic] {de} {en} * [http://radionomy.com/ Radionomy] {en} * [http://modarchive.org/ The MOD Archive] {en} (Tracker/MOD-Audiosammlung) * [http://youtube.com/ Youtube] {en} (primär Musikvideos, aber mit integrierter Suchfunktion) * [http://dirble.com/ Dirble] {en} * [http://radio.net/ Radio.net] {de} {en} * [http://somafm.com SomaFM] {en} (statische Liste) * [http://punkcast.com/ PunkCast] {en} (historisches Plugin) * [http://wiki.ubuntuusers.de/Internetradio/Stationen UbuntuUsers Radio-Liste] {de} (direkt aus dem Wiki) Außerdem gibt es zahlreiche Plugins (listenlive, reddit, magnatune, delicast, etc), mit denen das Programm erweitert werden kann. Zur Audio-Aufnahme greift Streamtuner2 auf [:Streamripper:] zurück. Auch die Wiedergabe von Internet-TV-Programmen ist möglich. Das Programm kann auch ohne grafische Oberfläche auf der Kommandozeile verwendet werden. Alternativen sind Programme wie [:TunaPie:] oder das [:Rhythmbox#rhythmbox-shoutcast:Rhythmbox SHOUTcast Plugin]. Eine kleine Liste ist im Artikel [:Internetradio_aufzeichnen:] zu finden. Zusätzlich gibt es noch eine Liste mit Empfehlungen im projekteigenen [http://fossil.include-once.org/streamtuner2/wiki/alternatives Wiki] {en}. = Installation = Die Anwendung liegt in den offiziellen Paketquellen vor und kann über die folgenden Pakete installiert [1] werden: {{{#!vorlage Paketinstallation streamtuner2, universe streamripper, universe }}} Optional sind verschiedene Abspielprogramme (AudioPlayer, siehe Konfiguration). Es erscheint danach bei Ubuntu-Varianten mit einem Anwendungsmenü unter ''"Multimedia -> streamtuner2"''. Ansonsten kann es mit dem Befehl `streamtuner2` gestartet werden [2]. == Fremdpaket == Die aktuelle Version kann als [sourceforge:streamtuner2/files/:'''.deb'''-Paket] {en} {dl} heruntergeladen und manuell installiert [3] werden, das funktioniert allerdings unter 20.04 nicht, weil als Abhängigkeit u.a. '''python-pyquery''' verlangt wird, in den Quellen allerdings "nur" '''python3-pyquery''' gibt, und die Installation somit scheitert. [[Vorlage(Fremd, Paket)]] == Python-Paket ohne Installation == Seit der Version 2.1.5 ist das Programm auch ganz ohne Installation nutzbar. Python erlaubt sogenannte '''.pyz'''-Pakete. Das sind schlichtweg ZIP-Dateien, die den Quellcode einbetten. Ideal zum Testen oder für parallele Installation. Man kann sie direkt vom Terminal aus starten: {{{#!vorlage Befehl python streamtuner2.pyz }}} Alternativ lässt sich die Datei auch ausführbar machen (`chmod +x`) und in z.B. '''~/bin/''' speichern (dann auch ohne den Dateityp '''.pyz''' anzugeben). [[Vorlage(Fremd, Paket)]] [[Bild('./st2 2.2.0 config.png', 300, right)]] = Konfiguration = Beim ersten Start öffnet sich ein Konfigurationsfenster (ansonsten [[Vorlage(Tasten, F12)]]), in dem Einstellungen angepasst werden können. Auf der Registerkarte ''"Player"'' lassen sich für verschiedenen Übertragungsformate geeignete Abspielprogramme für Audio- und Video-Daten getrennt festlegen. Inzwischen wird beim ersten Start automatisch nach verfügbaren Playern gesucht. Gedacht ist die Einstellung natürlich um sein Lieblingsprogramm festzulegen. (Wenn das eingegebene Programm gefunden wurde, wird vor dessen Namen ein "Play"-Symbol angezeigt, anderenfalls das "Stop"-Icon.). Es eignen sich zum Beispiel: * [:AudioPlayer:]: * [:Audacious:] mit `audacious2` * [wikipedia_en:Xmms2:XMMS2] mit `xmms2 %m3u` * [:Amarok:] mit `amarok -l %pls` ## * [:Exaile:] mit `exaile` * [:Parole:] mit `parole` * [:VLC:] mit `vlc --one-instance` * [:VideoPlayer:]: * [:VLC:] für den Video-Eintrag mit `vlc --one-instance` * [:Totem:] ist ebenso geeignet: `totem` Einen Platzhalter wie `%m3u` oder `%pls` kann man optional angeben. Das legt nur den Typ der übergebenen Abspiel-Liste ("playlist") fest. Und der ist mittlerweile weniger relevant, da die meisten Programme sowieso alle Varianten unterstützen. Für ganz moderne Player eignet sich das kryptische `%xspf` als Platzhalter, wodurch mehr Radio-Informationen mitgeliefert werden. Außerdem kann der gewünschte Webbrowser für das Anzeigen von Sender-Homepages konfiguriert werden. Im Abschnitt ''"Recording applications"'' wird definiert, welche Programme für das Aufnehmen von Streams verwendet werden. Der De-facto-Standard für Audiostreams ist [:Streamripper:], welches in verschiedenen Linux-Distributionen bereits vorinstalliert ist. Hier muss auch der Pfad angegeben werden, in dem die Aufnahmen gespeichert werden sollen. Der Aufnahmepfad muss absolut sein und mit dem Parameter `-d` angegeben werden, z.B. `-d /home//Musik`. Auf der Registerkarte ''"Options"'' sind verschiedene Einstellungen zusammengefasst, die für das Programm Streamtuner2 allgemein gelten. Unter ''"Display"'' werden die Anzeigeoptionen für das Hauptfenster oder Darstellungsvarianten für die Radioliste festgelegt, unter ''"System"'' kann bei Bedarf das Debugging zur Fehlersuche aktiviert werden. Die Verzeichnisse für temporäre Dateien sowie die Konfigurationsdateien werden lediglich angezeigt. Sie können nicht geändert werden. Die Registerkarten ''"Channels"'' und ''"Features"'' enthalten Einstellungen für die verschiedenen Streamtuner2-Plugins. Zu allen Einstellungen erscheinen Tooltips, wenn man mit der Maus über den entsprechenden Einträgen verweilt. (siehe [#Plugins Plugins]). Hinter der Registerkarte ''"Add"'' verbirgt sich der ''"Plugin Manager II"'', mit dem sich optionale Plugins über das Internet installieren oder Aktualisierungen für bereits installierte Plugins herunterladen lassen. = Bedienung = [[Bild('./Streamtuner2 2.2.0-main.png', 250, right)]] Die Bedienung ist denkbar einfach: Im Hauptfenster zum gewünschten Sender navigieren und diesen anklicken. Es öffnet sich der eingestellte Player mit dem Sender. Aufnahmen erfolgen über die Aufnahme-Taste oben im Hauptfenster. Die Titel werden im angegebenen Verzeichnis – in Abhängigkeit von der Quelle – als '''MP3'''- oder '''OGG'''-Datei gespeichert. Bevorzugte Sender lassen sich als "Bookmarks" speichern, um sie schnell wieder finden zu können. Dazu wird der Sender über ''"Station -> Add bookmark"'' (oder [[Vorlage(Tasten, F8)]]) ausgewählt. Um Streamtuner2 mit einem Proxy-Server zu verwenden, muss das Programm mit der Umgebungsvariable `http_proxy=...` (bitte anpassen) gestartet werden. Beispiel [4]: {{{#!vorlage Befehl /usr/bin/env HTTP_PROXY="http://127.0.0.1:8118" && streamtuner2 }}} == Plugins == [[Bild('./st2 2.2.0 plugins.png', 250, right)]] Plugins gibt es für zusätzliche Channels sowie allgemeine Funktionserweiterungen von Streamtuner2. Hier eine Auswahl: * ''"File browser"'': Anzeigen und Abspielen von lokalen Mediendateien in konfigurierbaren Verzeichnissen. Wenn Python Mutagen installiert ist, werden auch die ID3-Informationen (Titel, Künstler, Album, Genre) sowie Länge und Bitrate angezeigt. * ''"Recording timer"'' erlaubt das Programmieren von Aufnahmezeiten ([[Vorlage(Tasten, rmt)]]-Klick auf ''"Station -> Add timer for station"'') oder automatisches Abspielen. Nützlich als Weckfunktion, aber ohne Funktionsgewähr. * ''"Stop button"'' zum Beenden einer streamripper-Aufnahme. * ''"Spec buttons for apps"''. Hiermit lassen sich zusätzliche Icons z.B. für die Lautstärkeregelung oder zum Beenden des Audioplayers definieren, die in der Toolbar angezeigt werden. * ''"History"'': Hiermit werden automatisch die letzten ''n'' abgespielten Sender abgespeichert. * ''"Config save/import/reset"'' erlaubt das Sichern und Wiederherstellen der Streamtuner2-Konfiguration oder das Zurücksetzen in den Grundzustand. * ''"Global keyboard shortcut"'' definiert im Einstellungsmenü ein Tastenkürzel, mit dem sich bequem zwischen allen Sendern in den eigenen Favoriten wechseln lässt. * ''"Export Category"'' erlaubt das Exportieren von Radio-Abspiellisten (.PLS, oder .M3U, .XSPF, .ASX, .SMIL) oder das Sichern der eigenen Bookmarks. * ''"Radio Tray hook"'' vereinfacht das direkte Exportieren von Radiostationen in das [:Radio_Tray:]-Taskleisten-Programm. Hierfür jedoch ist ein kleine [#RadioTray-erweitern Quellcode-Anpassung] notwendig. Neue Funktions- oder Channel-Plugins können über den ''"User Plugin Manager II"'' (Registerkarte ''"Add"'' im ''"Eigenschaften"''-Dialog) heruntergeladen werden. Es handelt sich um einfache Python-Skripte ('''*.py'''). Mit Root-Rechten [4] können sie in den Ordner '''/usr/share/streamtuner2/channels/''' kopiert werden. == Oberfläche (Skins, Themen) == Streamtuner2 verwendet das [:GTK+:Gimp Toolkit (Gtk+)] zur Darstellung seiner Benutzeroberfläche. Damit kann seine Oberfläche durch die Zuordnung eines anderen Gtk-Themas prinzipiell verändert werden. Es stehen hierfür zwei neue Plugins zur Verfügung: ''"Gtk2 theme installer"'' und ''"Gtk theme setting"''. Mit dem ''"Theme Installer"''-plugin können Gtk2-Designs heruntergeladen werden, die speziell für Streamtuner2 angepasst wurden. Sie werden nach Aktivierung des Plugins in einem zusätzlichen Register in den Bookmarks angezeigt. Mit dem ''"Theme Setting"''-Plugin kann zwischen den auf dem System vorgefundenen Gtk-Desogns gewechselt werden. Hierbei ist jedoch zu beachten, dass nicht jedes beliebige Gtk-Thema verwendet werden kann. Im schlimmsten Fall hängt Streamtuner2 nach der Aktivierung eines Themas. == CLI (Command Line Interface) == Als zusätzliches Feature kann Streamtuner2 auch aus einem Terminal [4] heraus bedient werden. Einige grundlegende Funktionen stehen als Befehle zur Verfügung. Allerdings muss das Programm zunächst einmal in der graphischen Variante gestartet worden sein, weil andernfalls keine Radio-Daten zur Verwendung vorliegen. Mit {{{#!vorlage Befehl streamtuner2 play "top 100" }}} kann man die erstbeste Radiostation starten, die im Titel `top 100` enthält. Mit {{{#!vorlage Befehl streamtuner2 url "frequence3" }}} wird hingegen nur die URL ausgegeben und nicht der vorkonfigurierte Audioplayer gestartet. Zur Verwendung aus anderen Programmen heraus sind die Optionen `dump` und `stream` gedacht. Es ist auch möglich, frische Radiodaten im [wikipwdia:JSON:]-Format ausgeben zu lassen. Hierfür gibt es den Befehl: {{{#!vorlage Befehl streamtuner2 category "shoutcast" "Kategorie" }}} == Weitere Sender hinzufügen == Um weitere Sender hinzuzufügen, muss derzeit noch ein [post:2644270:"Umweg"] beschritten werden: Man erstellt einen Favoriten, kopiert diesen Eintrag, fügt ihn ein und editiert ihn entsprechend. Ein weiterer Weg besteht darin, auf [http://www.myoggradio.org/ myoggradio] {de} einen Eintrag vorzunehmen, der dann über Streamtuner2 abgespielt werden kann. = Tastenkürzel = ||<-2 rowclass="titel"> Streamtuner2|| || Tasten||Funktion|| ||[[Vorlage(Tasten, f8)]]||bookmark (Lesezeichen setzen)|| || [[Vorlage(Tasten, strg+s)]]||Speichern unter|| ||[[Vorlage(Tasten, alt+enter)]]||Bearbeiten|| || [[Vorlage(Tasten, strg+q)]]||Beenden|| ||[[Vorlage(Tasten, strg+c)]]||Kopieren|| || [[Vorlage(Tasten, strg+x)]]||Löschen|| ||[[Vorlage(Tasten, strg+f)]]||Suchen|| || [[Vorlage(Tasten, f12)]]||Eigenschaften|| ||[[Vorlage(Tasten, f5)]]||Reload (neu laden)|| = Problembehebung = * Leere Kategorien-Liste:[[BR]]Nicht alle Plugins stellen beim ersten Start eine komplette Liste der Kategorien/Genres bereit. Das Aktualisieren ist aus Geschwindigkeitsgründen nicht Standard, kann aber über den Menüeintrag [[Vorlage(Tasten, lmt)]]''Channel -> Reload Category Tree'' nachgeholt werden. * Backup der Lesezeichen erstellen:[[BR]]Hierfür steht in erster Linie das Plugin ''"Export Category"'' zur Verfügung. Das [[Vorlage(Tasten, lmt)]]''"Station"''-Menü enthält dann den zusätzlichen Eintrag ''"Extensions -> Export all stations"''. Hiermit lässt sich jede beliebige Channels-Ansicht speichern.[[BR]]Streamtuner2 hält sich an den Freedesktop-Standard für Konfigurationsdateien. Alle Anwendungsdaten finden sich unter '''~/.config/streamtuner2/'''. Will man die Favoriten sichern, kopiert man daher einfach die Datei '''bookmarks.json'''. Jedoch enthält die Datei alles, was in der Bookmarks-Ansicht angezeigt wird, also auch den Verlauf, die Gtk2-Themen, Timer-Events usw.[[BR]]Programmeinstellungen befinden sich in der Datei '''settings.json'''.[[BR]] Zum Sichern und Wiederherstellen der kompletten Streamtuner2-Konfiguration steht auch das Plugin ''Config save/import/reset'' zur Verfügung. * Es werden keine Radios geladen:[[BR]]Oftmals ändern die Dienstebetreiber ihre Webseiten. Dann funktioniert das Auslesen nicht mehr. Bei einigen Plugins (SHOUTcast) kann man aber in den Optionen ([[Vorlage(Tasten, f12)]]) zwischen verschiedenen Parsern wählen. Reguläre Ausdrücke sind schneller, aber der ''"[x] PyQuery parsing"'' mitunter verlässlicher. Startet nur eines der Channel-Plugins nicht richtig, kann man es ebenso einfach einzeln deaktivieren: {{{#!vorlage Befehl streamtuner2 -d xiph }}} * Programm hängt beim Start:[[BR]]Generell kann man Streamtuner2 über ein Terminalfenster starten. Hier gibt es die Option `-D` für weitere Debug-Meldungen. Auf rot markierte Ausgaben achten. {{{#!vorlage Befehl streamtuner2 -D }}} * Wiedergabe "falscher" Sender:[[BR]]Gerade die älteren Versionen (2.0.x) hatten einige Gtk-Fehler. Nach einer Sortierung der Radio-Listen wurden die falschen Sender abgespielt. Hier half nur [[Vorlage(Tasten, f5)]], um die Anzeige wieder in die richtige Reihenfolge zu bringen. Aktuelle Versionen erlauben das Umsortieren nicht mehr, wodurch dieser bekannte Fehler nicht mehr auftritt. * Speicherpfad für Mitschnitte:[[BR]]Falls sich dieser nicht über die GUI ändern lässt, bearbeitet man die Datei '''~/.config/streamtuner2/settings.json''' und passt folgende Zeile an: {{{"audio/*": "lxterminal -e \"streamripper %srv -d /PFAD/ZUM/ORDNER\"",}}}Wer ein anderes Terminalprogramm benutzt, ersetzt auch `lxterminal` durch das jeweilige Programm. == RadioTray erweitern == Spannend ist die Erweiterung für [:Radio_Tray:], mit der man einfach neue Bookmarks und Favoriten aus Streamtuner2 nach RadioTray kopieren kann. Es gibt dafür einen neuen Eintrag im Kontextmenü [[Vorlage(Tasten, rmb)]] ''"Keep in RadioTray"''. Für die volle Funktionalität muss man allerdings selber nachhelfen (siehe auch [http://fossil.include-once.org/streamtuner2/wiki/radiotray Original-Anleitung] {en}), weil RadioTray derzeit Wartungspause hat. Ausreichend ist die Anpassung der Datei von RadioTray '''/usr/share/pyshared/radiotray/DbusFacade.py'''. Dafür benötigt man Root-Rechte und verwendet am besten einen Terminal-Editor. Die notwendige Ergänzung ist folgende: {{{ @dbus.service.method('net.sourceforge.radiotray') def addRadio(self, title, url, group="root"): self.dataProvider.addRadio(title, url, group) }}} Diesen [:Python:]-Quellcode kann man beliebig zu den anderen Einträgen wie `def playRadio` einfügen. Wichtig ist es hier, auf die richtige Anzahl von Leerzeichen (Einrückung) zu achten: In der Regel vier ab Zeilenanfang. Der eingefügte Code muss zwingend genauso ausgerichtet sein wie der bestehende. = Links = * [http://milki.include-once.org/streamtuner2/ Projektseite] {en} * [sourceforge:streamtuner2:Streamtuner2] {en} auf SourceForge * [http://fossil.include-once.org/streamtuner2/ Quellcode/Dokumentation] {en} * [http://freshcode.club/projects/streamtuner2/ Ankündigungen/Versionshistorie] {en} auf freshcode.club * [topic:streamtuner2-zwei-internet-radios-anhoeren-au:Diskussion] im hiesigen Forum für Anregungen, Anfragen, Probleme und Support #tag: Internet, Multimedia, Internetradio, Python