private void YoutubeLogin() { using (var stream = new FileStream("client_secret_90216717933-jqbg5psb20erpgsfatfrd7sjce2uo3s1.apps.googleusercontent.com.json", FileMode.Open, FileAccess.Read)) { Credental = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, new[] { YouTubeService.Scope.YoutubeReadonly }, "user", CancellationToken.None, new FileDataStore(this.GetType().ToString()) ).Result; } var youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = Credental, ApplicationName = this.GetType().ToString() }); var test = new SubscriptionsResource.ListRequest(youtubeService, "snippet") { Mine = true, MaxResults = 50 }; var test2 = test.Execute(); Subscriptions.AddRange(test2.Items); GetLatestSubscriptionVideos(Subscriptions); }
internal async Task <IEnumerable <Subscription> > GetSubscriptions(bool mySubscriptions = false, bool myRecentSubscribers = false, bool mySubscribers = false, int maxResults = 1) { return(await this.YouTubeServiceWrapper(async() => { List <Subscription> results = new List <Subscription>(); string pageToken = null; do { SubscriptionsResource.ListRequest request = this.connection.GoogleYouTubeService.Subscriptions.List("snippet,contentDetails"); if (mySubscriptions) { request.Mine = true; } else if (myRecentSubscribers) { request.MyRecentSubscribers = myRecentSubscribers; } else if (mySubscribers) { request.MySubscribers = mySubscribers; } request.MaxResults = Math.Min(maxResults, 50); request.PageToken = pageToken; LogRequest(request); SubscriptionListResponse response = await request.ExecuteAsync(); LogResponse(request, response); results.AddRange(response.Items); maxResults -= response.Items.Count; pageToken = response.NextPageToken; } while (maxResults > 0 && !string.IsNullOrEmpty(pageToken)); return results; })); }
public async static Task <List <Subscription> > GetUserSubscriptionsAsync(CancellationToken token, bool getUploadsPlaylist = false) { List <Subscription> result = new List <Subscription>(); try { SubscriptionsResource.ListRequest listSubscriptions = Service.Subscriptions.List("snippet"); listSubscriptions.Order = SubscriptionsResource.ListRequest.OrderEnum.Alphabetical; listSubscriptions.Mine = true; listSubscriptions.MaxResults = 50; SubscriptionListResponse response = await listSubscriptions.ExecuteAsync(); while (response.NextPageToken != null && !token.IsCancellationRequested) { result.AddRange(ConvertSubscriptionItems(response.Items.ToList())); listSubscriptions.PageToken = response.NextPageToken; response = await listSubscriptions.ExecuteAsync(); } result.AddRange(ConvertSubscriptionItems(response.Items.ToList())); if (getUploadsPlaylist) { result.ForEach(p => p.PlaylistIdToWatch = GetChannelUploadsPlaylistId(p)); } return(result); } catch (Exception ex) { Common.HandleException(ex); return(Common.TrackedSubscriptions.Where(p => !p.IsPlaylist).ToList()); //As a "default" return the current YouTube subscriptions } }
static void Main(string[] args) { try { UserCredential credential; // Load client secrets. using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { /* The file token.json stores the user's access and refresh tokens, and is created * automatically when the authorization flow completes for the first time.*/ string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.FromStream(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create G Suite Reseller API service. var service = new ResellerService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = ApplicationName }); // Define parameters of request. SubscriptionsResource.ListRequest request = service.Subscriptions.List(); request.MaxResults = 10; // List subscriptions. IList <Subscription> subscriptions = request.Execute().SubscriptionsValue; Console.WriteLine("Subscriptions:"); if (subscriptions != null && subscriptions.Count > 0) { foreach (var subscription in subscriptions) { Console.WriteLine("{0} ({1}, {2})", subscription.CustomerId, subscription.SkuId, subscription.Plan.PlanName); } } else { Console.WriteLine("No subscriptions found."); } } catch (FileNotFoundException e) { Console.WriteLine(e.Message); } }
public List <Subscription> GetSubscriptions(string channelID) { List <Subscription> result = new List <Subscription>(); using (var youtube = new YouTubeService(new BaseClientService.Initializer() { ApiKey = this.auth.ApiKey, ApplicationName = this.ApplicationName })) { try { SubscriptionsResource.ListRequest listRequest = youtube.Subscriptions.List("snippet"); // listRequest.MySubscribers = False // listRequest.Mine = False listRequest.ChannelId = channelID; listRequest.MaxResults = 50; listRequest.Order = SubscriptionsResource.ListRequest.OrderEnum.Alphabetical; SubscriptionListResponse searchResponse = listRequest.Execute(); while (true) { foreach (Subscription searchResult in searchResponse.Items) { result.Add(searchResult); } if (!string.IsNullOrEmpty(searchResponse.NextPageToken)) { listRequest.PageToken = searchResponse.NextPageToken; searchResponse = listRequest.Execute(); } else { break; // TODO: might not be correct. Was : Exit Do } } } catch (Exception ex) { if (Logger != null) { Logger.Error(ex); } } } return(result); }
static void Main(string[] args) { UserCredential credential; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/reseller-dotnet-quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create G Suite Reseller API service. var service = new ResellerService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); // Define parameters of request. SubscriptionsResource.ListRequest request = service.Subscriptions.List(); request.MaxResults = 10; // List subscriptions. IList <Subscription> subscriptions = request.Execute().SubscriptionsValue; Console.WriteLine("Subscriptions:"); if (subscriptions != null && subscriptions.Count > 0) { foreach (var subscription in subscriptions) { Console.WriteLine("{0} ({1}, {2})", subscription.CustomerId, subscription.SkuId, subscription.Plan.PlanName); } } else { Console.WriteLine("No subscriptions found."); } Console.Read(); }
private void Start(CancellationToken token) { if (this.IsHandleCreated) { this.Invoke((MethodInvoker) delegate { richTextBoxLog.Clear(); buttonStart.Enabled = false; buttonStop.Enabled = true; }); } if (!CheckForInternetConnection()) { if (this.IsHandleCreated) { this.Invoke((MethodInvoker) delegate { buttonStart.Enabled = true; buttonStop.Enabled = false; }); } return; } List <Subscription> tempUserSubscriptions = new List <Subscription>(); if (service == null) { Log("Authorizing..."); UserCredential credential; string clientSecretString = "{\"installed\":" + "{" + "\"client_id\":\"761670588704-lgl5qbcv5odmq1vlq3lcgqv67fr8vkdn.apps.googleusercontent.com\"," + "\"project_id\":\"youtube-downloader-174123\"," + "\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\"," + "\"token_uri\":\"https://accounts.google.com/o/oauth2/token\"," + "\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\"," + "\"client_secret\":\"_uzJUnD4gNiIpIL991kmCuvB\"," + "\"redirect_uris\":[\"urn:ietf:wg:oauth:2.0:oob\",\"http://localhost\"]" + "}" + "}"; byte[] byteArray = Encoding.ASCII.GetBytes(clientSecretString); using (var stream = new MemoryStream(byteArray)) { credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(CredentialsPath, true)).Result; } service = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName }); } if (token.IsCancellationRequested) { return; } Log("Retrieving subscriptions..."); DeserializeSubscriptions(); SubscriptionsResource.ListRequest listSubscriptions = service.Subscriptions.List("snippet"); listSubscriptions.Order = SubscriptionsResource.ListRequest.OrderEnum.Alphabetical; listSubscriptions.Mine = true; listSubscriptions.MaxResults = 50; SubscriptionListResponse response = listSubscriptions.Execute(); while (response.NextPageToken != null && !token.IsCancellationRequested) { tempUserSubscriptions.AddRange(ConvertSubscriptionItems(response.Items.ToList())); listSubscriptions.PageToken = response.NextPageToken; response = listSubscriptions.Execute(); } tempUserSubscriptions.AddRange(ConvertSubscriptionItems(response.Items.ToList())); if (token.IsCancellationRequested) { return; } Log("Getting latest subscriptions from YouTube"); foreach (Subscription missingSubscription in tempUserSubscriptions.Where(p => userSubscriptions.Where(o => o.Title == p.Title).FirstOrDefault() == null)) { Subscription sub = AssignUploadsPlaylist(missingSubscription); sub.LastVideoPublishDate = GetMostRecentUploadDate(sub); userSubscriptions.Add(sub); } //Remove any extraneous (unsubscribed since last time the program was run) subscriptions List <Subscription> unsubscribedSubscriptions = userSubscriptions.Where(p => tempUserSubscriptions.Where(o => o.Title == p.Title).FirstOrDefault() == null && !p.IsPlaylist).ToList(); foreach (Subscription unsubscribedSubscription in unsubscribedSubscriptions) { userSubscriptions.Remove(unsubscribedSubscription); } if (token.IsCancellationRequested) { return; } //Remove any duplicates userSubscriptions = userSubscriptions.GroupBy(p => p.PlaylistIdToWatch).Select(p => p.First()).ToList(); if (Settings.Instance.SerializeSubscriptions && (Settings.Instance.DownloadVideos || Settings.Instance.AddToPocket)) //Don't run unnecessary iterations if the user doesn't want to download or add them to Pocket { Log("Looking for recent uploads"); LookForMoreRecentUploads(token); } if (token.IsCancellationRequested) { return; } Log("Iterations started"); initializeTimer(); this.Invoke((MethodInvoker) delegate { timer.Start(); }); }