/// <summary> /// 获取用户已经发布得视频列表 分页 /// </summary> /// <param name="open_id">用户应用标识</param> /// <param name="access_token">用户授权token</param> /// <param name="cursor">分页游标, 默认传0。</param> /// <param name="count">每页数量</param> /// <returns></returns> public List <VideoData> GetVideoList(string open_id, string access_token, long cursor, int count) { VideoListRequest request = new VideoListRequest() { OpenId = open_id , AccessToken = access_token , Cursor = cursor , Count = count }; VideoListResponse response = Execute <VideoListResponse>(request); if (response != null) { if (response.Data != null && response.Data.List != null && response.Data.List.Count > 0) { return(response.Data.List); } else { return(new List <VideoData>()); } } else { throw new Exception("error code:" + response.Data.ErrorCode + ",error msg:" + response.Data.Description); } }
public Task <VideoListResponse> GetVideosAsync(VideoListRequest request, CancellationToken cancellationToken) { // Validate parameters. if (request == null) { throw new ArgumentNullException(nameof(request)); } // The URL. // Documentation: https://developers.google.com/youtube/v3/docs/videos/list var url = "videos"; // Append items in the request. url = QueryHelpers.AddQueryString(url, "id", request.Ids.Join(",")); url = QueryHelpers.AddQueryString(url, "part", request.Parts.GetPartsParameter()); if (request.MaxResults != null) { url = QueryHelpers.AddQueryString(url, "maxResults", request.MaxResults.Value.ToString(CultureInfo.InvariantCulture)); } if (!string.IsNullOrWhiteSpace(request.PageToken)) { url = QueryHelpers.AddQueryString(url, "pageToken", request.PageToken); } // Get JSON from the client factory. return(GetAsync <VideoListResponse>(url, cancellationToken)); }
public async Task Test_GetVideos_Async(string videoId) { // Validate parameters. if (string.IsNullOrWhiteSpace(videoId)) { throw new ArgumentNullException(nameof(videoId)); } // Create the youtube client. var youTubeClient = CreateYouTubeClient(); // Create the request. var request = new VideoListRequest() .AddIds(videoId) .AddParts(YouTube.V3.VideoResource.Part.Id); // Make the call. await youTubeClient.GetVideosAsync(request, CancellationToken.None).ConfigureAwait(false); }
/// <summary> /// 获取用户下的所有视频 /// </summary> /// <param name="open_id"></param> /// <param name="access_token"></param> /// <param name="cursor"></param> /// <param name="count"></param> /// <param name="videoDatas"></param> public void GetAllVideoData(string open_id, string access_token, long cursor, int count, ref List <VideoData> videoDatas) { VideoListRequest request = new VideoListRequest() { OpenId = open_id , AccessToken = access_token , Cursor = cursor , Count = count }; VideoListResponse response = Execute <VideoListResponse>(request); if (response != null) { if (response.Data != null && response.Data.List != null && response.Data.List.Count > 0) { videoDatas.AddRange(response.Data.List); if (response.Data.HasMore) { cursor = response.Data.Cursor; GetAllVideoData(open_id, access_token, cursor, count, ref videoDatas); } } else { videoDatas = new List <VideoData>(); } } else { throw new Exception("error code:" + response.Data.ErrorCode + ",error msg:" + response.Data.Description); } }
public async Task <IActionResult> List([FromBody] VideoListRequest request) { var user = await userManager.GetUserAsync(User); var query = videoManager.GetAll(user); // Apply filters if (request.Ids != null) { query = query.Where(x => request.Ids.Contains(x.Id)); } if (request.SubscriptionId != null) { query = query.Where(x => x.SubscriptionId == request.SubscriptionId.Value); } if (request.SubscriptionFolderId != null) { var sub = subscriptionManager.GetFolder(user, request.SubscriptionFolderId.Value); if (sub == null) { return(BadRequest(responseFactory.Error("Invalid subscription folder ID."))); } var validSubscriptionIds = subscriptionManager.GetSubscriptionsRecursive(sub).Select(x => x.Id).ToArray(); query = query.Where(x => validSubscriptionIds.Contains(x.SubscriptionId)); } if (request.IsWatched.HasValue) { query = query.Where(x => x.IsWatched == request.IsWatched.Value); } if (request.IsDownloaded.HasValue) { if (request.IsDownloaded.Value) { query = query.Where(x => x.DownloadedPath != null); } else { query = query.Where(x => x.DownloadedPath == null); } } // TODO: proper search if (request.Query != null) { query = query.Where(x => x.Name.ToLower().Contains(request.Query.ToLower())); } // Get the item count here, before applying the limit and offset int itemCount = query.Count(); // Sorting, limit and offset query = query.OrderBy(request.Order) .Skip(request.Offset ?? 0) .Take(request.Limit ?? 50); // Obtain mime types var videos = query.ToArray(); var apiVideos = new List <ApiVideo>(); foreach (var video in videos) { var apiVideo = modelFactory.ToApi(video); apiVideo.StreamMimeType = await videoStorage.GetMimeType(video); apiVideos.Add(apiVideo); } return(Ok(responseFactory.Success(new VideoListResponse { TotalCount = itemCount, Videos = apiVideos.ToArray(), }))); }