Verschiedene Webradios nach x Tagen durchwechseln

Da ich gerne auch lokal die Musik habe, die auf dem von mir gekauften Radiostream läuft lass ich ein Skript laufen, dass nach 2 Tagen rippen zur nächsten Station wechselt und wiederum 2 Tage rippt. Sind alle Stationen durch wird von vorne begonnen. Wird dem Skript als Argument eines der Stichworte für ein bestimmtes Radio übergeben, fängt das rippen bei diesem Radio an.

Hier das Skript:

<pre>#!/bin/bash
DI_FM_FOLDER=/path/to/folder

if [ ! -z "$1" ]; then
        STREAM_TO_PLAY=$1
fi

function startRipping {
        # kill the running streamripper
        killall streamripper
        # lets safe the unix epoch time when the recording starts
        # we use that for calculating how long the webradio recording is running
        STARTTIME=`date +%s`
        echo "currently ripping $1"
        $DI_FM_FOLDER/$1.sh
        # as long as the startdate is greater than the current date minus 2 days the stream is executed
        while true; do
                if [ ! $STARTTIME -ge $(date +%s -d "-2 days") ];then
                        break;
                fi
                sleep 1
        done
}

# if the for loop inside the while exits, it starts again at the beginning (aka endless loop)
while true; do
        # process all the streams 2 days each
        for i in liquid progressive techno minimal psychill chillout trance goa; do
                # if this script is started with an argument, the var $STREAM_TO_PLAY is not empty and it will start
                # the ripping cicle with that stream and skips the ones before it. if it's started at the right point
                # it will set the $STREAM_TO_PLAY far to a empty string and normal ripping can proceed.
                if [ ! -z $STREAM_TO_PLAY ]; then
                        if [ $i == $STREAM_TO_PLAY ];then
                                startRipping $i
                                unset STREAM_TO_PLAY
                        fi
                else
                        startRipping $i
                fi
        done
done</pre>

Im startRipping ist dann nur eine case Kontrollstruktur für jeden einzelnen Radiostream und die jeweilige Radio-IP.

Probleme mit BOM bei Kile und PDFLaTeX

Ich kann leider nicht mehr nachvollziehen warum der Fehler auftauchte. Auf jedenfall wurde immer ein Fehler mit „Missing \begin{document}“ und einem Zeichen, das so aussah „�“, ausgegeben.
Ich hatte bei Kile eingestellt, dass er das Unicode BOM (Byte Order Mark) hinzufügen soll. Anscheinend kann PDFLaTeX das nicht.
Seltsamerweise funktioniert das Kompilieren bei nochmaligen Anlegen der Dateien mit BOM…
Naja, auf jedenfall habe ich die Version ohne BOM behalten. Um die ersten 3 Bytes aus der Datei zu entfernen kann man wunderbar „dd“ benützen.

Dateikopf vorher:

hexdump -C test.tex 
00000000  ef bb bf 25 20 2b 2b 2b  2b 2b 2b 2b 2b 2b 2b 2b  |...% +++++++++++|

Hier mit „ef bb bf“ zu sehen ist der BOM.

Mit „dd“ enfernen:

dd if=test.tex of=test2.tex skip=3 bs=1

Dateikopf nachher:

hexdump -C test2.tex 
00000000  25 20 2b 2b 2b 2b 2b 2b  2b 2b 2b 2b 2b 2b 2b 2b  |% ++++++++++++++|

Alles wunderbar, weitermachen :).

Nachtrag:
Außerdem ist jetzt der „Fehler“ weg, dass die erste Seite des PDF Dokuments immer leer ist. Habe schon danach gegoogelt und Andere mit ähnlichen „Problemen“ gesehen. Vielleicht hilft’s dem Einen oder Anderen weiter?

dvb-t streaming unter Linux

Wenn der Stream einer öffentlichen Medienanstalt mal nicht so recht möchte und es noch einige Mitmenschen im selben Netz gibt, die gerne Fußball schauen würden, kann man mit vlc oder dvblast wunderbar streamen. Ich benutze dafür ein Ubuntu.

Gebraucht werden die Programme (dvblast || vlc) & dvb-apps
Also

apt-get install dvblast dvb-apps

eingeben und installieren. Oder noch den VLC… wenn er nicht sowieso schon installiert ist ;).

Meinereiner benützt einen dvb-t Stick und ist lokalisiert in Bayern.
Ich muss also die Konfigurationsdatei für Bayern nehmen. Fertige Dateien gibt es auch im ubuntuusers Wiki

scan /usr/share/dvb/dvb-t/de-Bayern > channels.conf

Unter dem Pfad /usr/share/dvb/dvb-t/ gibt es noch andere Dateien, je nachdem wo man lokalisiert ist.

Die enstandene channels.conf Datei braucht ihr um die Frequenz und Programminformationen zu erhalten, die ihr bei VLC oder dvblast angeben müsst.


ZDF:<strong>586000000</strong>:INVERSION_AUTO:<strong>BANDWIDTH_8_MHZ</strong>:FEC_2_3:FEC_1_2: <strong>QAM_16</strong>:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:<strong>545</strong>:546:<strong>514</strong>
3sat:<strong>586000000</strong>:INVERSION_AUTO:<strong>BANDWIDTH_8_MHZ</strong>:FEC_2_3:FEC_1_2: <strong>QAM_16</strong>:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:<strong>561</strong>:562:<strong>515</strong>

Die fett markierten Stellen sind die für uns relevanten Informationen. Bei den Befehlen habe ich die Informationen für das ZDF eingetragen.
VLC:
Für lokale Wiedergabe mit der eigenen IP:

<blockquote>cvlc dvb:// :dvb-inversion=2 :dvb-bandwidth=8 :dvb-fec=2 :dvb-fec=1 :dvb-modulation=16 :dvb-transmission=8 :dvb-guard=4 :dvb-hierarchy=-1 :program=514 :dvb-frequency=586000000 :dvb-srate=545 --sout '#transcode {vcodec=h264,acodec=mp3,samplerate=44100, deinterlace}:std{access=http,mux=ffmpeg{mux=flv},dst=0.0.0.0:8081/stream.flv}'
</blockquote>

Für Wiedergabe über eine Multicast Adresse (hat den Vorteil, dass wenig Traffic ensteht und auch bei vielen gleichzeitigen streams kein Problem entsteht):
<blockquote>cvlc dvb:// :dvb-inversion=2 :dvb-bandwidth=8 :dvb-fec=2 :dvb-fec=9 :dvb-modulation=16 :dvb-transmission=8 :dvb-guard=4 :dvb-hierarchy=-1 :program=514 :dvb-frequency=586000000 :dvb-srate=545 --sout '#transcode {vcodec=h264,acodec=mp3,samplerate=44100, deinterlace}:rtp{mux=ts,dst=239.255.1.1,port=8081}'</blockquote>

dvblast:
Erstellt eine Konfigurationsdatei und schreibt dort z.B. rein:

;ZDF
239.255.1.1:8081  1  514

Theoretisch könnt ihr da den ganzen Multiplex einfügen, die Programme müssen nur im gleichen Frequenzbereich sein. In diesem Beispiel also 586000000.

dvblast -a 0 -c multiplex.conf -f 586000000 -m qam_16 -b 8 -e

( -a 0 ist der erste dvb-t Adapter | -f ist die Frequenz | -m die Modulation, die in der channels.conf steht | -b die Bandbreite, die in der channels.conf steht | -e überträgt den Programmführer )

Schlussendlich:
Aufrufbar dann mit Player nach Wahl der Streams abspielen kann. Meinereiner benützt dafür den VLC.
http://lokaleIP:8083/stream.flv oder bei der Multicastadresse rtp://239.255.1.1:8081 in den Player eingeben und schon kann’s losgehen.

Soundprobleme von Diablo 3 mit wine

Diablo 3 funktioniert recht gut unter wine (1.5.4) bei mir, nur der sound war zerhäckselt und nicht brauchbar.
Eine Abhilfe ist „wine regedit“ auszuführen und bei „HKEY_CURRENT_USER/Software/Wine/Drivers“ eine Zeichenkette/string mit Namen „Audio“ mit dem Wert „alsa“ anzulegen. Scheint mit pulseaudio nicht klarzukommen. Konnte nirgends was finden, dass sonst noch jemand damit Probleme hatte. Unter der Beta ging der Diablosound auch wunderbar mit wine…

3dm2 Webinterface wird nicht angezeigt

Das Problem war plötzlich, dass ich nicht mehr auf die Administrationsoberfläche von dem 3ware Controller kam. Die üblichen Vorgehensweisen dem Problem Herr zu werden wie z.B. eine saubere Neuinstallation der Software mit zuvorigem Löschen aller Ordner und Konfigurationen hat nicht zur Lösung des Problems geführt.
Nach längerem googeln und paar verzweifelten Momenten kam ich auf die Seite von LSI, die eine Lösung für das Problem hat.
Anscheinend ist ein Update von Microsoft „schuld“ an dem Problem. Also Lösung wird eine gefixte 3dm2 Binary angeboten. Diese mit der alten Binary überschreiben und schon funktioniert die Verbindung wie gewohnt wieder.

[ad]

Dönerei

Hab ich schon erwähnt, dass es unbedingt Mode sein muss zu sagen wenn man zum Dönermann oder zum Döneressen geht stattdessen Dönerei sagt…
Hm, darauf zu kommen das oben geschriebene zu veröffentlichen bin ich seltsamerweise als ich den Wikipedia Artikel zu Makulatur gelesen habe…

Einen Drucker automatisiert installieren mit einem Batch Skript

Ich wusste lange nicht, wie ich einen Drucker TCP/IP Port automatisiert erstellen konnte aber bei einem nochmaligen googeln viel mir die Lösung mit den „printing admin scripts“ auf. Nach kurzem rumprobieren kam folgendes Skript dabei raus, dass 2 gleichartige Drucker die auf verschiedenen Etagen stehen einmal mit dem Postscript und das anderemal mit einem Generic PCL Treiber installiert. Damit wollen wir es den Usern einfacher machen S/W zu drucken, ohne beim Drucker was umstellen zu müssen.

<pre>@echo off

rem pcl
SET InfPath32="\\hostname\Canon iR Adv C5030i\iR5030Win7  PCL6\32BIT\Driver\pcl6\cnp60G.inf"
SET InfPath64="\\hostname\Canon iR Adv C5030i\iR5030Win7  PCL6\x64\Driver\pcl6\cnp60Ga64.inf"
rem postscript
SET InfPath32ps="\\hostname\Canon iR Adv C5030i\iR5030 Win7 PS\32BIT\Driver\CNS30G.INF"
SET InfPath64ps="\\hostname\Canon iR Adv C5030i\iR5030 Win7 PS\x64\Driver\CNS30GA64.INF"
SET PrnName3SW="Canon S/W 3. Stock"
SET PrnName6SW="Canon S/W 6. Stock"
SET PrnName3Farbe="Canon Farbe 3. Stock"
SET PrnName6Farbe="Canon Farbe 6. Stock"
SET PrnType="Canon iR-ADV C5030/5035 PS3"
SET PrnTypePCL="Canon Generic PCL6 Driver"
SET PortIP_3_Stock=192.168.xxx.xxx
SET PortIP_6_Stock=192.168.xxx.xxx

systeminfo | find "Windows 7"
if %ERRORLEVEL% == 0 goto Win7

systeminfo | find "Windows XP"
if %ERRORLEVEL% == 0 goto WinXP

:Win7
echo Running Windows 7 Script

rem check if 32 or 64 bit
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > C:\Windows\Temp\checkOS.txt
Find /i "x86" < C:\Windows\Temp\CheckOS.txt > C:\Windows\Temp\StringCheck.txt

If %ERRORLEVEL% == 0 (
    Echo "This is 32 Bit Win7"
  rem pcl 3 stock s/w
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows NT x86" -i %InfPath32%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName3SW% -m %PrnTypePCL% -r IP_"%PortIP_3_Stock%"

  rem pcl 6 stock s/w
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows NT x86" -i %InfPath32%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName6SW% -m %PrnTypePCL% -r IP_"%PortIP_6_Stock%"

  rem postscript 3 farbe
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows NT x86" -i %InfPath32ps%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName3Farbe% -m %PrnType% -r IP_"%PortIP_3_Stock%"

  rem postscript 6 farbe
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows NT x86" -i %InfPath32ps%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName6Farbe% -m %PrnType% -r IP_"%PortIP_6_Stock%"
  ) ELSE (
    Echo "This is 64 Bit Win7"
  rem pcl 3 stock s/w
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows x64" -i %InfPath64%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName3SW% -m %PrnTypePCL% -r IP_"%PortIP_3_Stock%"

  rem pcl 6 stock s/w
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows x64" -i %InfPath64%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName6SW% -m %PrnTypePCL% -r IP_"%PortIP_6_Stock%"

  rem postscript 3 farbe
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows x64" -i %InfPath64ps%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName3Farbe% -m %PrnType% -r IP_"%PortIP_3_Stock%"

  rem postscript 6 farbe
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows x64" -i %InfPath64ps%
  cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -a -p %PrnName6Farbe% -m %PrnType% -r IP_"%PortIP_6_Stock%")
goto exit

 

:WinXP
echo Running Windows XP Script

rem check if 32 or 64 bit
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > C:\Windows\Temp\checkOS.txt
Find /i "x86" < C:\Windows\Temp\CheckOS.txt > C:\Windows\Temp\StringCheck.txt

If %ERRORLEVEL% == 0 (
  Echo "This is 32 Bit WinXP"
  rem pcl 3 stock s/w
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows NT x86" -i %InfPath32%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName3SW% -m %PrnTypePCL% -r IP_"%PortIP_3_Stock%"

  rem pcl 6 stock s/w
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows NT x86" -i %InfPath32%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName6SW% -m %PrnTypePCL% -r IP_"%PortIP_6_Stock%"

  rem postscript 3 farbe
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows NT x86" -i %InfPath32ps%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName3Farbe% -m %PrnType% -r IP_"%PortIP_3_Stock%"

  rem postscript 6 farbe
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows NT x86" -i %InfPath32ps%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName6Farbe% -m %PrnType% -r IP_"%PortIP_6_Stock%"
  ) ELSE (
    Echo "This is 64 Bit WinXP"
  rem pcl 3 stock s/w
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows x64" -i %InfPath64%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName3SW% -m %PrnTypePCL% -r IP_"%PortIP_3_Stock%"

  rem pcl 6 stock s/w
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnTypePCL% -v 3 -e "Windows x64" -i %InfPath64%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName6SW% -m %PrnTypePCL% -r IP_"%PortIP_6_Stock%"

  rem postscript 3 farbe
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_3_Stock% -h %PortIP_3_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows x64" -i %InfPath64ps%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName3Farbe% -m %PrnType% -r IP_"%PortIP_3_Stock%"

  rem postscript 6 farbe
  cscript c:\windows\system32\prnport.vbs -a -r IP_%PortIP_6_Stock% -h %PortIP_6_Stock% -o RAW -n 9100
  cscript c:\windows\system32\prndrvr.vbs -a -m %PrnType% -v 3 -e "Windows x64" -i %InfPath64ps%
  cscript c:\windows\system32\prnmngr.vbs -a -p %PrnName6Farbe% -m %PrnType% -r IP_"%PortIP_6_Stock%"
  )
goto exit

:exit
pause</pre>

compiz gtk-window-decorator stirbt und hinterlässt rahmenlose Fenster

Nach einem Update auf Ubuntu 11.10 (Oneiric Ocelot) und Unity hatte ich ständig Probleme mit den Fenstern und im syslog stand:
<blockquote>Dec 13 23:53:35 hostname kernel: [  664.336456] gtk-window-deco[2999]: segfault at 118 ip 000000000040fc50 sp 00007fff65c607d0 error 4 in gtk-window-decorator[400000+1c000]</blockquote>

Nach kurzem googeln bin ich in einem Bugreport auf die Lösung gestoßen:
In den „CompizConfig Einstellungs-Manager“ bei der Fensterdekoration statt
/usr/bin/compiz-decorator --replace“ zu „/usr/bin/compiz-decorator“ ändern und schon gibt es kein segfault mehr.
Ich geh davon aus, dass das hauptsächlich bei Leuten auftaucht, die von älteren Versionen auf die 11.04 wechseln wo nur noch Unity eingesetzt wird.