:::

yam天空影音分享下載器原始碼

5月 04, 2008 , 8 Comments Edit Post

透過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/開頭

總共8 則留言, (我要發問)

  1. 你這個是不是不會驗證影音是否存在?

    回覆刪除
  2. 不會,他只是把網頁資料抓回來分析而已,抓不到就抓不到了。

    回覆刪除
  3. 做的好阿!!~~

    借我用XD~~

    回覆刪除
  4. 什麼叫須搭配伺服器啊?
    那些原始碼需要compile嗎?
    還是用其他方法?

    回覆刪除
  5. 這是PHP程式,需要能夠支援PHP的網頁伺服器,例如Apache。
    PHP是直譯式語言,不需編譯即可使用。
    關於PHP的使用,可以參考WikiPedia: PHP http://zh.wikipedia.org/w/index.php?title=PHP&variant=zh-tw

    回覆刪除
  6. 請問要如何修改成直接開啟已經分析完成直接下載,不要再跳轉到下載位置的頁面???
    !!謝謝能否惠教!!

    回覆刪除
  7. PHP比較沒辦法這樣做,這要靠AJAX技術
    請參考另一篇yam天空部落-影音分享下載器(IE版)
    http://pulipuli.blogspot.com/2008/11/yam-ie.html
    不過這一次的程式是單機使用喔

    回覆刪除

留言工具: