您的位置:首页 > 编程语言 > PHP开发

用PHP实现一个MP3下载脚本

2010-09-24 13:59 357 查看
这只是一个下载MP3的PHP脚本,当然无法与一些下载软件相提并论。这脚本只是实现了MP3下载的功能,没有线程下载,也不支持断点下载。

这只是我为自己偷懒写的小工具,实现一些没有规则的下载地址,在目前我无法用下载软件工具实现下载的情况下,自己写了一个。

基本的实现原理:分析下载连接页面,抓取下载地址,用file_get_contents()函数下载文件到本址。

由于脚本跑的时间会较长,最好在命令行下跑,用页面跑会出现脚本执行时间太长中断的情况(也可以修改配置)。

下面是实现的脚本:

<?php
$listUrl = 'http://www.englishmorning.com/magic_english.php';
$listPage = file_get_contents($listUrl);
$listPattern = '/<div id="primarycontent">.*<div class="footer">/is';
preg_match($listPattern, $listPage, $page);
$listPage = $page[0];
unset($page);
$listLinks = explode('<a href="', $listPage);
unset($listLinks[0]);
foreach($listLinks as $k => $link){
$link = substr($link, 0, strpos($link, '">'));
$detalPage = file_get_contents($link);
$pattern = '/<embed src=".*" mce_src=".*" width="380"/is';
preg_match($pattern, $detalPage, $urls);

$url = str_replace('<embed src="', 'http://www.englishmorning.com/', $urls[0]);
$url = str_replace('" mce_src="', 'http://www.englishmorning.com/', $urls[0]);
$url = str_replace('" width="380"', '', $url);
unset($urls);
$listLinks[$k] = $url;
}
foreach($listLinks as $url){
getFile($url);
echo "download {$url} done./n";
}
function getFile($url){
$fileName = substr($url, strrpos($url, '/')+1);
$fileSize = @filesize($url);
header ( "Pragma: public" );
header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header ( "Cache-Control: private", false );
header ( "Content-Transfer-Encoding: binary" );
header ( "Content-Type:audio/mpeg MP3");
header ( "Content-Length: " . $fileSize);
header ( "Content-Disposition: attachment; filename=".$fileName);
$file = file_get_contents($url);
$fp = fopen($fileName, 'w');
fwrite($fp, $file);
fclose($fp);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: