如何获取xiph.org的所有电台网址

时间:2012-08-07 07:08:13

标签: php webradio

有没有办法从xiph.org获取所有网址?有没有办法直接查询网站以从Web应用程序获取指定的无线电或指定类别的无线电?

2 个答案:

答案 0 :(得分:0)

好的,我已经看过该网站上的一些流。

如果您在文本编辑器中打开XSPF文件,则会获得一些XML,其中的流包含在<location>标签中。

您将不得不为此设置某种爬虫。我会为你做一个简单的。

//define the link
$link = 'http://dir.xiph.org/';

//get the contents
$contents = file_get_contents($link);

preg_match_all('|"/listen/(.*)/listen.m3u"|',$contents,$match);


//define xspf link array
$xspfLinks = array();

//define default link
$xspfLink = 'http://dir.xiph.org/listen/';

//define final stream array
$finalStream=array();

foreach ($match[1] as $id )
{
    //assign ID to default link and throw it in the array
    $xspfLinks[]=$xspfLink.$id.'/listen.xspf';

}

// now loop through that array
foreach ($xspfLinks as $hehehe )
{
    //download xspf file
    $xspf = file_get_contents($hehehe);

    if(preg_match('|<location>(.*)</location>|',$xspf,$heheMatch))
    {

        //put stream url in final array
        $finalStream[]=$heheMatch[1];
        //test it
        echo 'HEHEHEHE I just stole:'.$heheMatch[1]."<br>";

    }
}

//now do as you please with $finalStream (it will contain all your stream urls)

我刚刚为你做了一切-_-。但是,那应该有用。

哦,还有一件事,如果你是愚蠢的,并且当你不应该躲过那些溪流时,我将不会被追究责任。

答案 1 :(得分:0)

Xiph.org现在正在研究JSON API (#tkt1958)。由于mysqls CONCAT(json_object(m.stream_name...查询,编码仍然大大破坏。

但即使使用正则表达式JSON提取,它也比处理旧yp.xml更快,更容易使用。