Gå til innhold

Få opp info på en hjemmeside fra SHOUTcast


Anbefalte innlegg

Videoannonse
Annonse

Lyttere og sanginfo:

 

<?php
include("shoutcast.class.php");

function ConvertSeconds($seconds) {
$tmpseconds = substr("00".$seconds % 60, -2);
if ($seconds > 59) {
 if ($seconds > 3599) {
 	$tmphours = substr("0".intval($seconds / 3600), -2);
 	$tmpminutes = substr("0".intval($seconds / 60 - (60 * $tmphours)), -2);
 	
 	return ($tmphours.":".$tmpminutes.":".$tmpseconds);
 } else {
 	return ("00:".substr("0".intval($seconds / 60), -2).":".$tmpseconds);
 }
} else {
 return ("00:00:".$tmpseconds);
}
}

$shoutcast = new ShoutCast();
$shoutcast->host = "127.156.123.156";
$shoutcast->port = "8000";
$shoutcast->passwd = "passord";

if ($shoutcast->openstats()) {
// We got the XML, gogogo!..
if ($shoutcast->GetStreamStatus()) {
 echo "<b>Lyttere:</b> ".$shoutcast->GetCurrentListenersCount()." / ".$shoutcast->GetMaxListenersCount()."<p>";
 echo "<tr><td><b>Nå spilles: </b></td><td>".$shoutcast->GetCurrentSongTitle()."</td></tr>\n";
 
} else {
 echo "Serveren er oppe, men ingen DJ er på!..";
}
} else {
// Ohhh, damnit..
echo $shoutcast->geterror();
}
?> 

 

 

Legg denne i samme mappe:

 

<?php

/*******************************************************************
* shoutcast.class.php
* Version: 0.1
* Author: Henrik Malmberg
* Copyright (C) 2002, Henrik Malmberg
* [email protected]
* http://yoda.ih.nu/
*
*******************************************************************
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************/

class ShoutCast {
// Public
var $host;
var $port;
var $passwd;

//Private
var $_xml;
var $_error;

function openstats() {
 $fp = fsockopen($this->host, $this->port, $errno, $errstr, 10);
 If (!$fp) {
 	$this->_error = "$errstr ($errno)";
 	return(0);
 } else {
     fputs($fp, "GET /admin.cgi?pass=".$this->passwd."&mode=viewxml HTTP/1.0\r\n");
     fputs($fp, "User-Agent: Mozilla\r\n\r\n");
     while (!feof($fp)) {
         	$this->_xml .= fgets($fp, 512);
     }
     fclose($fp);

     if (stristr($this->_xml, "HTTP/1.0 200 OK") == true) {
     	// <-H> Thanks to Blaster for this fix.. trim();
     	$this->_xml = trim(substr($this->_xml, 42));
 	} else {
   $this->_error = "Bad login";
   return(0);
 	}

 	$xmlparser = xml_parser_create();
 	if (!xml_parse_into_struct($xmlparser, $this->_xml, $this->_values, $this->_indexes)) {
   $this->_error = "Unparsable XML";
   return(0);
 	}

 	xml_parser_free($xmlparser);

 	return(1);
 }
}

function GetCurrentListenersCount() {
 return($this->_values[$this->_indexes["CURRENTLISTENERS"][0]]["value"]);
}

function GetPeakListenersCount() {
 return($this->_values[$this->_indexes["PEAKLISTENERS"][0]]["value"]);
}

function GetMaxListenersCount() {
 return($this->_values[$this->_indexes["MAXLISTENERS"][0]]["value"]);
}

function GetReportedListenersCount() {
 return($this->_values[$this->_indexes["REPORTEDLISTENERS"][0]]["value"]);
}

function GetAverageListenTime() {
 return($this->_values[$this->_indexes["AVERAGETIME"][0]]["value"]);
}

function GetServerGenre() {
 return($this->_values[$this->_indexes["SERVERGENRE"][0]]["value"]);
}

function GetServerURL() {
 return($this->_values[$this->_indexes["SERVERURL"][0]]["value"]);
}

function GetServerTitle() {
 return($this->_values[$this->_indexes["SERVERTITLE"][0]]["value"]);
}

function GetCurrentSongTitle() {
 return($this->_values[$this->_indexes["SONGTITLE"][0]]["value"]);
}

function GetIRC() {
 return($this->_values[$this->_indexes["IRC"][0]]["value"]);
}

function GetAIM() {
 return($this->_values[$this->_indexes["AIM"][0]]["value"]);
}

function GetICQ() {
 return($this->_values[$this->_indexes["ICQ"][0]]["value"]);
}

function GetWebHitsCount() {
 return($this->_values[$this->_indexes["WEBHITS"][0]]["value"]);
}

function GetStreamHitsCount() {
 return($this->_values[$this->_indexes["STREAMHITS"][0]]["value"]);
}

function GetStreamStatus() {
 return($this->_values[$this->_indexes["STREAMSTATUS"][0]]["value"]);
}

function GetBitRate() {
 return($this->_values[$this->_indexes["BITRATE"][0]]["value"]);
}

function GetSongHistory() {
 for($i=1;$i<sizeof($this->_indexes['TITLE']);$i++) {
 	$arrhistory[$i-1] = array(
       	"playedat"=>$this->_values[$this->_indexes['PLAYEDAT'][$i]]['value'],
       	"title"=>$this->_values[$this->_indexes['TITLE'][$i]]['value']
       );
 }

 return($arrhistory);
}

function GetListeners() {
 for($i=0;$i<sizeof($this->_indexes['USERAGENT']);$i++) {
 	$arrlisteners[$i] = array(
       	"hostname"=>$this->_values[$this->_indexes['HOSTNAME'][$i]]['value'],
       	"useragent"=>$this->_values[$this->_indexes['USERAGENT'][$i]]['value'],
       	"underruns"=>$this->_values[$this->_indexes['UNDERRUNS'][$i]]['value'],
       	"connecttime"=>$this->_values[$this->_indexes['CONNECTTIME'][$i]]['value'],
       	"pointer"=>$this->_values[$this->_indexes['POINTER'][$i]]['value'],
       	"uid"=>$this->_values[$this->_indexes['UID'][$i]]['value'],
       );
 }

 return($arrlisteners);
}

function geterror() { return($this->_error); }
}

?>

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...