1
0

Updated README.md

This commit is contained in:
Michael Gordeev
2020-05-10 16:15:39 +03:00
parent cc6940bab7
commit 4856a76367
+112 -7
View File
@@ -16,20 +16,125 @@ C# library which is used to extend the abilities of YouTube API v3
- User's recommendations listing
- User's subscriptions videos listing
- Videos' URLs retrieval
- UWP authorization helpers
## Get started
- Download and install package from [NuGet](https://www.nuget.org/packages/ExtendedYouTubeAPI/)
### Authorization (UWP)
```
using System;
using Google.Apis.Auth.OAuth2;
using YouTube.Authorization;
using Windows.Security.Authentication.Web;
## Contribution
1. Clone repository
2. Build "YouTube.API" project
### Configuring tests
...
ClientSecrets secrets = new ClientSecrets // Initialize your project secrets
{
ClientId = "%CLIENT_ID%",
ClientSecret = "%CLIENT_SECRET%"
}
string[] scopes = new string[] // Define scopes you wanna access
{
Oauth2Service.Scope.UserinfoProfile,
Oauth2Service.Scope.UserinfoEmail,
YouTubeService.Scope.YoutubeForceSsl
};
Uri requestString = AuthorizationHelpers.FormQueryString(secrets, scopes); // Generate authorization link
WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.UseTitle, requestString, AuthorizationHelpers.Endpoint); // Call authentication broker with generated query string and predefined endpoint. WebAuthenticationOptions.UseTitle is required
if (result.ResponseStatus == WebAuthenticationStatus.Success) // Process response
{
string successCode = AuthorizationHelpers.ParseSuccessCode(result.ResponseData); // Retrieve success code
YouTube.Authorization.UserCredential credential = await AuthorizationHelpers.ExchangeToken(ClientSecrets, successCode); // Excahnge success token for UserCredential
// Use UserCredential to create YouTube.ExtendedYouTubeService
// Save refresh token for future use. Recommended way: PasswordVault
PasswordVault passwordVault = new PasswordVault();
PasswordCredential tokenData = new PasswordCredential("%ANY_ID%", "%AUTHORIZED_USER_ID%", credential.Token.RefreshToken)
passwordVault.Add(tokenData);
// Update stored refresh token on renew
credential.RefreshTokenUpdated += (s, e) =>
{
tokenData.Password = credential.Token.RefreshToken
}
}
else
{
// Do something
}
```
### Service retrieval
```
using YouTube;
using YouTube.Authorization;
using Google.Apis.Services;
...
YouTubeExtendedService GetService(UserCredential credential = null)
{
BaseClientService.Initializer initializer = new BaseClientService.Initializer
{
ApplicationName = "%APP_NAME%",
ApiKey = "%API_KEY%", // In case there's no UserCredential and usage is anonymous
HttpClientInitializer = credential
};
ExtendedYouTubeService service = new ExtendedYouTubeService(initializer);
returnt service
}
```
### DASH manifest retrieval
```
using YouTube;
using YouTube.Models;
using System.Collections.Generic;
using Windows.Media.Playback;
...
ExtendedYouTubeService service = new ExtendedYouTubeService(); // Get the Service
var request = service.DashManifests.List("%VIDEO_ID%");
// request.Id = "%VIDEO_ID%"; // Change video ID after request initialization
IReadOnlyList<DashManifest> manifests = await request.ExecuteAsync(); // Execute request. There will be manifests for all available qualities, including "Auto"
// DashManifest.Label - Quality label
// DashManifest.ValidUntil - After this date URLs in the manifest will be invalid
// DashManifest.Xml - XmlDocument instance of the manifest
Uri manifestUri = manifests[0].WriteManifest(TempFileStream); // Save manifest to temporary file to access it with MediaPlayer
...
// Play video with manifest
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.Source = MediaSource.CreateFromUri(manifestUri);
mediaPlayer.Play();
```
### Other data
Other resources are retrieved pretty much the same as in the vanilia library
## TODO
- Create API Reference page
- Document code
- Complete README
- Setup CI/CD
- Complete library
- Add more tests
- Implement user history management
- Implement search history management
- Implement video recommendations/subscirptions listing
## Special thanks
- [Tyrrrz](https://github.com/Tyrrrz) for [YoutubeExplode](https://github.com/Tyrrrz/YoutubeExplode) library which is used in the my one
## Copyrights
> ©2019 Michael "XFox" Gordeev
> ©2020 Michael "XFox" Gordeev