Web-Jukebox: IceDJ
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/icedjZum 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/perloder 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.confund 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 8010und danach das IceDJ-Script. Diesem Script wird als Option die zu benutzende Konfigurationsdatei mitgeliefert:
>> ./icedj.pl data/MyOwnRadio.confSollte 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...
|
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 restartoder 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 |
ForbiddenYou 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.plerlaubt 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 dataAuß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
Eigene Anmerkung eintragen