Avatar billede amews_aj Nybegynder
14. april 2006 - 18:14 Der er 9 kommentarer og
2 løsninger

Hente indhold fra anden side?

Hejz@

Jeg vil gerne benytte SkypeWeb - altså hvor man kan se ens status på skype på ens hjemmeside.

Jeg vil gerne selv kunne beslutte hvordan status skal vises på min side. Jeg kan fra skypes side få min status ud som enten XML eller TXT (eller billede)

Jeg har forsøgt at hente indholdet af txt filen således:
$skypestatus = fopen("http://mystatus.skype.com/mit_brugernavn.txt", "r");

Men så får jeg følgende fejl:
Warning: fopen(http://mystatus.skype.com/mit_brugernavn.txt): failed to open stream: HTTP request failed! HTTP/1.1 406 Not Acceptable in /var/www/xxx.dk/public_html/skype.php on line 4

allow_url_fopen er On på serveren.

Hvad er der galt? Kan jeg på en anden måde få filen ned i en variabel...? (Filen er kun på en enkelt linje) Fx. "Online".
Jeg vil have den ned i en variabel for så at kunne sige
if ( $skypestatus = "Online" ) echo "noget";

Kan jeg det på andre måder?

Jeg har som sagt også adgang til en XML fil, hvordan kan jeg læse den med php?
http://mystatus.skype.com/mit_brugernavn.xml


(URL's er ændret)

Håber I kan give en hurtig og god hjælp!
På forhånd tak ! :D
Avatar billede horsmark Nybegynder
14. april 2006 - 18:24 #1
http://dk.php.net/manual/en/function.xml-parse.php hvis du læser lidt kommentarer kan du nok finde lidt kode så du kan få importeret xml´en korrekt :-)
Avatar billede noob2003 Nybegynder
14. april 2006 - 18:30 #2
ellers kan du hente skype status i php her  http://www.testingsite.dk/download/skypestatus.zip
Avatar billede horsmark Nybegynder
14. april 2006 - 18:36 #3
<?php
/**
* The class class.phpSkypeStatus.php
*
* The class.phpSkypeStatus.php class is for viewing the online status of a skype user
* please read: http://skype.com/share/buttons/status.html
*
* @package phpSkypeStatus
* @author Bastian Gorke <b.gorke@ipunkt.biz>
* @version 2006-03-01
*
* History:
*     2006-03-01: bug fix
*                 x error with getting xml/image is not longer shown
*     2006-02-13: initial version
*/
class    phpSkypeStatus
{
    var $skypeid;
   
    var $statusuri = "http://mystatus.skype.com/%s.xml";
    var $statusimguri = "http://mystatus.skype.com/%s/%s";
   
    var $str_status_xml = '';
   
    function phpSkypeStatus($id = ""){
        if ($id != "") {
            $this->setSkypeID($id);
        }
    }
   
    /**
    * set the skypeid for a user to check
    */
    function setSkypeID($id){
        $this->skypeid = $id;
    }
   
    /**
    * get status from skype mystatus server
    */
    function _retrieveStatus(){
        $this->str_status_xml =  @file_get_contents(sprintf($this->statusuri,$this->skypeid));
    }
   
    /**
    * returns the unprocessed xml/rdf data
    */
    function getXML(){
        $this->_retrieveStatus();
        return $this->str_status_xml;
    }
   
    /**
    * returns status text in specified language. defaults to english
    *
    * English    en
    * Deutsch    de
    * Francais    fr
    * italian    it
    * polish    pl
    * Japanese    ja
    * Spanish    es
    * Pt        pt
    * Pt/br    pt-br
    * Swedish    se
    * zh        zh-cn
    * Cn        zh-cn
    * Zh/cn    zh-cn
    * hk        zh-tw
    * tw        zh-tw
    * Zh/tw    zh-tw
    */
    function getText($lang = "en"){
        $match = array();
        $this->_retrieveStatus();
        $pattern = "~xml:lang=\"".strtolower($lang)."\">(.*)</~";
        preg_match($pattern,$this->str_status_xml, $match);
        return $match[1];
    }
   
    /**
    * get the status number
    *
    * 0    UNKNOWN            Not opted in or no data available.
    * 1    OFFLINE            The user is Offline
    * 2    ONLINE            The user is Online
    * 3    AWAY            The user is Away
    * 4    NOT AVAILABLE    The user is Not Available
    * 5    DO NOT DISTURB    The user is Do Not Disturb (DND)
    * 6    INVISIBLE        The user is Invisible or appears Offline
    * 7    SKYPE ME        The user is in Skype Me mode
    */
    function getNum(){
        $match = array();
        $this->_retrieveStatus();
        $pattern = "~xml:lang=\"NUM\">(\d)</~";
        preg_match($pattern,$this->str_status_xml, $match);
        return $match[1];
    }
   
    /**
    * returns a php image ressource defined by type
    * {@see #getImagePNG($type)}
    *
    * TODO at this moment, only supports english language images
    *
    * type-modes:
    * balloon            - Balloon style
    * bigclassic        - Big Classic Style
    * smallclassic        - Small Classic Style
    * smallicon        - Small Icon (transparent background)
    * mediumicon        - Medium Icon
    * dropdown-white    - Dropdown White Background
    * dropdown-trans    - Dropdown Transparent Background
    *
    * defaults to smallicon
    */
    function getImageRessource($type = "smallicon"){
        $im = @ImageCreateFromPNG(sprintf($this->statusimguri,$type,$this->skypeid));
        if (!$im) return null;
        return $im;
    }
   
    /**
    * outputs the statusimage as png to browser
    * {@see #getImageRessource($type)}
    *
    * TODO at this moment, only supports english language images
    *
    * type-modes:
    * balloon            - Balloon style
    * bigclassic        - Big Classic Style
    * smallclassic        - Small Classic Style
    * smallicon        - Small Icon (transparent background)
    * mediumicon        - Medium Icon
    * dropdown-white    - Dropdown White Background
    * dropdown-trans    - Dropdown Transparent Background
    *
    * defaults to smallicon
    */
    function getImagePNG($type = "smallicon"){
        $png = $this->getImageRessource($type);
        @imagepng($png);
    }
}
?>
Avatar billede horsmark Nybegynder
14. april 2006 - 18:36 #4
ovenstående kode skal gemmes som class.phpSkypeStatus.php :-)

Eksempel:
<?php
require_once("class.phpSkypeStatus.php");

$skypeid="bastian.gorke";

// new status
$status = new phpSkypeStatus($skypeid);

// if param image = 1 return just the image
if ($_GET['image'] == "1"){
    $status->getImagePNG("smallclassic");
}
echo "<html><head><title>".$skypeid." status is ".$status->getText()."</title></head><body>";
echo "<h1>".$skypeid." status is ".$status->getText()."</h1>";
echo "<p>This is a simple example for the phpSkypeStatus class. As you can see my status is: <img src=\"".$PHPSELF."?image=1\" /></p>";
echo "<p>In my language german this status is named ".$status->getText("de")."</p>";
echo "</body></html>";
?>
Avatar billede amews_aj Nybegynder
14. april 2006 - 18:42 #5
noob2003 > den side er nede

horsmark > Tak for eksemplet, dog lidt indviklet for at få en lillebitte tekst ud.


Fandt en anden løsning (faktisk 2)

Åbenbart var det kun txt filen der ikke ville åbnes andet sted fra. Der var forresten også en .num fil og som sagt en XML fil.

Ens status angives her i numre.

XML
------
$xmlstr = file_get_contents('http://mystatus.skype.com/mit_brugernavn.xml');
$xmlstr = strip_tags($xmlstr);
$xmlstr = substr($xmlstr, 10, 1);
echo $xmlstr;
------

.NUM
------
$numstr = file_get_contents('http://mystatus.skype.com/mit_brugernavn.num');
echo $numstr;
------

Begge dele returnerer et 2 tal, hvilket indikerer online.
Jeg vælger at benytte det med .NUM da den nok er mest sikker. Hvis der skulle blive ændret på opsætningen i XML filen går det galt i koden. Derfor bruger jeg i stedet .num da den kun har et enkelt tal i sig.

Tak for jeres forslag...

horsmark, vil du have nogle point?
Godt nok fandt jeg selv en lettere løsning, men din løsning virker jo også...
Smid et svar hvis du gerne vil, så deler vi dem..
Avatar billede horsmark Nybegynder
14. april 2006 - 18:50 #6
oki her... lad os dele en påskebryg istedet *hurra*
Avatar billede horsmark Nybegynder
14. april 2006 - 18:50 #7
*hurrahurra* igen :-)
Avatar billede amews_aj Nybegynder
14. april 2006 - 18:53 #8
hehe ;)

Du får halvdelen... ;)

Her er mit færdige script....


<?php
function SkypeStatus($username) {

    $numstr = file_get_contents('http://mystatus.skype.com/'.$username.'.num');
    $numstr = str_replace("\n", "", $numstr);
    echo "NUM: " . $numstr;

    echo "<br><br>";
    echo "Status: ";

    SWITCH($numstr) {
        case "";
            echo "Error";
        break;
        case "0";
            echo "Unknown";
        break;
        case "1";
            echo "Offline";
        break;
        case "2";
            echo "Online";
        break;
        case "3";
            echo "Away";
        break;
        case "4";
            echo "Not available";
        break;
        case "5";
            echo "Do not disturb";
        break;
        case "6";
            echo "Invisible";
        break;
        case "7";
            echo "Skype Me";
        break;
    }
}

SkypeStatus("mit_brugernavn");

?>
Avatar billede noob2003 Nybegynder
14. april 2006 - 19:16 #9
Det var fordi der manglede et "s" i download.

http://www.testingsite.dk/downloads/skypestatus.zip
Avatar billede Slettet bruger
04. september 2007 - 13:18 #10
Super, og tak for hjælpen..

Pointsne er nu i dine hænder..

Fortsat god dag!
Avatar billede amews_aj Nybegynder
04. september 2007 - 13:59 #11
Ehm, zuppr, forkert tråd?
Det her er en af mine gamle emner, ikke oprettet af dig ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester