龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 获取豆瓣FM加心歌曲

时间:2015-03-18 02:23来源:网络整理 作者:网络 点击:
分享到:
获取豆瓣FM加心歌曲 原理步骤什么的见:http://blog.satikey.com/?p=194 或者http://my.oschina.net/sati/blog/55665然后是一个实现好的页面:http://blog.satikey.com/tools/douban 代码使用方式为,通过get发送请

原理步骤什么的见:http://blog.satikey.com/?p=194 或者 http://my.oschina.net/sati/blog/55665 然后是一个实现好的页面:http://blog.satikey.com/tools/douban 代码使用方式为,通过get发送请求 附带参数为:email=<你豆瓣的邮箱>&pwd=<你豆瓣的密码>&count=

[PHP]代码

<?php
/**
 *
 * @category
 * @package
 * @listence Apache Listens,Version 2.0
 * @version  2012-04-30
 */
$email=isset($_GET['email'])?$_GET['email']:'';
$password=isset($_GET['pwd'])?$_GET['pwd']:'';
$count=isset($_GET['count'])?$_GET['count']:'10';

if(!preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/',$email)){
    return;
}
$login_info=login($email,$password);

$liked_list= get_liked($login_info,$count);
//var_dump($liked_list);
if($liked_list->r!=0){
    echo "wrong";
    return;
}
$urls='';
$cmd='';
foreach($liked_list->songs as $songs){
    $urls.=$songs->url.'<br/>';
    $title=$songs->title;
    //文件名
    $offset1=strrpos($songs->url,'/')+1;
    $tempName=substr($songs->url,$offset1);
    //扩展名
    $offset2=strrpos($songs->url,'.');
    $ext=substr($songs->url,$offset2);
    //生成cmd
    $cmd.='ren '.$tempName.' "'.$title.$ext.'"<br/>'  ;
}
echo $urls;
echo "<hr/>";
echo $cmd;

return;

function login($email,$password)
{
//        if(s.contains("@"))
//            s2 = "email";
//        else
//            s2 = "username";
    $PostData = "email=".$email."&password=".$password."&app_name=radio_android&version=606&client=s%3Amobile%7Cy%3Aandroid+2.3.5%7Cf%3A606%7Cm%3ADouban%7Cd%3A-1629744272%7Ce%3Ahkcsl_cht_htc_desire_s";

    $ch = curl_init("https://www.douban.com/j/app/login");
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_USERAGENT,'Android-2.3.5');

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_CAINFO,'mozilla.pem'); /* fixed! */

    //post
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);

    $result = curl_exec($ch);
    curl_close($ch);
    $jsonObj=json_decode($result);
    return $jsonObj;
}

function get_liked($login_info=array(),$count){
  $url='http://www.douban.com/j/app/radio/liked_songs?count='.$count.'&token='.$login_info->token.
      '&exclude=&version=606&client=s%3Amobile%7Cy%3Aandroid+2.3.5%7Cf%3A606%7Cm%3ADouban%7Cd%3A-1629744272%7Ce%3Ahkcsl_cht_htc_desire_s&app_name=radio_android&from=android_606_Douban'.
      '&user_id='.$login_info->user_id.
      '&expire='.$login_info->expire.'&formats=aac';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_USERAGENT,'Android-2.3.5');

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $curlResponse = curl_exec($ch);
    $curlErrno = curl_errno($ch);
    if ($curlErrno) {
        $curlError = curl_error($ch);
    }
    curl_close($ch);
    $jsonObj=json_decode($curlResponse);
    return $jsonObj;
}
精彩图集

赞助商链接