2012-01-31 123 views
0

我有一個使用Youtube Api的音樂網站。我想按大小過濾視頻。因爲當有高質量的視頻時,音樂會就會顯示流媒體可能在低速互聯網連接中蹣跚而行。 此外,我想顯示純粹的音樂視頻。我不想要表演音樂會的唱片,封面或混音等。我可以通過哪種方式來過濾原創音樂唱片。youtube api過濾搜索

通過我使用的方式搜索代碼

/* 
$params: string, artist_name - song 
returns an array >> video_id, video name, video length 
*/  
function youtube_find_video($params) 
{ 
    str_replace("'", "", $params); 
    $q = preg_replace('/[[:space:]]/', '/', trim($params)); 
    $q = utf8_decode(utf8_encode($q)); 
    $replacements = array(',', '?', '!', '.'); 
    $q = str_replace($replacements, "", $q); 
    $feedURL = "http://gdata.youtube.com/feeds/api/videos/-/{$q}?orderby=relevance&max-results=1"; 
    $sxml = simplexml_load_file($feedURL); 
    if(!$sxml) 
    { 
     return false; 
    }  
    else{ 
     $entry = $sxml->entry; 
     if(!$entry) 
     { 
      return false; 
     } 

     // get nodes in media: namespace for media information 
     $media = $entry->children('http://search.yahoo.com/mrss/'); 

     if($media) 
     { 
      // get video player URL 
      $attrs = $media->group->player->attributes(); 
      $url = $attrs['url']; 
      if(!$url) 
      { 
       return false; 
       break; 
      } 
      parse_str(parse_url($url, PHP_URL_QUERY), $my_array_of_vars); 
      $watch['id'] = $my_array_of_vars['v']; 

      // get video name 
      $watch['name'] = $media->group->title; 

      // get <yt:duration> node for video length[minute] 
      $yt = $media->children('http://gdata.youtube.com/schemas/2007'); 
      $attrs = $yt->duration->attributes(); 
      $watch['length'] = sprintf("%0.2f", $attrs['seconds']/60); 

      $watch = simplexml_kurtul($watch); 
      return $watch;   
     } 

     else 
     { 
      return false; 
     } 
    } 


}  
+0

歡迎來到SO。你的問題是什麼,什麼是行不通的? – 2012-01-31 11:40:58

+0

謝謝:)該代碼工作正常,但我想改善它。我以哪種方式過濾原創音樂視頻?不是,音樂會,封面或混音。只是原始的純音樂視頻。 – Tahtakafa 2012-01-31 11:46:17

回答

1

這不是可以從搜索結果中排除高清視頻。從文檔摘自:

要只提取高清視頻,設置hd參數值true或包含參數在你的要求,但沒有指定的參數值。請注意,false不是有效的參數值,您不能限制搜索結果以排除高清視頻。 API的默認行爲是返回所有視頻,無論其分辨率如何。在視頻供稿條目中,<yt:hd>標籤指示視頻包含高清內容。

YouTube播放器JavaScript API有一個setting the video quality的方法,您可以在視頻加載時執行此操作。

除了音樂視頻以外,也不可能排除音樂視頻。但是,您可以只搜索由YouTube合作伙伴上傳的視頻,以及包括VEVO,據我所知:

uploader參數,它僅支持搜索請求,讓您限制查詢到YouTube的合作伙伴視頻。 YouTube合作伙伴是已被接受並參與YouTube合作伙伴計劃的個人或組織。上傳參數的值必須是partner

搜索視頻的所有選項都存在in the docs