XChat und Xine

aus HaBo WiKi, der freien Wissensdatenbank von http://www.hackerboard.de
Wechseln zu: Navigation, Suche
XChat unter Ubuntu 7.1

Dieser Artikel beschreibt einen Weg anderen Usern im IRC über XChat zu zeigen was ihr mit dem Medienwiedergabeprogramm Xine grade anguckt oder anhört. Anders als noatun oder mplayer gibt xine nämlich keine Informationen über die aktuell wiedergegebene Datei zurück ans System.

Voraussetzung

Ihr müsst eine XChat- und eine xine-Installation unter Linux verwenden. Kenntnisse in Perl und dem Einfügen von Scripten in XChat wären vorteilhaft.

Lösung

Um dieses Problem zu umgehen empfiehlt es sich auf die filepointer von Linux zurückzugreifen. Sobald xine läuft findet man unter

/proc/$pid/fd/

eine Liste von Informationen über das laufende Programm. An Punkt 5 ist die Datei genannt, auf die xine gerade zugreift. Und diesen filepointer gilt es nun für XChat auslesbar zu machen. Um das Vorweg mal zu testen, starte in xine eine mp3-Datei und ruf in der Konsole folgendes auf:

ps ax | grep /usr/bin/xine | grep -v grep | awk '{ print \$1 }'

gibt die PID von xine zurück

ls -all /proc/$pid/fd/ | cut -c37,42- | grep '5/'

gibt den Dateinamen der Datei zurück, welche xine gerade abspielt (an Stelle von $pid bitte die eben ausgelesene PID einsetzen)

Hierzu gibt es folgenden perl-Code-Schnippsel, den ihr in euer Script einfügen müsst:

 $pidget="ps ax | grep /usr/bin/xine | grep -v grep | awk '{ print \$1 }' ";
 sub display_xine
 {
   open( HANDLE, $pidget."|" );
   if( $pid = <HANDLE> )
       {
          $pid=~s/\n//g;
          $getfile=`ls -all /proc/$pid/fd/ | cut -c37,42- | grep '5/'`;
          IRC::command( "\002$type\002 $getfile");
          close(HANDLE);
       }
   else
       {
          IRC::print( "Dein xine läuft nicht!" );
          close(HANDLE)
       }
   return 1;
 }

Nach der Ausführung der Funktion display_xine sollte (bei laufendem xine) der Dateiname der gerade von xine wiedergegebenen Datei ausgegeben werden. Die Ausgabe könnt ihr natürlich noch selber anpassen (z.B. mittels des Programms id3info den ID3-Tag einer mp3-Datei auslesen).

Hinweis

Die oben genannten Kommandos wurden unter MandrakeLinux 10.1 ausgeführt und getestet. Auf anderen Systemen könnte es Verschiebungen z.B. beim Befehl cut geben. In diesem Fall bitte die dazugehörige man-page aufrufen.

Computer Forum
Computer Forum
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge