yam天空影音分享下載器原始碼
透過yam天空影音分享提供的API,我寫了一個分析網址的PHP程式,可以抓出音樂&影片的真正位置,順便把標題名字也抓出來。
這支PHP程式需要搭配伺服器運作,原始碼如下,請大家多多指教。
<?php
/*
============使用注意事項============
如果不能分析
請設定php.ini的allow_url_fopen = On
==================================
*/
if ($_GET["sourcecode"] == "true")
{
header("Content-Type: text/plain; charset=utf-8; name=\"yam-video-download.php\"");
echo $file_file = file_get_contents("yam-video-download.php");
exit();
}
if (isset($_GET["url"])) //如果沒有參數,表示是初始化
{
$url_source = $_GET["url"]; //來源位址
if (strpos($url_source, "/", 0) != false) //如果是http://mymedia.blog.yam.com/m/2077502,轉成2077502
{
$url_source = substr($url_source, strrpos($url_source, "/") + 1);
}
//取得該頁面的標題
$url_title = "http://mymedia.blog.yam.com/m/".$url_source;
$title_file = file_get_contents($url_title);
//start with <h1 class="heading"> +
$start = '<h1 class="heading">';
$title_start = strpos($title_file, $start) + strlen($start);
//end with </h1>
$end = '</h1>';
$title_length = strpos($title_file, $end, $tite_start) - $title_start;
$title = substr($title_file, $title_start, $title_length);
//取得mp3的位置
$url_file = "http://mymedia.yam.com/api/a/?pID=".$url_source;
$file_file = file_get_contents($url_file);
if (strpos($file_file, 'mp3file=') === 0)
{
//start with mp3file=
$start = 'mp3file=';
$file_start = strpos($file_file, $start) + strlen($start);
//end with &totaltime=
$end = '&totaltime=';
$file_length = strpos($file_file, $end, $file_start) - $file_start;
$file = substr($file_file, $file_start, $file_length);
}
else
{
//start with &furl=
$start = '&furl=';
$file_start = strpos($file_file, $start) + strlen($start);
//end with &hidecode=
$end = '&hidecode=';
$file_length = strpos($file_file, $end, $file_start) - $file_start;
$file = substr($file_file, $file_start, $file_length);
}
//加上副檔名
$filename_sub = substr($file, strrpos($file, ".") + 1);
$title = $title.".".$filename_sub;
} //end if
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>yam天空部落-影音分享下載器</title>
</head>
<body>
<?php
if (isset($file))
{
?>
檔名:<input type="text" style="width: <?php echo strlen($title)/2; ?>em;border-width:0;" onfocus="this.select()" value="<?php echo $title ?>" /><br />
<a href="<?php echo $file; ?>">下載位置</a>
<hr style="display:block;" />
<?php
}
?>
<label for="source">請輸入yam天空部落-影音分享的網址或編號:(以http://mymedia.blog.yam.com/m/或http://mymedia.yam.com/m/開頭)</label><br /><input id="source" type="text" onchange="download_link(this.value)" value="" onfocus="this.select();" style="width: 300px;" /><input type="button" onclick="download_link(document.getElementById('source').value)" value="確認" /><span id="msg"></span>
<a href="" id="download" style="display:none;">開始分析</a>
<script type="text/javascript">
function download_link(source)
{
var keyword = "http://mymedia.blog.yam.com/m/";
var keyword2 = "http://mymedia.yam.com/m/";
document.getElementById("download").style.display = "none";
if (source == "")
{
msg_show("");
document.getElementById("source").value = keyword2;
return;
}
else if (source.substr(0, keyword.length) != keyword && source.substr(0, keyword2.length) != keyword2)
{
msg_show("請輸入以\""+keyword2+"\"的網址");
}
else if ((source.substr(0, keyword.length) == keyword && source.length == keyword.length)
|| (source.substr(0, keyword2.length) == keyword2 && source.length == keyword2.length))
{
msg_show("請輸入影音分享的編號");
}
else
{
msg_show("");
document.getElementById("download").href = "?url="+source;
document.getElementById("download").style.display = "inline";
}
}
function msg_show(msg)
{
document.getElementById("msg").innerHTML = msg;
}
</script>
<hr />
<a href="?sourcecode=true">下載本程式原始碼</a>
</body>
</html>
※20080508更新:允許網址是以http://mymedia.yam.com/m/開頭
你這個是不是不會驗證影音是否存在?
回覆刪除不會,他只是把網頁資料抓回來分析而已,抓不到就抓不到了。
回覆刪除做的好阿!!~~
回覆刪除借我用XD~~
喔喔,小程式而已
回覆刪除什麼叫須搭配伺服器啊?
回覆刪除那些原始碼需要compile嗎?
還是用其他方法?
這是PHP程式,需要能夠支援PHP的網頁伺服器,例如Apache。
回覆刪除PHP是直譯式語言,不需編譯即可使用。
關於PHP的使用,可以參考WikiPedia: PHP http://zh.wikipedia.org/w/index.php?title=PHP&variant=zh-tw
請問要如何修改成直接開啟已經分析完成直接下載,不要再跳轉到下載位置的頁面???
回覆刪除!!謝謝能否惠教!!
PHP比較沒辦法這樣做,這要靠AJAX技術
回覆刪除請參考另一篇yam天空部落-影音分享下載器(IE版)
http://pulipuli.blogspot.com/2008/11/yam-ie.html
不過這一次的程式是單機使用喔