YouTube API-фильтр поиска - PullRequest
       10

YouTube API-фильтр поиска

0 голосов
/ 31 января 2012

У меня есть музыкальный сайт, который использует 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;
        }
    }


}     

1 Ответ

1 голос
/ 31 января 2012

Невозможно исключить HD видео из результатов поиска. Взято из документов:

Чтобы получать только HD-видео, установите значение параметра hd на true или включите параметр в запрос, но не указывайте значение параметра. Обратите внимание, что false не является допустимым значением параметра, и вы не можете ограничить результаты поиска, исключив HD-видео. По умолчанию API-интерфейс возвращает все видео независимо от их разрешения. В записи фида видео тег <yt:hd> указывает, что видео содержит контент высокой четкости.

В JavaScript API проигрывателя YouTube есть метод для установки качества видео , что можно сделать при загрузке видео.

Невозможно исключить кроме музыкальных клипов. Однако вы можете искать видео, загруженные только партнерами YouTube, включая VEVO, насколько мне известно:

Параметр uploader, который поддерживается только для поисковых запросов, позволяет ограничить запрос видео-партнерами YouTube. Партнер YouTube - это лицо или организация, которые были приняты и участвуют в Партнерской программе YouTube. Значение параметра загрузчика должно быть partner.

Все опции для поиска видео присутствуют в документах .

...