【PHP】悦读FM音频下载代码

自己动手丰衣足食,写了一段下载所有悦读FM的音频到当前目录的代码。

到发帖时为止,悦读FM共有音频400首,其中1首下载链接无效。

 

提示:下载有点慢,400首下载时间近2个小时,请耐心等候。

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<?php
set_time_limit(0);

/* 悦读FM音频列表 */
$url = 'http://yuedu.fm/?data=playlist';
/* 音频详细信息 */
$album = 'http://yuedu.fm/?data=album';

/* 获取音频列表 */    
$content = curl($url) or die('获取音频列表失败,请重试');
/* 获取音频详细信息 */
$album_content = curl($album) or die('获取音频详细信息失败,请重试');

$list = array();
$content = json_decode($content);
$album_content = json_decode($album_content);

/* 对象转为数组 */
foreach($content->list as $val)
{
    $list[$val->sid] = array(
        'sid' => $val->sid,
        'mp3' => $val->mp3,
        'title' => $val->title 
    );
}
foreach($album_content->album as $val)
{
    $list[$val->sid]['player'] = $val->player;
}

$count = count($list);
echo "共{$count}首,开始下载: <br />";
arsort($list);

/* 开始下载 */
$exists = $ok = $error = 0;
foreach($list as $val)
{
    $file = "悦读FM - {$val['player']} {$val['title']}.mp3";
    $mp3 = $val['mp3'];
    echo "{$val['sid']} <a href='{$mp3}'>{$file}</a> ";
    
    $file = dirname(__FILE__) . '/' . iconv('UTF-8', 'gbk', $file);
    if (file_exists($file))
    {
        echo '已经下载';
        $exists++;
    }else{
        $url = $mp3;
        $content = @file_get_contents($url);
        if (empty($content))
        {
            echo '<font color="#F90000">下载失败!</font>';
            $error++;
        }else{
            file_put_contents($file, $content);
            echo '<font color="#00CD00">下载成功!</font>';
            $ok++;
        }
    }
    echo '<br />';
}
echo "{$exists}首已存在,{$ok}首下载成功,{$error}首下载失败";
exit();

/**
 * cURL方式获取资源
 * 
 * @access global
 * @param mixed $url
 * @return string
 */
function curl($url)
{
    $curl = curl_init();
    curl_setopt ($curl, CURLOPT_URL, $url);
    curl_setopt ($curl, CURLOPT_HEADER,0);
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt ($curl, CURLOPT_TIMEOUT,10);
    
    curl_setopt ($curl, CURLOPT_REFERER, 'http://cn.yahoo.com/?');
    curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);
    $content = curl_exec($curl);
    return $content;
}
?>

 

posted @ 2013-02-21 11:28  CCNN  阅读(365)  评论(0)    收藏  举报