Home   Artikel   Archiv   Forum   Impressum  
Artikel vom 25.1.2000
Autor: Ronny Ziegler
Languages: en nl
Artikel bewerten:

Printer Druckversion
Helfen Sie mit!
 

Web-Jukebox: IceDJ

Was nutzt schon eine Inter-/Intranet Radiostation, wenn man das Programm nicht mitbestimmen kann.
Mittels IceDJ kann jeder sich seine Lieblingstitel wünschen, und der Radiosender wird zur weltweiten Jukebox.

Fähigkeiten

Bei IceDJ handelt es sich eigentlich um eine Sammlung von CGI-Scripten, mittels denen man über einen Web-Browser einen bestehenden Icecast-Server ansteuern kann.
Das Programm fungiert dabei als eine Art Jukebox. Aus einer Liste von angebotenen Titeln kann man sich seine Lieblingslieder aussuchen. Diese werden dann, sobald sie an der Reihe sind, auch gespielt.
Zusätzlich kann man zeitgesteuert bestimmte Radioprogramme senden, z.B. jeden Tag zu einer bestimmten Uhrzeit die bisherigen Top 10 Titel wiederholen.

Installation

Leider gestaltet sich die Installation von IceDJ nicht ganz unkompliziert - aber keine Angst, ich hab's schließlich auch geschafft. Auch für dieses Programm gilt das gleiche wie für viele andere Linux-Programme:
Hat man sich erst einmal durch die Installation hindurchgearbeitet, läuft das Programm bis in alle Ewigkeiten ohne weiteren Handschlag.
Als erstes sollte man IceDJ aus dem Internet herunterladen:
http://www.remixradio.com/icedj/
Die momentan aktuelle Version ist 0.9.14, und alle folgenden Installationsschritte werden sich auf diese Version beziehen.

Die Datei sollte zuerst in das tmp-Verzeichnis entpackt werden:

  >> tar zxvf icedj-0.9.14.tar.gz -C /tmp/
  
und danach das erzeugte Verzeichnis vom Web-Administrator (teilweise wwwadmin) auf den Web-Server kopiert werden (Das Verzeichnis des Web-Servers befindet sich bei SuSE unter /usr/local/httpd/)
  >> cp -a /tmp/icedj-0.9.14/ /usr/local/httpd/htdocs/icedj
  >> cd /usr/local/httpd/htdocs/icedj
  
Zum Starten von IceDJ wird das Programm icedj.pl benutzt. Dieses sucht allerdings den Perl-Interpreter unter /opt/bin/, schlechte Chancen, diesen unter gängigen Linux-Distributionen dort zu finden. Also müssen die meisten Benutzer die erste Zeile dieses Scriptes ändern nach
   #!/usr/bin/perl
  
oder wo sich Ihr Perl-Interpreter auch immer befinden mag.

Als nächstes müssen wir eine Konfigurationsdatei anlegen, die icedj.pl dann später auswerten soll. Dafür kopieren wir die mitgelieferte Beispieldatei,

  >> cp data/example.conf data/MyOwnRadio.conf
  
und passen sie an unsere eigenen Bedürfnisse an. Die meisten Einträge erklären sich von selbst. Im Folgenden stehen diejenigen Einträge, die unbedingt angepaßt werden sollten:

data/MyOwnRadio.conf
   #Der Name Ihres Radio-Senders
   name		NetMag Broadcast
  
   #Das Genre der von Ihnen angebotenen Musik
   genre		various
  
   #Ihre URL des Servers, auf dem IceDJ läuft
   url		http://www.linuxnetmag.de
  
   #Name des Servers auf dem Icecast läuft. Zumeist der selbe Rechner
   #auf dem auch iceDJ läuft. Hier sollten Sie lieber die
   #IP-Nummer nehemen. In Lokalen Netzen kann es ansonsten
   #zu Problemen kommen
   server		192.168.1.1
  
   #Der Port, unter dem Icecast angesprochen wird. In unserem 
   #Beispiel 8010
   port		8010
  
   #Wenn Sie nicht öffentlich aufgelistet werden wollen benutzen
   #Sie hier
   public		0
  
   #Die Bitrate Ihrer mp3-Dateien (im Lokalen Netz 128 bit)
   #Leider können Sie dann nur MP3-Dateien einer Bitrate abspielen
   bitrate		128
  
   #Das Passwort, welches sie bei der Icecast-Konfiguration als
   #Admin_Passwd eingestellt haben
   password	meinpasswort
  
   [...]
  
   #Das Verzeichnis, in dem sich die mp3-Dateien befinden
   mp3root		/tmp/mp3/
  
   #Den nächsten Eintrag sollten Sie kommentieren
   #source
  
   #Das Verzeichnis, in das die IcecDJ-Webseiten kopiert werden sollen 
   webroot		/usr/local/httpd/htdocs/icedj/web/
  
   #Ihre E-Mail-Adresse, falls Fehler auftreten
   email		webmaster@linuxnetmag.de
  
   #Normalerweise kann ein Besucher nur eine begrenzte Anzahl an Titel
   #wählen. Von dieser Beschränkung können Sie hier bestimmte 
   #IP-Adressen ausschließen
   specialip	255.255.255.255 128.128.128.*
  
   #Benutzer, die von der Benutzung von IceDJ ausgeschlossen werden
   #kommen hier hin
   blockip		192.168.13.24
  
   #Wir wollen kein Aufsehen erregen, also
   updateMP3spy	0
  
   [...]
  
   #Wir wollen keine Statistiken, also eine Raute vor die beiden
   #Statistik-Variablen
   #serverlog      http://icecast.yourserver.com/~icecast/iceca...
  
   #server statistics  <multi>
   #serverstat	 http://icecast.yourserver.com/~icecast/icecas... 
  
   [...]
  
   #Das Verzeichnis, in dem sich die icedj-Scripte befinden
   scriptpath /usr/local/httpd/htdocs/icedj/
  
   #Der Pfad zum Programm shout
   streamer /usr/local/icecast/bin/shout
  
  


Nun müssen wir noch die Playliste aller asuwählbarer Titel aufstellen.
Diese Datei befindet sich im Unterverzeichnis data. In dieser Datei werden hintereinander der MP3-Name, der Interpret, der Titel des Songs, und bei Bedarf auch eine zugehörige Internetseite eingegeben.
Alle Angaben werden mittels Tabulator getrennt. Benutzen sie jeweils nur einen Tabulator, ansonsten interpretiert IceDJ die Eingabe als Leeres Feld.
Dadurch kann man innerhalb der Playliste leider die Einträge nicht spaltenweise untereinander anordnen, und die Tabelle wird schnell unübersichtlich:

data/playlist -- Beispieleinträge
  Sting__Fields_Of_Gold.mp3	Sting	Fields Of Gold	http://www.sting.uk
  Along_Comes_Mary.mp3	Bloodhound Gang	Along Comes Mary
  


Als letztes müssen noch die Template-Dateien angepaßt werden, aus denen IceDJ die HTML-Seiten generiert. Diese Seiten befinden sich im Unterverzeichnis web.
So muß in der Datei playlist.tmpl der Eintrag der Form

  <A HREF="http://www.yourserver.com/cgi-bin/request.pl?conf=<!conf>&uniqueID=<!uniqueID>"><!title></A>
  
ersetzt werden zu einem Verweis auf den eigenen Server, also bei unserer Installation nach
  <A HREF="http://mein.server.de/icedj/cgi-bin/request.pl?conf=<!conf>&uniqueID=<!uniqueID>"><!title></A>
  
Nachdem wir nun alles konfiguriert haben, kann IceDJ das erste mal testweise gestartet werden.
Dafür muß als erstes der Icecast-Server gestartet werden (auf Port 8010):
  >> /usr/local/icecast/bin/icecast -P 8010
  
und danach das IceDJ-Script. Diesem Script wird als Option die zu benutzende Konfigurationsdatei mitgeliefert:
  >> ./icedj.pl data/MyOwnRadio.conf  
  
Sollte jetzt alles funktionieren, fängt IcdDJ an die Mp3-Musik an den Shoutcast-Server zu übertragen:

IcedDJ Ausgabe
  reading config from data/MyOwnRadio.conf
  
  -----------------------------
    i c e d j - Version 0.9.14
  -----------------------------
  
  IceDJ comes with NO WARRANTY, to the extent permitted by law.
  You may redistribute copies of IceDJ under the terms of the
  GNU General Public License.
  For more information about these matters, see the file named COPYING.
  
  -----------------------------
  
  Initializing Playlist...
  
  Spawning Shout...
  starting 128Kbps stream...
  Playing /tmp/mp3/Along_Comes_Mary.mp3
  [3:20] Size: 3203239 Bitrate: 128000 (41067 bytes/dot)
  [...playing  Along Comes Mary by Bloodhound Gang
  ....Updating Webpages...
  


Gleichzeitig beginnt IceDJ die Web-Seiten zu erzeugen und auf den Server zu kopieren.

Web-Seiten

Sie finden die von IceDJ erzeugten Seiten jetzt auf Ihrem Server im Unterverzeichnis /icedj/web/.
Gehen Sie nun auf die Seite /icedj/web/playlist.html. Auf dieser Seite finden Sie am unteren Ende eine Liste aller Titel, die in der Datei /data/playlist eingetragen wurden. Um nun einen Titel für die Jukebox auszuwählen, klicken Sie einfach auf den dazugehörigen Link.
Sollte statt einer neuen HTML-Seite ein Downloadfenster im Browser geöffnet werden, dann ist Ihr Apache Web-Server noch nicht richtig konfiguriert, und erkennt das CGI-Script nicht als auszuführende Datei.
Für die entsprechende Konfiguriation führen Sie folgende Schritte aus (Siehe auch Artikel Apache als Web-Server).
In der Datei /etc/httpd/srm.conf (oder wo sich die Konfigurationsdateien von Apache bei Ihnen befinden) benötigen Sie im Abschnitt ScriptAlias folgenden Eintrag:

Datei /etc/httpd/srm.conf
   # ScriptAlias: This controls which directories contain server scripts. 
   # Format: ScriptAlias fakename realname 
  
   ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/" 
   ScriptAlias /icedj/cgi-bin/ "/usr/local/httpd/htdocs/icedj/cgi-bin/"
  


Hier müssen Sie also das Verzeichnis einfügen, in dem sich die IceDJ-Scripte befinden.

Um die Änderungen zu aktivieren, starten Sie den Web-Server neu (als root):

  >> /sbin/init.d/apache restart
  
oder booten Sie notfalls neu, falls sie das Init-Script nicht finden sollten.
Versuchen Sie es nun, erneut in der Datei playlist.html auf einen Titel zu klicken. Sollten Sie nun statt eines Downloadfensters ein Fehlermeldung folgender Art erhalten:

Fehlermeldung

Forbidden

You don't have permission to access /icedj/cgi-bin/request.pl on this server.


Apache/1.3.3 Server at mein.server.de Port 80

Dann sind die Rechte für die CGI-Scripte noch nicht richtig gesetzt.
Ein kurzes

  >>chmod o+x request.pl
  
erlaubt auch allen anderen Besuchern der Web-Seite das Script zu benutzen.
Zusätzlich müssen die Besucher noch Schreibberechtigung für das data-Verzeichnis erhalten:
  >> chmod o+w data
  
Außerdem müssen Sie in Zeile 57 des Scriptes cgi-bin/reques.pl folgenden Eintrag ändern:
  $CONF{'datadir'} = "$DOCROOT/data/";
  
Geben Sie hier stattdessen den absoluten Pfad zum data-Verzeichnis an:
  $CONF{'datadir'} = "/usr/local/httpd/htdocs/icedj/data/";
  

Feinarbeit

Nun sollte alles wie gewünscht funktionieren. Leider sind die mitgelieferten Templates der generierten HTML-Seiten ziemlich düster und überfrachtet mit unnützen Statistiken.
Um die generierten Seiten an eigene Bedürfnisse anzupassen, müssen die Template-Dateien im web-Unterverzeichnis mit einem beliebigen Text-Editor angepaßt werden. Wenn Sie sich etwas Arbeit sparen wollen, benutzen Sie ruhig die von uns generierten "Templates" (download templates).
Kopieren sie diese Templates über die mitgelieferten Dateien, nachdem sie von den Original-Templates eine Sicherheitskopie angelegt haben.
Sie können die Templates sogar austauschen, während IceDJ läuft, ohne das es zu Problemen kommt, da das Programm nur in einem Abstand von einigen Sekunden auf die Dateien zugreift.

Nun können sie mit einem beliebigen MP3-Player eine Verbindung zum Icecast-Server herstellen, und über die Web-Seiten die jeweils gewünschten Titel auswählen, und das weltweit.
Allerdings hat das Programm immer noch einige Schwächen.
Neben der etwas umständlichen Installation, ist das Programm nur in der Lage, mp3-Dateien einer bestimmten Bitrate zu übertrgen. Sollte ein Musikstück haken und immer wieder von Pausen unterbrochen werden, so liegt dies daran, daß die Mp3-Datei in einer anderen Bitrate encodiert wurde.
Außerdem sollte man IceDJ nicht beim Booten automatisch starten (z.B. durch ein Init-Script), denn wenn das Script nicht die in der Playlist aufgeführten Dateien findet, versucht es immer wieder diese zu laden und verbraucht dabei immer mehr RAM-Speicher, bis schließlich der Swap und RAM aufgebraucht sind und der Rechner sich nicht mehr bedienen läßt.
Deshalb sollte man IceDJ immer noch per Hand starten, oder sicher sein, daß sich die MP3-Dateien immer am selben Platz befinden.


Links:
Homepage IceDJ: http://www.remixradio.com/icedj/




Anmerkungen zu diesem Artikel


Bisher keine Kommentare


Eigene Anmerkung eintragen