foobar2000 WAP Remote Controller

empty 15.07.04 11:01

WAP lärpäke foobar2000 :n kontrollointiin. Osaa muutamat foobar2000 :n peruskomennot. Tarvitsee toimiakseen HTTP Writer pluginin.

 Tekstiversio  Arvo: 3 (3 ääntä)  Äänestä: +  -
<?php
/*
 * Foobar2000 WAP Remote Controller
 *
 *   Simppeli WAP käyttöliittymä foobar2000 :n HTTP Writer -pluginille,
 *   joka mahdollistaa foobar2000 :n hallitsemisen etänä HTTP-
 *   protokollan kautta.
 *
 *   Soitettavan kappaleen tietojen esitystapaa ei aseteta tässä
 *   skriptissä, vaan se tottelee HTTP Writer pluginin asetuksiin syötettyä
 *   muotoa.
 *   
 *
 * Tarvittavat palikat:
 *   - Foobar2000 <http://foobar2000.com/>
 *   - HTTP Writer <http://www.abo.fi/~ernylund/foobar/>
 *
 *
 * Copyright (c) 2004, Joona Kulmala <joona at fiveam dot org>
 *
 */



//
// Asetukset
//
 
$host = '';                    // HTTP Writer serverin osoite
$port = 4800;            // Serverin portti, oletus 4800
$passwd = '';            // Salasana, mikäli olet asettanut


$cmnds = array(
        'Random',
        'Previous',
        'Next',
        'Start',
        'Stop',
);
 


// Headerit kuntoon, tarjoillaan WML :aa HTML :n sijaan
header("Content-type: text/vnd.wap.wml");

// Validi WML maan perii
print "<?xml version=\"1.0\"?>\n<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \n\t\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";


// Aloitellaan (t)ulostusta
print "<wml>\n<card id=\"foobar2k\" title=\"Foobar2k\">\n<p>\n";

// Muodostetaan query-string
$query = ($passwd ? '?pwd=' . $passwd . '&' : '?') . ($_GET['cmd'] ? $query .= 'cmd=' . $_GET['cmd'] : "");

// Tarkistetaan, että serveriin saadaan yhteys, muuten lykätään ulospäin
// virheilmoitusta
if (@fsockopen($host, $port))
{
        // Yritetaan perustyperästi hakea kamaa file() funktiolla
        // HTTP Writer -serveriltä. Vaatii tietenkin php.ini :sta
        // URL-tuen fopen() funktiolle.
        $ret = file(sprintf("http://%s:%d/%s", $host, $port, $query));
       
        // Oletetaan, että serveri palauttaa ensimmäisellä rivillä
        // juuri pyörimässä olevan levyn.
       
        if ($ret[0])
                $np = $ret[0];
        else
                $np = 'Player stopped.';
       
       
        // Tulostetaan soimassa oleva levy.
        print $np . "<br /><br />\n\n";
       
       
        // Tulostellaan hallintanamiskat
        foreach ($cmnds as $c)
                printf("<a href=\"%s?cmd=Playback/%s\">- %s</a><br />\n", $_SERVER['PHP_SELF'], $c, $c);

}
else
{
        print "Yhteyttä palvelimeen ei voitu muodostaa.";
}

// Lopetetaan dokumentti
print "</p>\n</card>\n</wml>";
?>

editoitu: 13:27 16.7.04
dredge 13:12 16.7.04 
Ethän sinä sitä voi killata tuolla välissä jos tulee erroria, jää print "</p>\n</card>\n</wml>"; ajamatta ja sivu ei toimi luurissa. Viittaan siis tuohon "Yhteyttä palvelimeen ei voitu muodostaa." -riviin.
if(@fsockopen($host, $port)) {
    $ret = file(sprintf("http://%s:%d/%s", $host, $port, $query));
    //+loput rivit tähän väliin tuolta
} else {
    print "Yhteyttä palvelimeen ei voitu muodostaa.";
}
print "</p>\n</card>\n</wml>";
empty 14:48 16.7.04 
Totta. Todellisuudessa en edes testannut ko. pätkää enää tuossa muodossa luurilla, siksi tuollainen kämmi. Kirjoittelin sen vaan vähän edustavampaan muotoon omasta purkkavirityksestäni. Editoinpa vähän.
editoitu: 23:41 14.8.04
TiM 23:41 14.8.04 
Mikäs mulla on vikana, kun tulee "Parse error: parse error, unexpected T_DNUMBER in d:\docs\foobar.php on line 28" tuommoinen virheilmoitus?
oipo 20:11 3.3.05 
Vielä tämä kannattais lisää tohon, ettei tartte käyttää sivun päivitystä puhelimella:
header("Cache-Control: no-cache");