64 lines
1.8 KiB
C#
64 lines
1.8 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 System.Threading.Tasks;
|
|
using YouTube;
|
|
using YoutubeExplode;
|
|
|
|
namespace FoxTube.Models
|
|
{
|
|
public class User
|
|
{
|
|
public Userinfoplus UserInfo { get; private set; }
|
|
public UserCredential Credential { get; private set; }
|
|
public Channel Channel { get; private set; }
|
|
public List<Subscription> Subscriptions { get; } = new List<Subscription>();
|
|
|
|
public ExtendedYouTubeService Service { get; private set; }
|
|
public YoutubeClient Client { get; private set; }
|
|
|
|
public static async Task<User> GetUser(UserCredential credential)
|
|
{
|
|
User user = new User();
|
|
|
|
user.Credential = credential;
|
|
BaseClientService.Initializer initializer = new BaseClientService.Initializer
|
|
{
|
|
ApplicationName = "FoxTube",
|
|
HttpClientInitializer = credential
|
|
};
|
|
|
|
user.Service = new ExtendedYouTubeService(initializer);
|
|
|
|
user.UserInfo = await new Oauth2Service(initializer).Userinfo.Get().ExecuteAsync();
|
|
|
|
// TODO: Retrieve history and WL
|
|
|
|
SubscriptionsResource.ListRequest subRequest = user.Service.Subscriptions.List("snippet");
|
|
subRequest.Mine = true;
|
|
subRequest.MaxResults = 50;
|
|
subRequest.Order = SubscriptionsResource.ListRequest.OrderEnum.Relevance;
|
|
SubscriptionListResponse subResponse;
|
|
|
|
do
|
|
{
|
|
subResponse = await subRequest.ExecuteAsync();
|
|
subRequest.PageToken = subResponse.NextPageToken;
|
|
|
|
user.Subscriptions.AddRange(subResponse.Items);
|
|
|
|
} while (!string.IsNullOrWhiteSpace(subRequest.PageToken));
|
|
|
|
var request = user.Service.Channels.List("snippet,contentDetails,brandingSettings");
|
|
request.Mine = true;
|
|
user.Channel = request.Execute().Items[0];
|
|
|
|
return user;
|
|
}
|
|
}
|
|
}
|