2015-05-21 46 views
1

我使用Youtube Api v3來搜索視頻。我想收到視頻持續時間在0-20分鐘之間。Youtube Api v3多個視頻持續時間

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) 

我想將這兩個過濾器合併爲一個。由於中等過濾器不會在0-4分鐘之間返回視頻。

有沒有可能這樣做?

+0

不知道YouTube API將任何東西,但確實'listRequest.VideoDuration = SearchResource.ListRequest.VideoDurationEnum.Short | SearchResource.ListRequest.VideoDurationEnum.Medium;'工作?否則,你需要製作2個ListRequests – h3n

+0

不幸的是它不起作用。它需要首先定義的枚舉。並且編譯器給出了警告,指出「在枚舉上按位運算不是由flags屬性標記的」 –

回答

2

據我閱讀文檔,我沒有看到一個優雅的方式來做到這一點。因此,創建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 

} 
相關問題