In unserer Reihe Scripting hat lichtgestalt einen sehr guten Artikel fr uns geschrieben.
Er beschftigt sich damit, VideoCDs unter BeOS sehr einfach zu starten und verwendet neben Scriptsprache einige Tools die man sich bei Beits runterladen kann (links sind jeweils beigefgt)
Bei Bedarf stelle ich den Artikel auch zum Download bereit.
Webmaster
Bernd Korz
Workshop - (S)VCDs automatisch abspielen
(S)VCDs automatisch abspielen
Schon seit geraumer Zeit lassen sich VCDs und SVCD unter BeOS abspielen. Doch ist es relativ umstndlich, da man die (S)VCD nicht einfach einlegen und vlc starten kann. Man mu den Systempfad zum Laufwerk herausfinden, dann die (S)VCD in der Shell "von Hand" mounten und an vlc den richtigen Pfad zur Videodatei bergeben. Was fr den gebten User umstndlich ist, wird fr den Neuling zur abschreckenden Barriere. Deshalb hat BePage mit Be(S)VCD_Player ein Paket auf BeBits gestellt, das mithilfe eines Scripts dieses Manko aus Welt schaffen sollte.
Leider funktionierte es nicht auf Anhieb richtig und weil ich gerade den Drang dazu versprte, schickte ich ihm nicht nur ein gefixtes Script, sondern bastelte gleich noch daran weiter um die Konfiguration mglichst zu automatisieren. Einige dieser nderungen hat BePage bernommen, aber ich denke mein Originalscript knnte als ntzliches Beispiel dienen, um andere, die bisher noch nicht in die Scriptprogrammierung eingestiegen sind, ein paar Anregungen zu geben.
Damit alles funktioniert, mssen folgende Programme installiert sein:
Wenn alles installiert ist, kann's losgehen (ich empfehle das runtergeladene fertige Script zur bersicht nebenher in einem Editor geffnet zu halten):
Wie Zeile 1 beginnt jedes Script, da es die Datei als Scriptdatei kennzeichnet und auf den Pfad zur ausfhrenden Shell verweist. Dann folgen einige Zeilen Kommentar, durch ein '#' gekennzeichnet, in denen der Ablauf des Scripts kurz skizziert wird.
16 if [ -e $HOME/config/settings/vcd_player/vcd_drive ] ; then # Check if there's a config file
17
18 CDROM_path=$(cat $HOME/config/settings/vcd_player/vcd_drive) # Get path from config file
19 else
|
Zeile 16 prft, ob die Datei $HOME/config/settings/vcd_player/vcd_drive existiert und fhrt falls dem so ist den darauffolgenden Code aus.
Hier wird eine Variable "CDROM_path" eingefhrt, die mit Ergebnis der Operationen in der Klammer (daher das "$") befllt wird (18). In dieser Klammer sehen wir den Befehl "cat", der hier den Inhalt dieser Datei ausgibt. Falls also eine Datei $HOME/config/settings/vcd_player/vcd_drive existiert, wird die Variable "CDROM_path" mit deren Inhalt gefllt.
Falls dem nicht so ist, werden wir, wie man gleich sieht, einen groen Aufwand treiben um auf andere Weise an den richtigen Pfad zum CD Laufwerk zu kommen.
Warum dann berhaupt eine Konfigurationsdatei? Einerseits ist man durch die Erkennung des CD-ROMs sehr flexibel: Wer nur eines hat, merkt davon gar nichts. Wer zwei oder drei hat, kann von unterschiedlichen Laufwerken aus (S)VCDs abspielen und muss keine Konfigurationsdateien ndern, sondern klickt auf den entsprechenden Button. Wenn jemand jedoch mehrere CD-ROMs hat, aber immer vom gleichen liest, knnte der regelmig auftauchende Alert nerven.
Also gibt es die Mglichkeit ein Verzeichnis vcd_player in ~/config/settings/ anzulegen und dort in eine Textdatei vcd_drive den richtigen Pfad zum CD-ROM von Hand festzulegen.
Dieser Umstand sollte in einer beiliegenden Hilfedatei erwhnt werden und steht auch im Kopf dieses Scripts.
Wenn also keine Konfigurationsdatei vorhanden ist, geht es weiter mit:
22 # 1. Detect CD_ROM(s)
23 # ===================
24
25 play | grep "/dev" | sed s@ @@g > /tmp/cddev.txt
|
Hier passiert einiges...:)
Es wird ein Konzept verwendet, dass in der Bash Shell seit jeher so beliebt wie leistungsvoll ist: die "Pipe", dargestellt durch den senkrechten Strich "|". Sie verbindet den Output eines Befehls mit dem Eingang des folgenden. Daher ja auch Pipe == Rohr.
Beginnen wir von links: "play" ist ein Programm mit dem man vom Terminal aus eine AudioCD abspielen kann. Da ein Script sich so verhlt als ob man es direkt im Terminal eingibt, lt sich schnell herausfinden welchen Output "play" produziert. ffne also ein Terminal und tippe "play" ein. Du erhltst etwa folgendes:
Welcome to the BeOS shell.
$ play
Usage: play device [command [param]]
Valid devices:
/dev/disk/ide/atapi/0/slave/0/raw
Valid commands:
0 [n] - play from track n [1]
1 - pause
2 - resume
3 - stop
4 - eject
5 n - set volume to n (0 <= n <= 255)
6 - current position
7 n s - save track n to file s
8 [c] - scan in direction c (f = forward, b = backward)
$
|
Wie man sieht versteckt sich im Output des Programms unter "Valid devices" der Pfad zu dem (oder auch mehreren) CD-ROM Laufwerken. Diese Pfade befinden sich alle unter /dev im System.
Dieser gesamte Output wird jetzt durch eine Pipe an den nchsten Befehl weitergeleitet: "grep". "grep" sucht im bergebenen Text nach der Zeichenfolge "/dev" und gibt die Zeilen, die diese Zeichen enthalten wiederum durch eine Pipe weiter an den dritten Befehl, "sed".
"sed" ist ein extrem leistungsvolles Programm und dementsprechend komplex. Es kann dazu verwendet werden Zeichenfolgen im bergebenden Text zu suchen und zu ndern oder gegen andere auszutauschen. Genau dies geschieht auch hier: Die Zeilen, die von "grep" gefiltert wurden enthalten nicht nur den Pfad zum CD-ROM, sondern auch noch Leerzeichen am Anfang. Genauso wie sie im Output von "play" standen, da "grep" ja nur die entsprechenden Zeilen gefiltert, diese aber nicht gendert hat. Dies bernimmt "sed" indem es alle Leerzeichen, die am Anfang einer Zeile stehen lscht. Genau auf die Syntax einzugehen wrde hier zuweit fhren. Wen's interessiert, das Netz ist voll von Erklrungen und ntzlichen sed-Einzeiler. Just Google it!
Am Ende der Zeile 25 wird der Output von sed schluendlich in eine Datei /tmp/cddev.txt umgeleitet.
27 CDROM=$(cat /tmp/cddev.txt | wc -l) # Number of found CDROMS
|
Hier sehen wir einen neuen Befehl. "cat" liefert hnlich wie in Zeile 18 den Inhalt der angegebenen Datei. Statt diesen jedoch direkt in die Variable "CDROM" zu schreiben, wird er durch eine Pipe an das Kommando "wc" weitergeleitet. "wc" bedeutet "wordcount", kann aber durch den Parameter "-l" dazu gebracht werden die Anzahl der bergebenen Zeilen auszuspucken. Dieser Wert wird nun in der Variablen "CDROM" abgelegt.
Wir zhlen also die Zeilen der Datei und kennen nun die Anzahl der erkannten CD-ROM Laufwerke.
29 if [ $CDROM -eq 0 ] ; then
30 alert --stop "Couldn't find a CDROM!"
31 exit
32
33 elif [ $CDROM -eq 1 ] ; then
34 CDROM_path=$(cat /tmp/cddev.txt)
|
Jetzt checken wir die Variable CDROM und reagieren entsprechend.
In Zeile 29 sehen wir nach ob sie gleich Null ist (englisch "equal" daher -eq). Zu beachten sind alle Leerzeichen! Die Bash Shell verzeiht hier keine Fehler! Falls also kein Laufwerk gefunden wurde, wird mittels "alert" (30) ein Fenster ausgegeben, in dem wir das dem User mitteilen.
Standardmig zeigt der Alert nur einen OK Button an und unser Script legt solange eine Pause ein, bis der User ihn drckt. Wie wir spter sehen werden, kann man aber bis zu drei selberbeschriftete Buttons anzeigen lassen und anschlieend auswerten welcher gedrckt wurde.
Hier reicht uns der einfache Alert. Wird die Abarbeitung nach einem OK-Klick fortgesetzt folgt der Befehl "exit" (31) und das Script wird ohne weitere Umschweife verlassen.
In Zeile 33 prfen wir ob die Anzahl 1 ist. Ist dies der Fall befindet sich nur eine Zeile in unserer zu Anfang erzeugten Datei /tmp/cddev.txt und ist zugleich der gesuchte Pfad zu unserem Laufwerk!
So wie vorher in Zeile 18 bergeben wir den Inhalt der Datei an eine weitere Variable: CDROM_path.
Jetzt beginnt die Arbeit aber erst richtig. Was geschieht wenn mehr als ein CD-ROM Laufwerk vorhanden ist? Nun, wir lassen den User entscheiden.
36 else
37 {
38 # Create list of CD-ROM drives to choose from
39 i=1
40 while read ThisDevice; do
41 echo $i) $ThisDevice
42 i=$(expr $i + 1)
43 done
44 } < /tmp/cddev.txt > /tmp/cdlist.txt
|
Dazu erzeugen wir aus den erkannten Pfaden der CD-ROMs eine numerierte Liste. Hierzu stellen wir jeder Zeile der zu Beginn erkannten CD-Laufwerke die Zeilennummer und eine Klammer voran.
Zur Erklrung fangen wir diesmal von hinten an. Anders als in Zeile 25 schicken wir den Output diesmal direkt aus der Datei /tmp/cddev.txt in die vorangestellte Funktion die sich zwischen den {} befindet.
Die Funktion beginnt nach geschwungener Klammer und Kommentar in Zeile 39 mit der Initialisierung einer Zhlervariablen "i" mit dem Wert 1. Dann folgt eine "while" Schleife in der bei jedem Durchlauf eine Zeile mittels "read" aus der angegebenen Datei gelesen wird, solange, bis das Ende der Datei erreicht ist. Die einzelne Zeile wird jeweils in der Variablen "ThisDevice" abgelegt.
In Zeile 41 wird mittels "echo" ein String ausgegeben. Und zwar als erstes die Zhlvariable "i" (zu Anfang ja mit "1" initialisiert, was ja trefflich pat, da wir gerade die erste Zeile der Datei behandeln...) und dann eine Klammer ")". Damit diese Klammer jedoch nicht als zur Syntax gehrend fehlinterpretiert wird, muss man sie mit einem "" "escapen". Andere Zeichen die escaped werden mssen sind: "'!#$%*?/{}<>~() und Leerzeichen (kann durchaus sein, da ich welche vergessen habe...). Nach Zeilennummer, Klammer und Leerzeichen folgt die eigentliche Textzeile aus der Datei, die wir ja mittels "read" zuvor in die Variable "ThisDevice" gelesen haben.
In Zeile 42 wird die Zhlvariable um 1 erhht. "expr" ist ein kleiner Kommandozeilen-Rechner der dafr bentigt wird, weil die Bash Shell selbst keine Mglichkeit bietet Rechnungen durchzufhren und sich daher auf ein Hilfsprogramm verlassen mu.
Bei jedem Durchlauf wird so eine Zeile aus /tmp/cddev.txt gelesen, die Zeilennummer vorangestellt und anschlieend (siehe hinterer Teil der Zeile 44) in eine neue Datei /tmp/cdlist.txt geschrieben.
Jetzt werden dem User die so erzeugte Liste prsentieren, damit er entscheiden kann welches Laufwerk das richtige ist.
Dabei werden wir wieder einen Alert benutzen. Ein Alertaufruf ist generell folgendermaen aufgebaut:
alert --mode "Text" [Button 1] [Button 2] [Button 3]
Optional bezeichnet --mode hier das im Alert angezeigte Icon. Zur Verfgung stehen: --empty | --info | --idea | --warning | --stop. Danach folgt der darzustellende Text in Anfhrungszeichen und dann bis zu drei Buttons. Hierbei ist der Beschriftungstext der Buttons gleichzeitig der String, der ausgegeben wird falls dieser Button gedrckt wurde.
46 if [ $CDROM -eq 2 ] ; then
47 DevNum=$(alert "There is more than one CD-ROM drives available. Choose the right one:
48
49 `cat /tmp/cdlist.txt`" "1" "2")
50 CDROM_path=$(grep ^$DevNum /tmp/cdlist.txt | sed s/^$DevNum) //) # Find this number in cdlist.txt and remove number etc.
|
In der Variablen CDROM steht ja immernoch die Anzahl der erkannten Laufwerke, also checken wir erstmal, ob wir es mit 2 CD-ROMs zu tun haben (46).
Falls ja, erzeugen wir einen Alert mit zwei Buttons, "1" und "2" (47 bis 49).
Neben einem normalen Text mssen wir allerdings noch unsere numerierte Liste der mglichen CD-ROM Pfade darstellen. Dies erreichen wir einfach durch die Ausgabe der vorher erzeugten Datei /tmp/cdlist.txt (49). Zu beachten sind hier die "Backticks", zu erreichen per Shift+ (das ist die Taste neben ""...). Sie zeigen an, da hier nicht die Zeichen "cat cdlist.txt" ausgegeben werden sollen, sondern sie direkt als Befehl zu interpretieren sind.
Wichtig ist ebenfalls, da alles was sich als Text zwischen den " " befindet, 100%ig so dargestellt wird, wie es im Editor erscheint. Das heit, alle Tabs, Returns und Leerzeilen werden so bernommen wie sie eingegeben worden sind.
Das Ergebnis des Alerts (daher wieder die Klammern und das $), welcher Button gedrckt wurde, wird einer neuen Variablen "DevNum" zugeteilt.
Der zurckgegebene Wert ist entweder 1 oder 2, entsprechend der Zeile 1 oder 2 unserer Datei /tmp/cdlist.txt. Nehmen wir an, es wurde Option 2 gewhlt, DevNum enthlt also den Wert 2. Dann she Zeile 50 so aus:
CDROM_path=$(grep ^2 /tmp/cdlist.txt | sed s/^2) //)
"grep" sucht aus der Datei /tmp/cdlist.txt die Zeile die eine 2 am Anfang hat. Das bedeutet nmlich das "^" vor der 2. Diese Zeile wird nun mittels Pipe an sed gefttert. Der wiederum lscht "^2) " (wieder muss die 2 am Anfang stehen), also "2) " (2, Klammer, Leerzeichen). Eben genau unsere in den Zeilen 37 bis 44 mhsam generierten Zeilennummern.
Der so erhaltene "reine" Pfad zum CD-Laufwerk wird an die Variable "CDROM_path" vergeben.
Das gleiche machen wir nun fr den Fall dass 3 Laufwerke vorliegen:
52 elif [ $CDROM -eq 3 ] ; then
53 DevNum=$(alert "There is more than one CD-ROM drives available. Choose the right one:
54
55 `cat /tmp/cdlist.txt`" "1" "2" "3")
56 CDROM_path=$(grep ^$DevNum /tmp/cdlist.txt | sed s/^$DevNum) //) # Find this number in cdlist.txt and remove number etc.
|
Und jetzt erreichen wir das Limit von Alert, weil wir damit nur drei Buttons darstellen knnen. Allerdings drften die wenigsten mehr als drei CD-ROMs haben...
58 elif [ $CDROM -gt 3 ] ; then
59 alert --stop "Looks like you got more than 3 CD-ROM drives!
60 Sorry, I cannot deal with that..."
61 exit
62 fi
63
64 fi
65
66 fi
|
In Zeile 58 berprfen wir, ob es mehr als 3 (englisch "greater than", daher -gt) sind und geben ggf. eine kleine Fehlermeldung aus und verlassen das Script mittels "exit". Eigentlich htte man sich den "if"-Test sparen knnen, weil wir ja bereits geprft haben, ob 0, 1 ,2 oder 3 Laufwerke vorliegen...
Zu guter letzt schlieen wie die geschachtelten "if"-Blcke durch korrespondierende "fi" (62 bis 66).
69 # 2. Detect vlc binary
70 # ====================
71
72 if [ -e $HOME/config/settings/vcd_player/vlc ] ; then # Check if there's a config file
73 VLC_path=$(cat /tmp/vlcpath.txt)
74
75 else |
Selbes Spiel mit dem Pfad zum VLC Player. Hier testen wir auf Konfigurationsdatei ~/config/settings/vcd_player/vlc, die Pfad/Dateinamen zum VLC Viewer enthlt. Gibt es keine solche Datei, machen wir weiter mit dem was nach "else" (75) folgt:
77 query "((name=="[vV][lL][cC]*")&&(BEOS:TYPE=="application/x-vnd.Be-elfexecutable"))" | sed "/Trash//d" > /tmp/vlcpath.txt
|
Hier benutzen wir BeOS' Querysystem um alle Dateien zu finden die mit "vlc" beginnen und gleichzeitig vom Typ "application/x-vnd.Be-elfexecutable" sind. Da jedes ausfhrbare Programm diese Kennung trgt, stellen wir so sicher dass keine Verknpfungen oder Text- und Grafikdateien etc. mitgelistet werden.
TIP: Wertvolle Hilfe beim Erstellen des Querystrings liefert BeOS' Find-Panel. Anstatt "All files and folders" whlt man den entsprechenden Dateityp (hier: "Be Application") und gibt weitere Suchkriterien "by Attribute" ein. Hier kann man sich die Query so zusammenbauen, wie man's braucht und schaltet dann zum Schlu auf "by Formula" um. Dort erscheint der Suchstring, den man dann in sein Script oder ins Terminal in seine Query pasten kann. Nachtrglich kann diese dann auch noch weiter bearbeitet werden (z.B. durch "!" aus "UND" ein "NICHT" machen), so dass man noch feiner getunte Queries bauen kann als dies im Find-Panel mglich ist.
Die durch die Query erzeugte Liste wird nun zu "sed" gepiped, welches alle Zeilen die "Trash/" enthalten herausfiltert, da wir den Mlleimer nicht bercksichtigen wollen. Was von der Liste brigbleibt wird in die Datei /tmp/vlcpath.txt geleitet.
Nun folgt das selbe Spielchen wie zuvor bei der Erkennung des CD-ROMs. Sind mehrere VLC Programme vorhanden werden entsprechende Alerts erzeugt, etc. etc.
79 VLC=$(cat /tmp/vlcpath.txt | wc -l) # Are there more than one vlc binary?
80
81 if [ $VLC -eq 0 ] ; then
82 alert --idea "Couldn't find the vlc binary!" "Get vlc on BeBits" "Cancel" | read button
83 if [ $button -eq 0 ] ; then
84 /boot/beos/apps/NetPositive http://www.bebits.com/app/2119 &
85 fi
86 exit
|
In Zeile 82 sehen wir eine andere Variante den Rckgabewert an eine Variable zu vergeben (vgl. z.B. Zeile 47). Beim Bash Scripting gibt es immer zwei Dutzend verschiedene Mglichkeiten um ans selbe Ziel zu kommen...
Verwendet man diese Methode, kann man auch den Test vereinfachen. Man erhlt "0" fr Button 1, "1" fr Button 2 und "2" fr Button 3. Wird Button 0 gedrckt, ffnen wir Net+ mit der URL zum Download und verlassen das Script. Man bemerke das "&" in Zeile 84. Dieses veranlat das aufgerufene Programm im Hintergrund zu starten, d.h. unser Script wird nicht angehalten bis Net+ beendet wird.
88 elif [ $VLC -gt 1 ] ; then # Yes!
89 {
90 # Create list of found vlc binaries to choose from
91 i=1
92 while read ThisDevice; do
93 echo $i) $ThisDevice
94 i=$(expr $i + 1)
95 done
96 } < /tmp/vlcpath.txt > /tmp/vlclist.txt
97
98 if [ $VLC -eq 2 ] ; then
99 VLCNum=$(alert "There are two vlc binaries on your system. Choose the right one:
100
101 `cat /tmp/vlclist.txt`" "1" "2")
102 VLC_path=$(grep ^$VLCNum /tmp/vlclist.txt | sed s/^$VLCNum) //) # Find this number in vlclist.txt and remove number etc.
103
104 elif [ $VLC -eq 3 ] ; then
105 VLCNum=$(alert "There are three vlc binaries on your system. Choose the right one:
106
107 `cat /tmp/vlclist.txt`" "1" "2" "3")
108 VLC_path=$(grep ^$VLCNum /tmp/vlclist.txt | sed s/^$VLCNum) //) # Find this number in vlclist.txt and remove number etc.
109
110 elif [ $VLC -gt 3 ] ; then
111 alert --stop "Looks like you got more than 3 vlc binaries on your system!
112 Please rename a few to start with something other than "vlc"."
113 exit
114 fi
115
116 fi
117
118 fi
|
Wie gesagt, es luft alles so ab wie bei der Ermittlung des CD-ROM Pfads...
121 # 3. Detect VCD vs. SVCD and start vlc
122 # ====================================
123
124 if [ ! -e /boot/home/config/add-ons/kernel/file_systems ] || [ ! -e /boot/beos/system/add-ons/kernel/file_systems ] ; then
125
126 alert --idea "Couldn't find the vcdfs filesystem!" "Get it on BeBits" "Cancel" | read button
127 if [ $button -eq 0 ] ; then
128 /boot/beos/apps/NetPositive http://www.bebits.com/app/1490 &
129 fi
130 exit
131 fi
|
Jetzt berprfen wir, ob das bentigte VCD Dateisystem auf dem System installiert ist (124). Bzw., eigentlich prfen wir, ob es nicht vorhanden ist (daher das "!"). Da es zwei mgliche Installtionsorte gibt (der zweite dort oben ist eigentlich falsch, da alles unter /boot/beos/ dem System gehrt und der User Zusatztreiber etc. in $HOME/config/ sollte...), verknpfen wir die beiden Tests mit einem ODER, ||.
Ggf. geben wir dann einen Alert wie in den Zeilen 80ff aus, der direkt mit BeBits verbindet.
133 mkdir /videocd
134
135 mount -t vcdfs $CDROM_path /videocd
|
Jetzt "mounten" wir die (S)VCD. Dazu legen wir ein Verzeichnis an (124), das als sog. "mountpoint" dient und bergeben dann dem "mount" Befehl die Variable mit dem CDROM Pfad, unseren mountpoint und geben als Option "-t vcdfs" an, welches das Dateisystem der zu mountenden CD als bestimmt.
137 if [ -d /videocd/MPEGAV ] ; then # It's a VCD!
138
139 if [ ! -e /boot/home/config/bin/VCDGear ] ; then
140
141 alert --idea "Couldn't find the VCDGear binary!" "Get it on BeBits" "Cancel" | read button
142 if [ $button -eq 0 ] ; then
143 /boot/beos/apps/NetPositive http://www.bebits.com/app/1490 &
144 fi
145 exit
146 fi
|
VCDs zeichnen sich dadurch aus, dass sich eine Videodatei AVSEQ01.DAT im Verzeichnis MPEGAV befindet. In Zeile 137 testen wir das und fahren fort, falls dem so ist.
Wie vorher mit dem VCD Filesystem prfen wir dann ob VCDGear installiert ist.
148 VCDGear -raw2mpg -fix /videocd/MPEGAV/AVSEQ01.DAT $HOME/vcd_mpg_out.mpg &
149 sleep 3
150
151 $VLC_path $HOME/vcd_mpg_out.mpg # Start viewing the VCD
152
153 kill VCDGear
154 rm $HOME/vcd_mpg_out.mpg
155 fi
|
Zeile 148 ist der Aufruf von VCDGear, welches im Homeverzeichnis des Users eine entsprechend konvertierte Datei erzeugt, die dann nach 3 Sekunden Warten (149) an den VLC Viewer dessen Pfad sich in der Variablen "VLC_path" befindet, bergeben wird. Im Gegensatz zum evtl. Aufruf des Browsers fr einen Download weiter oben, verzichten wir hier auf ein "&" am Ende des Kommandos wodurch unser Script solange angehalten wird, bis der VLC Player geschlossen wird.
Dann geht's weiter und wir beenden VCDGear (153) und lschen dessen temporr angelegte Datei (154).
158 if [ -d /videocd/MPEG2 ] ; then # It's a SVCD!
159
160 $VLC_path /videocd/MPEG2/AVSEQ01.MPG # Start viewing the SVCD
161 fi
|
War es im vorigen Test keine VCD, testen wir nun auf SVCD, dessen charakteristisches Verzeichnis MPEG2 lautet. Hier brauchen wir kein VCDGear und bergeben einfach die immer AVSEQ01.MPG benannte Datei an VLC.
164 # 4. Cleanup
165 # ==========
166
167 unmount /videocd
168 rmdir /videocd
169 rm /tmp/cddev.txt
170 rm /tmp/cdlist.txt
171 rm /tmp/vlclist.txt
172 rm /tmp/vlcpath.txt
173
174 # End of script
|
Kehren wir aus dem VLC Player zurck, "unmounten" wir die (S)VCD, und lschen das mountpoint Verzeichnis und evtl. angelegte Dateien. Fertig!
Boah...! Ein ganz schner Haufen Arbeit! Einiges htte man bestimmt krzer oder eleganter lsen knnen (ich denke da z.B. an Listennumerierungen, die man auch schn mit "sed" htte machen knnen), aber so ist es ausfhrlicher und bleibt fr Anfnger (zu denen ich mich auch zhle) verstndlich.
Mittlerweile soll VLC auch mit VCDs zurechtkommen, so dass VCDGear eigentlich gar nicht mehr gebraucht wird. Auch ist mir whrend ich mein Script hier beschrieben habe eine Idee gekommen, wie man auf die ganze CD-ROM Erkennung verzichten kann...
Aber nach Stunden des Schreibens wollte ich nicht wieder alles ber den Haufen werfen. Und seinen Zweck erfllt es ja immer noch; und sei es als abschreckendes Beispiel :)
Mitverantwortlich fr dieses Script waren zum einen BePage, dessen Originalscript fr Be(SVCD_Player v0.05 ich ja verwurstet habe und Scot Hacker's BeOS Bible dessen Scripting Kapitel eine hervorragende Einfhrung ist.
lichtgestalt