Streamfirma auf FacebookFolgen Sie Streamfirma auf Twitter!

Hörerzahlen auslesen für IceCast

Forum   Pfeil   Webentwicklung   Pfeil   Hörerzahlen auslesen für IceCast

Seiten: 1
Tobias B.
dabei seit: 28.02.2009
Beiträge: 12


Erstellt am:
12.05.2010 | 16:58
Auslesen der Hoererzahlen

guten Tag ;-)

heute habe ich ein kleines Tutorial vorbereitet, wie man die Hoererzahlen eines IceCast Mediaserver mittles PHP auslesen kann. Das ganze ist ein bisschen komplizierter als bei ShoutCast Servern, ich hoffe ich kann das Verfahren durch meine Erklaerung naeher bringen. Im folgenden der Quellcode:

<?php
// (c) Tobias Bambullis, streamfirma.de
function get_icecast_info($server_ip, $server_port, $admin_user, $admin_password) {
  $index = @file_get_contents("http://".$admin_user.":".$admin_password."@".
                              $server_ip.":".$server_port."/admin/stats.xml");

  if($index) {
    $xml = new DOMDocument();
    if(!$xml->loadXML($index)) return false;
    $arr = array();
    $listItem = $xml->getElementsByTagName("source");
    foreach($listItem as $element) {
        if($element->childNodes->length) {
            foreach($element->childNodes as $i) {
                $arr[$element->getAttribute("mount")][$i->nodeName] = $i->nodeValue;
            }
        }
    }
    return $arr;
  } return false;
}

$arr = get_icecast_info("sf1.streamfirma.de", "1502", "admin_user", "admin_password");
foreach($arr as $mount => $stats) echo "Auf dem Mountpoint ".$mount." befinden sich ".$stats["listeners"]." Listener!<br />";
?>

Wie funktioniert dieses Script?
Die Auswertungsdatei bei einem Icecast Server ist unter /admin/stats.xml zu finden. Es handet sich um eine XML Datei, die wir mit Hilfe des DOMDocument bearbeiten. Wenn die XML erfolgreich eingelesen wurde, sucht das Script alle Elementblöcke, die "source" heissen. Dieser Block enthällt alle Informationen über die verschiedenen Mountpoints. Im folgendem wird der angesprochene Block in ein Array geladen, welches folgene Struktur ausweist:
Array
(
    [/live.ogg] => Array
        (
            [artist] => Laurent Wolf
            [audio_bitrate] => 112001
            [audio_channels] => 2
            [audio_info] => samplerate=0;channels=0;quality=3%2e00
            [audio_samplerate] => 44100
            [channels] => 0
            [genre] => Various
            [ice-bitrate] => 112
            [listener_peak] => 0
            [listeners] => 0
            [listenurl] => http://localhost:1502/live.ogg
            [max_listeners] => unlimited
            [public] => 1
            [quality] => 3.00
            [samplerate] => 0
            [server_description] => Streamfirma Demo Account Auto DJ
            [server_name] => Streamfirma Demo Account Auto DJ
            [server_type] => application/ogg
            [server_url] => http://streamfirma.de
            [slow_listeners] => 0
            [source_ip] => 127.0.0.1
            [stream_start] => Wed, 12 May 2010 14:09:14 +0200
            [subtype] => Vorbis
            [title] => Walk The Line
            [total_bytes_read] => 142131954
            [total_bytes_sent] => 0
            [user_agent] => IceS 2.0.1
            [yp_currently_playing] => Laurent Wolf - Walk The Line
        )

)

Der erste Index enthällt den Mountpoint, der zweite die ausgelesenen Daten.
LG Tobias

Zitieren              
Seiten: 1

Antworten