【问题标题】:Youtube .net api - search inside a playlistYoutube .net api - 在播放列表中搜索
【发布时间】:2011-09-14 04:16:15
【问题描述】:

当我尝试在 Google 播放列表中搜索时收到 403(禁止)错误。如果我删除 .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);
}

【问题讨论】:

    标签: .net youtube google-api youtube-api


    【解决方案1】:

    我们处理了一个有点类似的问题:我们的客户在“应用程序”中输入一个 YouTube 查询词,返回整个查询的结果,然后客户端选择要保存到应用程序数据库的视频。然后,我们可以让应用向客户的网站输出自定义播放列表。然后,该站点的访问者可以使用搜索词搜索视频。我们使用Lucene.net 对这些自定义“应用”列表运行查询。就你的情况,你能:

    1. 使用播放列表 ID 查询 YouTube。
    2. 保留或缓存结果(网址、标题、长度等)
    3. 使用 Lucene 对此集执行查询。

    这肯定会占用更多资源(存储、周期),而且您可能需要跟上 Lucene 的 API 的速度,但我同意 Данаил 的观点,即快速简便的方法(YouTube 允许对播放列表进行自定义查询)行不通.

    【讨论】:

    • 有趣的建议,谢谢。我意识到另一个答案的赏金,因为它确实首先回答了我的问题。你的方法是绕过限制的好方法。
    【解决方案2】:

    刚刚嗅探了代码发出的 HTTP 请求 - 你得到了错误 403,因为

    此服务不支持 'q' 参数。

    这听起来像是 YouTube API 不支持在特定播放列表中进行全文搜索。实际上,YouTubeQuery.Query 方法只是将一个字符串添加到您的基本 URI,如下所示(您可以查看 FeedQuery 和 YouTubeQuery 类源):

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

    所以,使用.Query,您的最终网址是这样的(如果是query = "life"):

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

    【讨论】:

    • 是的,我已经在我的播放列表中注意到了这一点。我想真正的问题是在 .net API 之外还有另一种方法吗?
    猜你喜欢
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多