[[Vorlage(archiviert )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Programme starten: Ein Programm starten] [:Menüeditor: Programme zum Menü hinzufügen] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis(1)]] Dieses Skript kann verwendet werden, um bequem zeitgesteuerte UKW-Radioaufnahmen zu erstellen. Dafür ist eine FM-fähige Radio/TV-Karte und UKW-Empfang nötig. Es ist nicht für Internetradio geeignet, dazu siehe [:Internetradio_aufzeichnen:]. Verwendet wird [:Radio#Gnomeradio:Gnomeradio] und der [:GNOME_SoundRecorder:]. Außerdem kommt [:Zenity:] zum Einsatz sowie das Programm '''xte'''. Falls eine kombinierte Radio/TV-Karte verwendet wird, können meist TV und FM-Radio nicht gleichzeitig verwendet werden. = Installation = Folgende Pakete müssen installiert [1] sein: * '''gnomeradio''', ''universe'' * '''zenity''' * '''xautomation''', ''(für `xte`)'' = Vorbereitung = Um das Skript nutzen zu können, muss zunächst in einem Editor [2] eine Liste der in Gnomeradio als Presets gespeicherten Sender erstellt werden. Die Sendernamen dürfen Leerzeichen enthalten. Die Position auf der Liste wird mit einem Semikolon (''';''') angehängt, einstellige Zahlen mit führender "`0`". Beispiel: {{{#!code text Bremen 1;01 Hit Radio Antenne;02 Funkhaus Europa;03 Bremen 4;04 }}} Diese Liste wird als '''Senderliste.lst''' in '''~/.gnomeradio''' abgespeichert (den Ordner ggf. anlegen). Anschließend das folgende Skript herunterladen, unter einem aussagekräftigen Namen (z.B. '''~/bin/UKW-Aufnahme-Skript.sh''') abspeichern und ausführbar [5] machen. {{{#!code bash #!/bin/bash # UKW-Radio Aufnahme-Skript Autor Heinrich Schwietering (c) 2009 # http://forum.ubuntuusers.de/topic/ukw-radio-fm-radio-zeitgesteuert-aufnehmen MCD=/usr/bin/gnome-sound-recorder USER=~/Gnomeradio-Aufnahme DISPLAY=:0.0 zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Script nutzen zu können." && exit 1 ; } test -e $MCD || { zenity --error --text "Fehler: Du benötigst \"gnome-sound-recorder\" um dieses Script nutzen zu können." && exit 1 ; } test ! -e ~/.gnomeradio/Sender.lst && zenity --error --text "~/.gnomeradio/Sender.lst wurde nicht gefunden" && exit 1 SENDER=`cat ~/.gnomeradio/Sender.lst | cut -d ";" -f 1 | zenity --list --title "Bitte Sender auswählen" --column "Sender:"` || exit 0 echo `cat ~/.gnomeradio/Sender.lst | grep "$SENDER;**"` &> ~/.gnomeradio/Sender SENDERNUMMER=`cat ~/.gnomeradio/Sender | cut -d ";" -f 2` SENDERNAME=`cat ~/.gnomeradio/Sender | cut -d ";" -f 1` && rm ~/.gnomeradio/Sender test "$SENDER" || { zenity --error --text "Es wurde kein Sender ausgewählt." && exit 1 ; } TITLE=`zenity --entry --title "Titel der Aufnahme (optional)" --text "Wenn gewünscht einen Titel für die Aufnahme festlegen" --entry-text ""` || exit 0 DAY=`zenity --calendar --title "Aufnahmedatum" --text "Bitte das Datum der Aufnahme festlegen"` || exit 0 TIME=`zenity --entry --title "Aufnahmestart (HH.MM)" --text "Bitte den Startzeitpunkt der Aufnahme festlegen" --entry-text "$(date --date="75 seconds" +%H.%M)"` || exit 0 DAUER=`zenity --entry --title "Dauer" --entry-text "45" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0 if [ "$TITLE" != "" ]; then FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$USER"/"$SENDERNAME"-"$TITLE"-"$DAY"-"$TIME".mp3` || exit 0 else FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$USER"/"$SENDERNAME"-"$DAY"-"$TIME".mp3` || exit 0 fi if [ "$TIME" == "$(date --date="75 seconds" +%H.%M)" ]; then echo "DISPLAY=$DISPLAY ~/.gnomeradio/Senderwahl.sh "$SENDERNUMMER"" | at $TIME $DAY &> /tmp/recerror else (echo sleep 55 && echo "DISPLAY=$DISPLAY ~/.gnomeradio/Senderwahl.sh "$SENDERNUMMER"") | at $TIME $DAY-1 minutes &> /tmp/recerror fi test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1 (echo "killall $MCD" && echo mv /tmp/gsr*.* "\"$FILE\"") | at $TIME $DAY+$DAUER minutes &> /tmp/recerror1 test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1 zenity --info --text "Sender: $SENDERNAME\n\Titel: $TITLE\n\Beginn: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!" test -e /tmp/recerror && rm /tmp/recerror test -e /tmp/recerror1 && rm /tmp/recerror1 }}} Die Variablen für den Speicherort "`USER=`" und das Display "`DISPLAY=`" bei Bedarf anpassen; auch die voreingestellte Aufnahmedauer "`--entry-text "45"`" (Zeile 18) kann im Skript verändert werden. Die eigentliche Aufnahme wird durch ein - per [:at:]-Job im Skript aufgerufenes - '''Senderwahl.sh'''-Skript geregelt, das Gnomeradio mit dem gewählten Sender startet und im GNOME-SoundRecorder die Aufnahme beginnt (geschieht durch die xte-Befehle, die die Tasten der Shortcuts "imitieren", z.B. [[Vorlage(Tasten, ctrl+r)]] zum Start der Aufnahme im GNOME-SoundRecorder): {{{#!code bash #!/bin/bash count=1 gnomeradio & sleep 0.7 xte 'key Page_Up' while [ $count -le ${1} ] do xte 'key Down' count=$[$count+1] done sleep 1 gnome-sound-recorder & sleep 2 xte 'keydown Control_L' 'keydown R' 'keyup Control_L' 'keyup R' sleep 20 killall gnomeradio exit 1 }}} Dieses Skript herunterladen, als '''~/.gnomeradio/Senderwahl.sh''' abspeichern und ausführbar machen. Um ein "Mithören" - wenn nötig - zu verhindern, ein "` 'key m'`" in Zeile 5 anhängen (mit der Leerstelle vor `key`!). Gnomeradio wird nach 20 Sekunden beendet (im Skript anpassbar), da es für die eigentliche Aufnahme nicht gebraucht wird. So kann aber noch kontrolliert werden, ob auch tatsächlich der richtige Sender verwendet wird. Außerdem muss als Aufnahmequelle die FM/TV-Karte angegeben werden. Im [:PulseAudio:]-Volume-Control-Fenster die Karte im Eingaberäte-Reiter als "Vorgabe" einstellen), damit der GNOME-SoundRecorder auch von der richtigen Quelle aufzeichnet! = Benutzung = Die Benutzung ist selbsterklärend: Das Hauptskript im Terminal aufrufen und die gewünschten Angaben machen. Zum Schluss erscheint noch ein Fenster, in dem die Eingaben überprüft werden können. Komfortabler ist es, sich im Menü einen Starteintrag [4] zu erstellen und das Skript so zu starten [3]. Die Aufnahmen werden nach dem Muster "'''Sender-Datum-Zeit'''" (oder "'''Sender-Titel-Datum-Zeit'''", falls ein Titel angeben worden ist) am Ende der Aufnahmezeit aus '''/tmp/gsr-record-unbenannt-*.*''' umbenannt und ins angegebene Verzeichnis verschoben. Das gewünschte Format kann im GNOME-SoundRecorder eingestellt werden, die entsprechende Dateiendung im Skript anpassen (Vorgabe ist "`.mp3`"). Da es bei "Sofort-Aufnahmen" (Verwendung der voreingestellten Zeit) vorkommen könnte, dass die Aufnahme gestartet wird, bevor das letzte Zenity-Kontrollfenster abgearbeitet ist (dann könnten die xte-Befehle ins Leere laufen) ist ein "Zeitpuffer" eingebaut. Die Aufnahme beginnt erst mit der nächsten "vollen" Minute plus ca. 5 Sekunden, bis alle Anwendungen gestartet und richtig eingestellt sind! Andere Aufnahmen werden mit einem kleinen Trick "sekundengenau" gestartet: Da sich '''at'''-Jobs per se nicht sekundengenau angeben lassen, wird die Ausführung wird um eine Minute vorverlegt, und dann mit "`sleep 55`" um 55 Sekunden verzögert. Mit der "Startzeit" von 5 Sekunden kann dann die Aufnahme recht genau zur "vollen" angegebenen Minute gestartet werden - den Wert ggf. anpassen. = Probleme = Falls nicht der richtige Sender eingestellt, oder die Aufnahme nicht gestartet wird, müssen ggf. die "`sleep`"-Werte im Senderwahl-Skript heraufgesetzt werden. Diese sind abhängig von der Leistungsfähigkeit der verwendeten Hardware und der Auslastung zur Zeit des Aufnahmestarts (ggf. sind auch kürzere Zeiten möglich). = Alternative = Es existiert auch eine [post:2109350:alternative Version], die die Aufnahme mit '''arecord''' (aus dem Paket '''alsa-utils''') bewerkstelligt. Da allerdings nur eine Abspeicherung als Wave-Datei praktikabel ist, entstehen damit sehr schnell sehr große Dateien (eine Aufnahme-Stunde = 660 MB'''!'''). Schneiden und Weiterverarbeiten kann man die Dateien dann z.B. mit [:Audacity:], und/oder sie in das Format eigener Wahl [:Audiodateien_umwandeln:umwandeln]. #tag: Multimedia, Radio