/// <summary> /// Load all playlists from the logged in user /// </summary> public ActionResult <List <YtPlaylist> > LoadPlaylists() { if (_lastRequestDates.TryGetValue(nameof(LoadPlaylists), out var requestTime)) { if (requestTime > DateTime.Now.AddHours(-1)) { var data = _playlists.Values.Select(o => new YtPlaylist(o.Id, o.Snippet.Title)).ToList(); return(new ActionResult <List <YtPlaylist> >(ActionStatus.Success, data)); } } if (_credential == null) { return(new ActionResult <List <YtPlaylist> >(ActionStatus.NotAuthorized, "Credentials missing")); } var service = CreateService(); var playlistRequest = service.Playlists.List("id, snippet"); playlistRequest.Mine = true; playlistRequest.MaxResults = 50; var playlistResponse = playlistRequest.Execute(); var list = playlistResponse.Items.Select(o => new YtPlaylist(o.Id, o.Snippet.Title)).ToList(); _playlists.AddUpdateOrRemove(playlistResponse.Items, o => o.Id); _lastRequestDates.AddOrUpdate(nameof(LoadPlaylists), DateTime.Now, (key, oldValue) => DateTime.Now); return(new ActionResult <List <YtPlaylist> >(ActionStatus.Success, list)); }
/// <summary> /// Get all subscriptions from the logged in user /// </summary> public ActionResult <List <YtChannel> > GetSubscriptions() { if (_lastRequestDates.TryGetValue(nameof(GetSubscriptions), out var requestTime)) { if (requestTime > DateTime.Now.AddHours(-1)) { var data = _subscriptions.Values.Select(o => new YtChannel { Id = o.Snippet.ResourceId.ChannelId, Title = o.Snippet.Title }).ToList(); return(new ActionResult <List <YtChannel> >(ActionStatus.Success, data)); } } if (_credential == null) { return(new ActionResult <List <YtChannel> >(ActionStatus.NotAuthorized, "Credentials missing")); } var service = CreateService(); var subscriptionsListRequest = service.Subscriptions.List("id, snippet"); subscriptionsListRequest.Mine = true; subscriptionsListRequest.MaxResults = 50; var subscriptions = new List <Subscription>(); SubscriptionListResponse subscriptionListResponse = null; string pageToken; do { subscriptionListResponse = subscriptionsListRequest.Execute(); if (subscriptionListResponse == null) { return(new ActionResult <List <YtChannel> >(ActionStatus.Error, "Could not get subscriptions")); } pageToken = subscriptionListResponse?.NextPageToken; subscriptionsListRequest.PageToken = pageToken; subscriptions.AddRange(subscriptionListResponse.Items); }while (subscriptionListResponse.Items.Count > 0 && pageToken != null); var list = subscriptions.Select(o => new YtChannel { Id = o.Snippet.ResourceId.ChannelId, Title = o.Snippet.Title }).ToList(); _subscriptions.AddUpdateOrRemove(subscriptionListResponse.Items, o => o.Id); _lastRequestDates.AddOrUpdate(nameof(GetSubscriptions), DateTime.Now, (key, oldValue) => DateTime.Now); return(new ActionResult <List <YtChannel> >(ActionStatus.Success, list)); }