【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; } ?>

浙公网安备 33010602011771号