【问题标题】:Youtube Api v3 multiple video durationYoutube Api v3 多视频时长
【发布时间】:2015-05-21 17:15:13
【问题描述】:

我正在使用 Youtube Api v3 搜索视频。我想接收时长在 0-20 分钟之间的视频。

SearchResource.ListRequest listRequest = SearchResource.List("snippet");
 listRequest.Q = query;
 listRequest.Type = "video";
 listRequest.VideoDuration =    SearchResource.ListRequest.VideoDurationEnum.Medium;

Youtube 有定义长度的枚举,例如:

SearchResource.ListRequest.VideoDurationEnum.Short; (0-4 minutes)
SearchResource.ListRequest.VideoDurationEnum.Medium; (4-20 minutes)

我想将这 2 个过滤器合并为一个。因为中等过滤器不会返回 0-4 分钟之间的视频。

有可能吗?

【问题讨论】:

  • 对 youtube api 一无所知,但 listRequest.VideoDuration = SearchResource.ListRequest.VideoDurationEnum.Short | SearchResource.ListRequest.VideoDurationEnum.Medium; 有效吗?否则你需要做 2 个 ListRequests
  • 不幸的是它不起作用。它需要定义第一个枚举。并且编译器给出警告说“对未由标志属性标记的枚举进行按位操作”

标签: c# youtube youtube-api


【解决方案1】:

就我阅读文档而言,我没有看到一种优雅的方式来做到这一点。所以创建 2 个请求,合并列表并遍历它们。像这样的:

// define 2 separate requests
SearchResource.ListRequest listRequestMedium = SearchResource.List("snippet");
listRequestMedium.Q = query;
listRequestMedium.Type = "video";
listRequestMedium.VideoDuration = SearchResource.ListRequest.VideoDurationEnum.Medium;
SearchResource.ListRequest listRequestShort = SearchResource.List("snippet");
listRequestShort.Q = query;
listRequestShort.Type = "video";
listRequestShort.VideoDuration = SearchResource.ListRequest.VideoDurationEnum.Short;

SearchListResponse shortVideos = listRequestShort.Fetch();
SearchListResponse mediumVideos = listRequestMedium.Fetch();

// merge the 2 result lists and iterate over them
foreach (SearchResult searchResult in shortVideos.Items.Union(mediumVideos.Items).ToList()) {
    // do something with the videos

}

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 2018-06-28
    • 2015-12-07
    • 2017-04-07
    • 2016-08-27
    • 2018-11-30
    • 1970-01-01
    • 2017-05-26
    • 2015-04-17
    相关资源
    最近更新 更多