Hi,

As seen below a class file for php and slim, however.. how does it
work? i mean i can understand i have to include this, and then ask for
one of the function but none seem to work for me.

Anyone used this for his website or similar and have an example?

Thanks,


<?php

/**
*
* Slimp3-Class
* for querying the slimp3 and the squeezebox players
*
* feel free to modify and use it whereever you want.
* would be nice if you could send me your changes,
* 
* Homepage:
* http://trendwhores.de/slimclass.php
*
* Tobias Schlottke <tschlottke chr(64) virtualminds chr(46) de>
* http://www.trendwhores.de
*
* Modifications by Andreas <php  chr(64) simply  chr(46) nu>
* + Added more options to slimp3()
* + Added playlist() /w related options
* + Modified display() to get strings with spaces instead of +'s
provided by urlencode
* + Modified _parse() to handle new options. Quick'n'dirty hack,
could probably be prettier!
*
* License: GPL
*
*/

class slim {

var $host = "localhost";
var $port = 9090;

var $_connection;

var $playerindex;
var $playercount;


function slim($host = NULL, $port = 9090) {

if ($host && $port) {
$this->host = $host;
$this->port = $port;
}

if (!$this->_connection = fsockopen($this->host,
$this->port)) {
return false;
}

$this->playercount = $this->_psend("player count ?");
for($i = 0; $i < $this->playercount; $i++) {
$this->playerindex[$i]['name'] = $this->_psend("player
name $i ?");
$this->playerindex[$i]['ip'] = $this->_psend("player ip
$i ?");
$this->playerindex[$i]['address'] =
$this->_psend("player address $i ?");
# Added some more options /andreas
$this->playerindex[$i]['mode'] =
$this->_psend($this->playerindex[$i]["address"] . " mode ?");
$this->playerindex[$i]['power'] =
$this->_psend($this->playerindex[$i]["address"] . " power ?");
$this->playerindex[$i]['volume'] =
$this->_psend($this->playerindex[$i]["address"] . " mixer volume ?");
$this->playerindex[$i]['treble'] =
$this->_psend($this->playerindex[$i]["address"] . " mixer treble ?");
$this->playerindex[$i]['bass'] =
$this->_psend($this->playerindex[$i]["address"] . " mixer bass ?");
$this->playerindex[$i]['tracks'] =
$this->_psend($this->playerindex[$i]["address"] . " info total songs
?");
$this->playerindex[$i]['albums'] =
$this->_psend($this->playerindex[$i]["address"] . " info total albums
?");
$this->playerindex[$i]['artists'] =
$this->_psend($this->playerindex[$i]["address"] . " info total artists
?");
$this->playerindex[$i]['genres'] =
$this->_psend($this->playerindex[$i]["address"] . " info total genres
?");

}

return true;
}

function nowplaying($player = 0) {
$song = array(
"artist" => $this->_psend("artist $player ?"),
"title" => $this->_psend("title $player ?"),
"path" => $this->_psend("path $player ?"),
"duration" => $this->_psend("duration $player ?"),
"genre" => $this->_psend("genre $player ?"),
"album" => $this->_psend("album $player ?")
);
return $song;
}

# Added playlist() for related options /andreas
function playlist($player = 0) {
#Information related to playlist!
$index = $this->_psend("playlist index ?");
$index++;
$song = array(
"index" => $index,
"total" => $this->_psend("playlist tracks ?"),
# Spaces added to the end of the two first below,
quick'n'dirty fix for parsing error... ;)
"nextartist" => $this->_psend("playlist artist " .
$index . " "),
"nexttitle" => $this->_psend("playlist title " . $index
. " "),
"shuffle" => $this->_psend("playlist shuffle ?"),
"repeat" => $this->_psend("playlist repeat ?")
);
return $song;
}


function display($l1, $l2, $duration = 5, $player = 0) {
#$this->_send("display ".urlencode($l1)."
".urlencode($l2)." ".$duration);
# above code gave me urlencoded strings on my displat, ie
"Hello%20World", below did not... /andreas (php  chr(64)  simply 
chr(46) nu)
$l1 = str_replace(" ", "%20", $l1);
$l2 = str_replace(" ", "%20", $l2);
$this->_send("display ".$l1." ".$l2." ".$duration);
}

function cdisplay() {
return urldecode($this->_send("display ? ?"));
}

function close() {
$this->_send
("exit");
return true;
}
# Modified by andreas (php  chr(64) simply  chr(46) nu)
# Don't ask why I did stuff here, don't remember ;)
function _parse($string, $cmd = NULL) {

if (!$cmd);
$cmd = $this->_lastcmd;

$quoted = preg_quote(substr($cmd, 0, -1), "\\");

if (preg_match("/^".$quoted."(.*)/i", $string, $matches))
{
$dec = urldecode(trim($matches[1]));
return $dec;
} elseif(preg_match("/^".substr($quoted, 0, -2)."(.*)/i",
$string, $matches)) {
$dec = urldecode(trim($matches[1]));
if (substr($dec, -1, 1) == '?')
return substr($dec, 0, -1);
else
return $dec;

# extra parsing for cmd's where MAC address is
involved. Me not good at regexps so... ;)
} elseif(preg_match("/^".$quoted."(.*)/i",
urldecode(trim($string)), $matches)) {
$dec = trim($matches[1]);
if ($dec == "0")
return "play";
else
return $dec;
} else {
return "unable to parse reply: ".$string."<br>(cmd was:
$cmd)";
}
}

function _send($string) {

$this->_lastcmd = $string;

if (fputs($this->_connection, $string."\n"))
return fgets($this->_connection);
else
return false;
}

function _psend($string) {
return $this->_parse($this->_send($string));
}

}

?>


-- 
riemers
------------------------------------------------------------------------
riemers's Profile: http://forums.slimdevices.com/member.php?userid=4888
View this thread: http://forums.slimdevices.com/showthread.php?t=22798

_______________________________________________
plugins mailing list
plugins@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/plugins

Reply via email to