Home > php教程 > php手册 > 用PHP获取虾米音乐网的下载链接

用PHP获取虾米音乐网的下载链接

WBOY
Release: 2016-06-21 08:49:27
Original
1281 people have browsed it

做链接转换的时候遇到的。虾米的链接解密有点烦,解法是我看别人的源码得到的。然后我把他改写成了PHP的版本。贴出来,有需要的就拿去用~

$mp3_id = '';//音乐ID

function unescape($str) {

    $str = rawurldecode($str);

    preg_match_all("/(?:%u.{4}).{4};\d+;.+/U",$str,$r);

    $ar = $r[0];

    foreach($ar as $k=>$v) {

        if(substr($v,0,2) == "%u")

        {

            $ar[$k] = iconv("UCS-2","utf-8//IGNORE",pack("H4",substr($v,-4)));

        }

        elseif(substr($v,0,3) == "")

        {

            $ar[$k] = iconv("UCS-2","utf-8",pack("H4",substr($v,3,-1)));

        }

        elseif(substr($v,0,2) == "")

        {

            echo substr($v,2,-1)."";

            $ar[$k] = iconv("UCS-2","utf-8",pack("n",substr($v,2,-1)));

        }

    }

    return join("",$ar);

}

$x_url="http://www.xiami.com/song/playlist/id/".$mp3_id."/object_name/default/object_id/0";

$x_con=file_get_contents($x_url);

preg_match_all( "/(.*?)/s",$x_con, $locations);

$str=$locations[1][0];

$num=substr($str, 0,1);

$inp=substr($str,1);

$iLe=strlen($inp)%$num;

$a=0;

$ret='';

$arr=array();

for ($i=0; $i

    $arr [$i] = ($iLe>$i?1:0) + (strlen($inp)-$iLe)/$num;

}

for ($i=0; $i

    {

        $a=0;

        for ($j=0; $j

        {

            $ret .= substr($inp, $a+$i,1);

            $a += $arr[$j];

        }

}

$ret_url=unescape($ret);

$url=str_replace('^', '0', $ret_url);

$url=str_replace('+', ' ', $url);

$url=preg_replace('/.mp(.*)/', '.mp3', $url);

echo $url;



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template