Ich habe u.a. Script für _mich_ gemacht um Senderlisten automatisch in zapdvb zu importieren. Jeder kann es gerne benutzen oder nach seinen Vorstellungen ändern. Wer zapdvb nicht verwendet, kann sich trotzdem Senderlisten erzeugen lassen. Das ist die 1. Version des Scripts und daher sicher noch verbesserungsfähig. Es ermöglichst den Scan der Sender Astra, Hotbird und Atlanticbird 3 mit einem diseqc-Multiswitch. Vermutlich funktioniert es auch mit "Diseqc-Mini". Das hat nicht viel mit dem Script zu tun, sondern mit den Parametern der dvb-Tools. Können nicht alle Satelliten empfangen werden, so kommt es (wenig getestet) zu Fehlermeldungen, die man ignorieren kann. Augenblicklich habe ich wenig Lust das auf einzelne Satelliten wegen der Fehlermeldung anzupassen, da der Aufwand ungleich höher zum Nutzen ist. Ein Test dauert mindestens 1/2h und kann über 6h dauern. Wer also nur Astra empfangen kann, sollte mit dem Script bis auf die Warnung, keine Probleme haben. z.B.. sieht die Warnung/Fehlermeldung dann so aus: main:1882: FATAL: failed to open '/dev/dvb/adapter0/frontend0': 6 No such device or address Im ersten Teil, wurden die Sender definiert, die zum Start des Scans notwendig sind. Per default wird ein "schneller Scan" gemacht. Wenn man das Script "satscan.sh" nennt, dann bewirkt die Option "full" einen _sehr_ langen Scan, der einige, aber nicht viele Sender mehr findet. Man gibt also dann per Kommandozeile "satscan.sh full" ein. Durch Ändern der dvbscan-Optionen kann man einiges anpassen, zB wird durch Weglassen von "-q" die Ausgabe viel gesprächiger oder man kann auch nach verschlüsselten Sendern scannen indem man "-x 0" wegläßt , etc. Für Details siehe die Hilfe zu dvbscan. Nach dem Scan wird die Liste in utf-8 Zeichensatz konvertiert. Wenn jemand eine Idee hat, wie man besser "unbrauchbare" Sender filtert, dann bitte melden. Eventuell könnte man noch "Test" filtern. Hier wird sich noch einiges ändern und die Syntax ist so gewählt, dass man schnell ändern bzw. testen kann. Programmtechnisch könnte man das sicher kürzer formulieren. Zum Schluß werden die gelöschten Kanäle zur Kontrolle angezeigt. Alle wichtigen Informationen sollten eigentlich während des Abarbeitens des Scripts angeführt sein. Die vorherige zapdvb.conf wird nicht gelöscht, sondern umbenannt, sodass man zB bei Stromausfall, Abbruch, etc. die Datei wieder manuell herstellen kann. Wenn man in die Variable WARN="user@local" die eigene Email-Adresse einsetzt, dann erhält man am Ende eine Mail, dass der Scan fertig ist und hat so gleichzeitig eine "Sicherung" des Scans. Das macht vor allem in Netzwerken Sinn um nicht von Zeit zu Zeit zum anderen Rechner laufen zu müssen, um festzustellen, ob der Scan schon fertig ist. Wenn man außerhalb des lokalen Netzwerks versenden will, ist auch die Variable "SENDER" anzupassen. Um das Script ausführbar zu machen, kopiert man u.a Text in einen Editor und speichert es (zB) in /usr/local/bin/satscan.sh ab. Ein anschliessendes "chmod +x /usr/local/bin/satscan.sh" macht es dann ausführbar. Eventuell kann man sich auch mit "kdesu konqueror" helfen. Ich habe das Script bis jetzt nur als "root" getestet, da ich noch zu wenig Erfahrung habe, ob _irgendetwas_ im "DVB-Bereich" eventuell nur als root funktioniert. Über die Rechteproblematik muss sich jeder selber Gedanken machen. An Feedback bin ich sehr interessiert. Al ########################## cut ########################## #!/bin/bash # satscan.sh - utf8 # script to import free satellite channels in zapdvb.conf # no parameter executes a fast scan # parameter "full" executes a _very_ long scan # tested with # SuSE 9.1 # zapdvb-0.29-beta5.i586.rpm # dvb-1.1.0_CVS20040812-5.i586.rpm # needs awk and iconv too if [ ! -f /usr/local/share/zapdvb/zapdvb.conf ]; then # script not interrupted to get list with dvbscan only echo echo "----------------------------------------------------------" echo "----------------------------------------------------------" echo "/usr/local/share/zapdvb/zapdvb.conf existiert nicht!" echo "----------------------------------------------------------" echo "----------------------------------------------------------" echo echo -e "\a" echo -e "\a" >/dev/tty0 sleep 3 fi STARTSEC=`date +%s` ASTRASCANSTART="/tmp/astra.info" HBSCANSTART="/tmp/hotbird.info" AB3SCANSTART="/tmp/atlanticbird3.info" ASTRAFREESCAN="/tmp/astra_free.txt" HBFREESCAN="/tmp/hotbird_free.txt" AB3FREESCAN="/tmp/atlanticbird3_free.txt" ASTRA_FREE_UTF8="/tmp/astra_free_utf8.txt" HB_FREE_UTF8="/tmp/hotbird_free_utf8.txt" AB3_FREE_UTF8="/tmp/atlanticbird3_free_utf8.txt" # valid channel(s) on satellites to start scan cat - > "$ASTRASCANSTART" << ASTRA # Astra 19.2E SDT info service transponder # freq pol sr fec S 12551500 V 22000000 5/6 ASTRA cat - > "$HBSCANSTART" << HB # EUTELSAT SkyPlex, Hotbird 13E # freq pol sr fec S 12539000 H 27500000 3/4 # transponders,which were not detected here S 12092000 H 27500000 3/4 S 12207000 H 27500000 3/4 S 12245000 H 27500000 3/4 HB cat - > "$AB3SCANSTART" << AB3 # Atlantic Bird 3, 5W # freq pol sr fec S 12543000 H 27500000 3/4 S 12615000 H 8789000 7/8 S 11677000 V 25000000 1/2 # does not work with Nova-S S 11069000 H 3255000 3/4 S 12642000 H 4100000 5/6 AB3 MYDVBSCAN=`which dvbscan` # different options for fast and full scan # -q quiet (repeat for less) # -a N use DVB /dev/dvb/adapterN/ # -s N use DiSEqC switch position N (DVB-S only) # -x N Conditional Axcess, (default 1) N=0 gets only FTA channels # -n evaluate NIT-other for full network scan (slow!) # -5 multiply all filter timeouts by factor 5 # -t N Service select, Combined bitfield par. 1 = TV, 2 = Radio echo case $# in 1) if [ $1 = full ];then echo "----------------------------------------------------------" echo "FULL SCAN" echo "----------------------------------------------------------" echo "Astra-Scan takes about 85min." echo "Hotbird-Scan takes about 120min." echo "Atlanticbird3-Scan takes about 115min." echo "Press ctrl-C to abort" echo "An uncompleted list will be created!" echo "----------------------------------------------------------" echo echo "----------------------------------------------------------" echo `date +%H:%M:%S`" START FULL ASTRA-SCAN" echo " (takes about 85 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s0 -n -5 -x 0 "$ASTRASCANSTART" \ > "$ASTRAFREESCAN" echo "----------------------------------------------------------" exit -1 echo `date +%H:%M:%S`" START FULL HB-SCAN" echo " (takes about 120 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s1 -n -5 -x 0 "$HBSCANSTART" \ > "$HBFREESCAN" echo "----------------------------------------------------------" echo `date +%H:%M:%S`" START FULL ATLANTICBIRD 3-SCAN" echo " (takes about 115 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s1 -n -5 -x 0 "$AB3SCANSTART" \ > "$AB3FREESCAN" SCANINFO="FULL SATELLITE SCAN" fi ;; *) echo "----------------------------------------------------------" echo "FAST SCAN" echo "----------------------------------------------------------" echo "Astra-Scan takes about 5min." echo "Hotbird-Scan takes about 10min." echo "Atlanticbird3-Scan takes about 10min." echo "Press ctrl-C to abort" echo "An uncompleted list will be created!" echo "----------------------------------------------------------" echo echo "----------------------------------------------------------" echo `date +%H:%M:%S`" START FAST ASTRA-SCAN" echo " (takes about 5 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s0 -x 0 "$ASTRASCANSTART" \ > "$ASTRAFREESCAN" echo echo echo "----------------------------------------------------------" echo `date +%H:%M:%S`" START FAST HB-SCAN" echo " (takes about 10 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s1 -x 0 "$HBSCANSTART" \ > "$HBFREESCAN" echo echo echo "----------------------------------------------------------" echo `date +%H:%M:%S`" START FAST ATLANTICBIRD 3-SCAN" echo " (takes about 10 min.)" echo "----------------------------------------------------------" time "$MYDVBSCAN" -qq -a0 -s1 -x 0 "$AB3SCANSTART" \ > "$AB3FREESCAN" SCANINFO="FAST SATELLITE SCAN" ;; esac #utf-8 conversion MYICONV=`which iconv` "$MYICONV" -f latin1 -t utf-8 "$ASTRAFREESCAN" \ -o"$ASTRA_FREE_UTF8" "$MYICONV" -f latin1 -t utf-8 "$HBFREESCAN" \ -o "$HB_FREE_UTF8" "$MYICONV" -f latin1 -t utf-8 "$AB3FREESCAN" \ -o "$AB3_FREE_UTF8" echo "### channels created by satscan.sh ($SCANINFO)"
/tmp/allmychannels.txt echo "[channels]" >> /tmp/allmychannels.txt
# Remove of some testing and invalid channels # Warning: These filters work for _me_! cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep -v "\[" \ | grep -v "Data" \ | grep -v "DATA" \ | grep -v "Download" \ | grep -v "DOWNLOAD" \ | grep -v -e "^01 " \ | grep -v -e "^02 " \ | grep -v -e "^03 " \ | grep -v -e "^04 " \ | sort -bdfu >> /tmp/allmychannels.txt echo echo echo "----------------------------------------------------------" echo "DELETED CHANNELS" echo "----------------------------------------------------------" echo cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep "\[" cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep "Data" cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep "DATA" cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep "Download" cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep "DOWNLOAD" cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep -e "^01 " cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep -e "^02 " cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep -e "^03 " cat "$ASTRA_FREE_UTF8" \ "$HB_FREE_UTF8" \ "$AB3_FREE_UTF8" \ | grep -e "^04 " rm "$ASTRASCANSTART" rm "$HBSCANSTART" rm "$AB3SCANSTART" rm "$ASTRAFREESCAN" rm "$HBFREESCAN" rm "$AB3FREESCAN" if [ ! -f /usr/local/share/zapdvb/zapdvb.conf ]; then echo echo "----------------------------------------------------------" echo "----------------------------------------------------------" echo "/usr/local/share/zapdvb/zapdvb.conf existiert nicht!" echo "----------------------------------------------------------" echo "----------------------------------------------------------" echo echo -e "\a" echo -e "\a" >/dev/tty0 sleep 3 else # saves the original zapdvb.conf if [ ! -f /usr/local/share/zapdvb/zapdvb.conf-original ]; then cp /usr/local/share/zapdvb/zapdvb.conf \ /usr/local/share/zapdvb/zapdvb.conf-original fi # saves the last zapdvb.conf cp /usr/local/share/zapdvb/zapdvb.conf \ /usr/local/share/zapdvb/zapdvb.conf.old MYAWK=`which awk` $MYAWK ' { print $0; } /^### channel definitions for zapdvb/ { system ("cat /tmp/allmychannels.txt"); exit; } ' /usr/local/share/zapdvb/zapdvb.conf-original \ >/usr/local/share/zapdvb/zapdvb.tmp && \ mv /usr/local/share/zapdvb/zapdvb.tmp \ /usr/local/share/zapdvb/zapdvb.conf echo echo "----------------------------------------------------------" echo "/usr/local/share/zapdvb/zapdvb.conf updated" echo "undo with /usr/local/share/zapdvb/zapdvb.conf.old" echo "Check channels in zapdvb.conf for correct syntax!" echo fi echo "Unfiltered Scans stored in" echo "$ASTRA_FREE_UTF8" echo "$HB_FREE_UTF8" echo "$AB3_FREE_UTF8" echo echo "Imported channel-list stored in" echo "/tmp/allmychannels.txt too" echo "----------------------------------------------------------" ENDSEC=`date +%s` DURATION="$((($ENDSEC-$STARTSEC)/3600))h \ $(( ($ENDSEC-$STARTSEC-($ENDSEC-$STARTSEC)/3600*3600)/60 ))""m \ (""$(($ENDSEC-$STARTSEC))"" sec.)" SENDER=`whoami`@`hostname -f` WARN="user@local" if [ ! -f /usr/local/share/zapdvb/zapdvb.conf-original ]; then cat /tmp/allmychannels.txt \ | /usr/bin/mail -s \ "$SCANINFO ENDED AT `date +%H:%M:%S` - $DURATION" $WARN else cat /usr/local/share/zapdvb/zapdvb.conf \ | /usr/bin/mail -s \ "$SCANINFO ENDED AT `date +%H:%M:%S` - $DURATION" $WARN fi ENDSEC=`date +%s` echo echo "----------------------------------------------------------" echo `date +%H:%M:%S`\ " TOTAL TIME: $DURATION" echo "----------------------------------------------------------" echo -e "\a" echo -e "\a" >/dev/tty0 ########################## cut ##########################