Youtube .net api - поиск внутри плейлиста - PullRequest
4 голосов
/ 13 июня 2011

Я получаю ошибку 403 (запрещено), когда пытаюсь выполнить поиск в списке воспроизведения Google.Если я удаляю .Query, он работает нормально.Я знаю, что учетные данные работают нормально, поскольку я использую их в других местах приложения без проблем.

Я поступаю по этому поводу неправильно или это невозможно?Я использую версию 1.8.0.0 API (новая загрузка).

void SearchPlaylistVideos(string playListId, string query)
{
    YouTubeQuery videoQuery = new YouTubeQuery(String.Format("http://gdata.youtube.com/feeds/api/playlists/{0}", playListId));
    videoQuery.Query = query;

    Feed<Video> feed = CreateAuthenticatedRequest().Get<Video>(videoQuery);

    foreach (Video entry in feed.Entries) {
        //Response.Write("<br />" + entry.Title);
    }
}

YouTubeRequest CreateAuthenticatedRequest()
{
    YouTubeRequestSettings settings = new YouTubeRequestSettings
                                        (
                                        ConfigurationManager.AppSettings["GData.AppName"],
                                        ConfigurationManager.AppSettings["GData.DeveloperKey"],
                                        ConfigurationManager.AppSettings["GData.Email"],
                                        ConfigurationManager.AppSettings["GData.Password"]
                                        );

    settings.Timeout = 1000000;
    return new YouTubeRequest(settings);
}

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Мы работали над несколько похожей проблемой: наш клиент вводит термин запроса YouTube в "Приложение", возвращаются результаты для всего запроса, а затем клиентвыбирает видео для сохранения в базе данных приложения.Затем мы можем заставить приложение выложить свой плейлист на сайт клиента.Посетители этого сайта могут затем искать видео с поисковым запросом.Мы используем Lucene.net для выполнения запросов в этих пользовательских списках "приложений".В вашей ситуации вы могли бы:

  1. Запросить YouTube с идентификатором плейлиста.
  2. Сохранить или кэшировать результаты (URL, заголовок, длина и т. Д.)
  3. Выполнять запросы на этом наборе с помощью Lucene.

Это определенно требует больше ресурсов (хранилища, циклы), и вам может потребоваться ускорить работу с API Lucene, но я согласен с Данаил, что быстрый ипростой способ (YouTube позволяет настраивать запросы к спискам воспроизведения) не сработает.

2 голосов
/ 17 июня 2011

Просто прослушал HTTP-запрос, который делает код - вы получили ошибку 403, потому что

Эта служба не поддерживает параметр 'q'.

Похоже, API YouTube не поддерживает полнотекстовый поиск в определенном списке воспроизведения. На самом деле метод YouTubeQuery.Query просто добавляет строку в ваш базовый URI, что-то вроде этого (вы можете взглянуть на источник классов FeedQuery и YouTubeQuery):

url = baseUrl + string.Format("?q={0}", this.Query)

Итак, с .Query ваш последний URL будет таким (если query = "life"):

http://gdata.youtube.com/feeds/api/playlists/595A40209CB17411?q=life

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...