59 lines
1.7 KiB
C#
59 lines
1.7 KiB
C#
using Google.Apis.Auth.OAuth2;
|
|
using Google.Apis.Oauth2.v2;
|
|
using Google.Apis.Oauth2.v2.Data;
|
|
using Google.Apis.Services;
|
|
using Google.Apis.YouTube.v3;
|
|
using Google.Apis.YouTube.v3.Data;
|
|
using System.Collections.Generic;
|
|
using YouTube;
|
|
|
|
namespace FoxTube.Models
|
|
{
|
|
public class User
|
|
{
|
|
public Userinfoplus UserInfo { get; }
|
|
public UserCredential Credential { get; }
|
|
public Channel Channel { get; private set; }
|
|
public List<Subscription> Subscriptions { get; } = new List<Subscription>();
|
|
public ExtendedYouTubeService Service { get; }
|
|
|
|
public User(UserCredential credential)
|
|
{
|
|
Credential = credential;
|
|
BaseClientService.Initializer initializer = new BaseClientService.Initializer
|
|
{
|
|
ApplicationName = "FoxTube",
|
|
HttpClientInitializer = Credential
|
|
};
|
|
|
|
Service = new ExtendedYouTubeService(initializer);
|
|
|
|
UserInfo = new Oauth2Service(initializer).Userinfo.Get().Execute();
|
|
|
|
// TODO: Retrieve history and WL
|
|
|
|
SubscriptionsResource.ListRequest subRequest = Service.Subscriptions.List("snippet");
|
|
subRequest.Mine = true;
|
|
subRequest.MaxResults = 50;
|
|
subRequest.Order = SubscriptionsResource.ListRequest.OrderEnum.Relevance;
|
|
SubscriptionListResponse subResponse;
|
|
string nextToken = null;
|
|
Subscriptions.Clear();
|
|
|
|
do
|
|
{
|
|
subRequest.PageToken = nextToken;
|
|
subResponse = subRequest.Execute();
|
|
foreach (Subscription s in subResponse.Items)
|
|
Subscriptions.Add(s);
|
|
nextToken = subResponse.NextPageToken;
|
|
|
|
} while (!string.IsNullOrWhiteSpace(nextToken));
|
|
|
|
var request = Service.Channels.List("snippet,contentDetails,brandingSettings");
|
|
request.Mine = true;
|
|
Channel = request.Execute().Items[0];
|
|
}
|
|
}
|
|
}
|