Поиск YouTube с API для .NET - PullRequest
       12

Поиск YouTube с API для .NET

4 голосов
/ 27 сентября 2011

Я пытаюсь использовать API YouTube для поиска на YouTube по поисковому тексту. Пример кода выглядит следующим образом.

using Google.YouTube;
using Google.GData.YouTube;
using Google.GData.Client;
using Google.GData.Extensions;

(..)

YouTubeQuery query = new YouTubeQuery(YouTubeQuery.DefaultVideoUri);

//order results by the number of views (most viewed first)
query.OrderBy = "viewCount";

// search for puppies and include restricted content in the search results
// query.SafeSearch could also be set to YouTubeQuery.SafeSearchValues.Moderate
query.Query = "puppy";
query.SafeSearch = YouTubeQuery.SafeSearchValues.None;

Feed<Video> videoFeed = request.Get<Video>(query);

printVideoFeed(videoFeed);

Моя проблема в том, что query.Query, request и printVideoFeed не существует - как использовать API для поиска на YouTube?

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Хотя вы можете использовать клиентскую библиотеку .NET для YouTube , я обнаружил, что .NET API отстает от происходящих разработок (например, я не уверен, что вы можете даже получить информация типа «нравится / не нравится» от API) в самом протоколе.

Вместо этого я бы рекомендовал использовать Протокол данных API , он использует HTTP и XML (в формате ATOM ), которые .NET имеют классы, которые можно легко использовать / анализировать , Документация также очень полная, и составление ваших запросов будет довольно простым.

В вашем примере URL для вашего запроса будет:

http://gdata.youtube.com/feeds/api/videos?v=2&orderby=viewCount&safeSearch=none&q=puppy

Который впоследствии вернет XML-документ, структурированный так (хотя данные могут отличаться, так как я предполагаю, что новые видео щенков загружаются все время):

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' 
    xmlns:app='http://www.w3.org/2007/app' 
    xmlns:media='http://search.yahoo.com/mrss/' 
    xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/'  
    xmlns:gd='http://schemas.google.com/g/2005' 
    xmlns:gml='http://www.opengis.net/gml'   
    xmlns:yt='http://gdata.youtube.com/schemas/2007'  
    xmlns:georss='http://www.georss.org/georss' 
    gd:etag='W/&quot;C0cBR38zfCp7I2A9WhdUEU4.&quot;'>
    <id>tag:youtube.com,2008:videos</id>
    <updated>2011-09-27T13:44:16.184Z</updated>
    <category scheme='http://schemas.google.com/g/2005#kind' 
        term='http://gdata.youtube.com/schemas/2007#video'/>
    <title>YouTube Videos matching query: puppy</title>
    <logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
    <link rel='alternate' type='text/html' href='http://www.youtube.com'/>
...
    <entry gd:etag='W/&quot;CEINR347eCp7I2A9WhdUEEQ.&quot;'>
        <id>tag:youtube.com,2008:video:vkeETehk8C8</id>
        <published>2007-05-21T02:02:00.000Z</published>
        <updated>2011-09-27T03:03:16.000Z</updated>
        <category scheme='http://schemas.google.com/g/2005#kind' 
            term='http://gdata.youtube.com/schemas/2007#video'/>
...

Вы также можете получить XML и поместить его в клиентские структуры YouTube .NET для легкого доступа (хотя это не так просто, это возможно), если вы хотите извлечь выгоду из уже существующих объектных моделей, но перейти к XML для получения значений, которые API не предоставляет.

0 голосов
/ 15 июля 2012

То, что вы ищете, находится в главе Аутентификация их руководства .NET .

По сути, вы должны добавить это в начале:

YouTubeRequestSettings settings = new YouTubeRequestSettings("example app", clientID, developerKey);
YouTubeRequest request = new YouTubeRequest(settings);

Метод printVideoFeed - это просто демонстрация для распечатки всех метаданных, но вы можете найти его в руководстве тоже .Возможно, вы захотите сделать что-то еще с Feed, который вы получите.

query.Query не должен быть пропущен.

...