w_scan ist ein praktisches Kommandozeilen-Programm, welches einen Sendersuchlauf für TV- und Radioprogramme auf DVB-T/-S/-B Receivern durchführt und anschließend aus den Suchergebnissen eine channels.conf für VDR erstellt. Anschließend kann basierend auf den erstellten Dateien eine eigene channels.conf
erstellt werden.
Das Skript erledigt folgende Aufgaben:
- Sendersuchlauf über Satellit (Astra 19.2°E).
- Überführung der Ergebnisse in eine für VDR 2.0 lesbare
channels.conf
. - Erstellen eines Diffs zwischen (eventuell vorhandenen, von w_scan erstellen)
channels.conf
Dateien und der neu erstellten. - Erstellen einer vollständigen
channels.conf
, die alle bisher über w_scan gefunden Sender beinhaltet.
#!/bin/bash # # Copyright (C) 2012 Manuel Grob # # 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, either version 3 of the License, or # (at your option) any later version. # # 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, see <http://www.gnu.org/licenses/>. # Adjust the following two variables to your needs! WSCAN=/usr/local/bin/w_scan PREFIX=/usr/local/share/w_scan # Other vars DATE=$(date +%Y%m%d%H%M) LOGFILE=$(mktemp -p /tmp w_scan.XXXXXX) CHANNELSTMP=$(mktemp -p /tmp channels.XXXXXX) if [ "$(pidof vdr)" ] then echo "Stop vdr first!" exit 1 fi cd ${PREFIX} # Scan entire satelite transponder for available channels and sort them $WSCAN -fs -s S19E2 -o2 -C UTF-8 -O1 >>$CHANNELSTMP 2>$LOGFILE sort -u $CHANNELSTMP > channels${DATE}.conf # Test if channels-latest.conf is readable and create a diff between new and previous scan [ -r channels-latest.conf ] && diff -u channels${DATE}.conf channels-latest.conf >channels${DATE}.diff # Test if channels.conf.full is readable and merge old one with new channels.conf or create one if [ -r channels.conf.full ]; then cp -a channels.conf.full channels.conf.full.old sort -u channels${DATE}.conf channels.conf.full.old >channels.conf.full rm -f channels.conf.full.old else sort -u channels${DATE}.conf >channels.conf.full fi # Delete old symlink to previous scan and create a new one to the latest rm -f channels-latest.conf ln -sf channels${DATE}.conf channels-latest.conf rm -f $CHANNELSTMP
Die Variablen WSCAN
in Zeile 19 sowie PREFIX
in Zeile 20 sollten nach den eigenen Bedürfnissen angepasst werden.
Das Skript erstellt einen neuen Ordner unter /usr/local/share
namens w_scan
und benutzt diesen fortan als Arbeitsverzeichnis. Alle erstellten channels.conf
Dateien können in diesem Ordner gefunden werden:
channels-latest.conf
: Symlink auf diechannels.conf
des letzten Aufrufs von w_scan.channels-datum.conf
: Enthält gefundene Sender bei Aufruf von w_scan zum angegebenen Datum.channels-datum.diff
: Zeigt Unterschiede zwischen den Sendern des letzten und vorletzen Aufrufs von w_scan.channels.conf.full
: Beinhaltet alle mit w_scan gefunden Sender.
Das Skript erstellt außerdem in /tmp
eine Logdatei (w_scan.xxxxxx
), welche zu Debugzwecken zu Rate gezogen werden kann.