Archived
1
0
This repository has been archived on 2026-04-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
FoxTube/FoxTube.Core/Models/User.cs
T
2020-05-11 02:21:16 +03:00

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;
}
}
}