Finally add documentation
This commit is contained in:
parent
5538aa2e5e
commit
9a884bc763
|
@ -0,0 +1,27 @@
|
|||
# Tesses.YouTubeDownloader
|
||||
|
||||
[Server Endpoints](docs/Server.md)
|
||||
<br>
|
||||
[Classes and Enums](docs/JsonAndEnum.md)
|
||||
|
||||
# What this is known to work on
|
||||
- Modern Linux/Windows/Mac (or any thing that can run .NET Standard 2.0+)
|
||||
- Works on my Wii with [wii-linux-ngx](https://www.github.com/neagix/wii-linux-ngx) and [this guide](https://tesses.net/apps/tytd/2022/wii.php) (if it 404s its not complete yet)
|
||||
|
||||
# To Use It as a server
|
||||
using Tesses.YouTubeDownloader.Server;
|
||||
using Tesses.YouTubeDownloader;
|
||||
...
|
||||
TYTDCurrentDirectory currentDirectory=new TYTDCurrentDirectory(new HttpClient());
|
||||
TYTDServer server=new TYTDServer(currentDirectory);
|
||||
server.RootServer.Server=new StaticServer("WebSite");
|
||||
HttpServerListener listener=new HttpServerListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any,3252),server.InnerServer);
|
||||
currentDirectory.StartLoop();
|
||||
TYTDStorage.FFmpeg ="/usr/bin/ffmpeg";
|
||||
Console.WriteLine("Almost Ready to Listen");
|
||||
await listener.ListenAsync(CancellationToken.None);
|
||||
|
||||
Then:
|
||||
|
||||
dotnet add package Tesses.YouTubeDownloader.Server
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
To use this tytd for javascript
|
||||
|
||||
=====models and enums=====
|
||||
subscription:
|
||||
Id: ChannelId
|
||||
BellInfo: see subscription-conf
|
||||
|
||||
subscriptions:
|
||||
array of subscription
|
||||
|
||||
resolutions:
|
||||
0: Mux
|
||||
1: PreMuxed
|
||||
2: AudioOnly
|
||||
3: VideoOnly
|
||||
|
||||
subscription-conf:
|
||||
DoNothing
|
||||
GetInfo
|
||||
Notify
|
||||
Download
|
||||
NotifyAndDownload (This is default)
|
||||
|
||||
queuelist:
|
||||
an array containing
|
||||
Item1: see savedvideo
|
||||
Item2: see resolutions
|
||||
|
||||
savedvideoprogress:
|
||||
Progress: progress as 0-100
|
||||
ProgressRaw: progress as 0.0-1.0
|
||||
Length: this is the length of video in bytes (Is wrong for Mux)
|
||||
Video: see saved video
|
||||
|
||||
savedvideo:
|
||||
Id: Video Id
|
||||
Title: Video Title
|
||||
AuthorChannelId: YouTube Channel Id for Video
|
||||
AuthorChannelTitle: YouTube Channel Title for Video
|
||||
Description: Video Description
|
||||
Keywords: YouTube Tags (this is an array)
|
||||
Likes: YouTube Video Likes
|
||||
Dislikes: YouTube Video Dislikes (I know they removed the ability but this can be used with return youtube dislikes)
|
||||
Views: YouTube Views
|
||||
Duration: Video Duration expressed as "00:03:48" could be "00:03:48.420420"
|
||||
UploadDate: Video Upload Date expressed as "2015-07-22T19:00:00-05:00"
|
||||
AddDate: date when added to downloader expressed as "2022-04-30T02:10:22.4359564-05:00"
|
||||
|
||||
savedplaylist:
|
||||
Id: Playlist Id
|
||||
Title: Playlist Title
|
||||
AuthorChannelId: YouTube Channel Id for Playlist
|
||||
AuthorChannelTitle: YouTube Channel Title for Playlist
|
||||
Description: Playlist Description
|
||||
Videos: an array of Video Ids (the videos in the playlist)
|
||||
|
||||
savedchannel:
|
||||
Id: Channel Id
|
||||
Title: Channel Title
|
||||
|
||||
|
||||
=====methods=====
|
||||
|
||||
constructor example:
|
||||
|
||||
var tytd=new TYTD("http://192.168.0.142:3252/",1);
|
||||
|
||||
|
||||
to download a video, playlist, channel or user:
|
||||
|
||||
tytd.downloadItem("https://youtube.com/watch?v=il9nqWw9W3Y");
|
||||
tytd.downloadItem("https://youtube.com/watch?v=il9nqWw9W3Y",0); //for Mux
|
||||
|
||||
to get video progress:
|
||||
|
||||
tytd.progress(function(e){
|
||||
//see savedvideoprogress
|
||||
});
|
||||
|
||||
to get queue:
|
||||
tytd.queuelist(function(e){
|
||||
//see queuelist
|
||||
});
|
||||
|
||||
to get videos:
|
||||
tytd.getvideos(function(e){
|
||||
//this will be fired for each video
|
||||
//see savedvideo
|
||||
//to get title
|
||||
e.Title
|
||||
});
|
||||
|
||||
to get playlists:
|
||||
tytd.getplaylists(function(e){
|
||||
//this will be fired for each playlist
|
||||
//see savedplaylist
|
||||
//to get title
|
||||
e.Title
|
||||
});
|
||||
|
||||
to get channels:
|
||||
tytd.getchannels(function(e){
|
||||
//this will be fired for each channel
|
||||
//see savedchannel
|
||||
//to get title
|
||||
e.Title
|
||||
});
|
||||
|
||||
to get video info for id:
|
||||
tytd.getvideoinfo("il9nqWw9W3Y",function(e){
|
||||
//see savedvideo
|
||||
//to get title
|
||||
e.Title //should be "Demi Lovato - Cool For The Summer (Official Video)" for this specific id
|
||||
});
|
||||
|
||||
to get playlist info for id:
|
||||
tytd.getplaylistinfo("PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6",function(e)
|
||||
{
|
||||
e.Title //should be "Blender Fundamentals 2.8" for this specific id
|
||||
});
|
||||
|
||||
to get channel info for id:
|
||||
tytd.getchannelinfo("UCnyB9MYKRkSFK3IIB32CoVw",function(e)
|
||||
{
|
||||
e.Title //should be "DemiLovatoVEVO" for this specific id
|
||||
});
|
||||
|
||||
to get subscriptions:
|
||||
tytd.getsubscriptions(function(e){
|
||||
//see subscriptions
|
||||
});
|
||||
|
||||
to subscribe (ChannelId):
|
||||
You Can replace NotifyAndDownload with anything from subscription-conf
|
||||
|
||||
if you want to get info about channel:
|
||||
tytd.subscribe("UCnyB9MYKRkSFK3IIB32CoVw",true,"NotifyAndDownload");
|
||||
if you dont want to get info about channel:
|
||||
tytd.subscribe("UCnyB9MYKRkSFK3IIB32CoVw",false,"NotifyAndDownload");
|
||||
|
||||
to subscribe (username):
|
||||
You Can replace NotifyAndDownload with anything from subscription-conf
|
||||
|
||||
tytd.subscribe("DemiLovatoVEVO","NotifyAndDownload");
|
||||
|
||||
to unsubscribe:
|
||||
tytd.unsubscribe("UCnyB9MYKRkSFK3IIB32CoVw");
|
||||
|
||||
to change bell (subscription-conf):
|
||||
You Can replace Download with anything from subscription-conf
|
||||
tytd.resubscribe("UCnyB9MYKRkSFK3IIB32CoVw","Download");
|
||||
|
||||
to enumerate directories:
|
||||
tytd.getdirectories("SomeDir/SomeSubDir",function(e)
|
||||
{
|
||||
//if the path was "SomeDir/SomeSubDir/john"
|
||||
//it would be "john"
|
||||
//this is an array
|
||||
});
|
||||
|
||||
to enumerate files:
|
||||
tytd.getfiles("SomeDir/SomeSubDir",function(e)
|
||||
{
|
||||
//if the path was "SomeDir/SomeSubDir/john.txt"
|
||||
//it would be "john.txt"
|
||||
//this is an array
|
||||
});
|
||||
|
||||
file exists:
|
||||
fileexists("SomeFile.txt",function(){
|
||||
//SomeFile.txt exists
|
||||
},function(){
|
||||
//SomeFile.txt doesnt exist
|
||||
});
|
||||
|
||||
directory exists:
|
||||
directoryexists("SomeDir",function(){
|
||||
//SomeDir exists
|
||||
},function(){
|
||||
//SomeDir doesnt exist
|
||||
});
|
||||
|
||||
|
|
@ -330,6 +330,5 @@ namespace Tesses.YouTubeDownloader
|
|||
public string Id { get; set; }
|
||||
public string Title { get; set; }
|
||||
|
||||
public string Url { get; set; }
|
||||
}
|
||||
}
|
|
@ -208,6 +208,10 @@ namespace Tesses.YouTubeDownloader
|
|||
{
|
||||
if(item2.Name == "yt:videoId")
|
||||
{
|
||||
if(BellInfo.HasFlag(ChannelBellInfo.GetInfo))
|
||||
{
|
||||
await Base.AddVideoAsync(item2.InnerText,Resolution.NoDownload);
|
||||
}
|
||||
if(BellInfo.HasFlag(ChannelBellInfo.Download))
|
||||
{
|
||||
await Base.AddVideoAsync(item2.InnerText);
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
# Bell
|
||||
|
||||
This is an Enum
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ---- | --------------|
|
||||
| DoNothing | 0 | Disable Bell|
|
||||
| GetInfo | 1 | Get info about video only (different from getinfo arg on requests (that is for getting channel info)) |
|
||||
| Notify | 2 | Notify (Calls Bell event in TYTDStorage abstract class) |
|
||||
| Download | 3 | Download Video |
|
||||
| NotifyAndDownload | 5 | Does the same as both Notify And Download|
|
|
@ -0,0 +1,12 @@
|
|||
# Configuration
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
File path is config/tytdprop.json
|
||||
| Name | Description | Type |
|
||||
| ------- | ----------------- | ----- |
|
||||
| AlwaysDownloadChannel | Always download channel info when downloading Video or Playlist | Boolean |
|
||||
| SubscriptionInterval | Time Between checking subscriptions ex "01:00:00" | TimeSpan (String) |
|
||||
| UseLogs | Whether Downloader Logs errors or video downloads | Boolean |
|
||||
| PrintVideoIds | Whether to print Download: Title with Id: to stdout | Boolean |
|
||||
| PrintErrors | Whether to print exceptions | Boolean |
|
||||
| LogVideoIds | Whether to log video Ids | Boolean |
|
||||
| AddDateInLog | Whether to add Date in log | Boolean |
|
|
@ -0,0 +1,12 @@
|
|||
# Classes and Enums
|
||||
| Name | Description | Type | Structure |
|
||||
| ------- | ----------------- | ----- | --- |
|
||||
| SavedVideo | VideoInfo | Class | [View](SavedVideo.md) |
|
||||
| SavedPlaylist | PlaylistInfo | Class | [View](SavedPlaylist.md) |
|
||||
| SavedChannel | ChannelInfo | Class | [View](SavedChannel.md) |
|
||||
| VideoProgress | Progress | Class | [View](VideoProgress.md) |
|
||||
| Subscription | Subscription Info | Class | [View](Subscription.md) |
|
||||
| Configure | App Configuration | Class | [View](Configure.md) |
|
||||
| QueueList | Video Queue | List of Class | [View](QueueList.md) |
|
||||
| Bell | Bell Setting (simular to on YouTube) | Enum | [View](Bell.md) |
|
||||
| Resolution | Video Resolution | Enum | [View](Resolution.md) |
|
|
@ -0,0 +1,9 @@
|
|||
# Queue List
|
||||
|
||||
The Url is http://localhost:3252/api/v2/Progress
|
||||
|
||||
This is Json Array (With This Object (Key/Value Pairs))
|
||||
| Name | Description | Type |
|
||||
| ------- | ----------------- | ----- |
|
||||
| Item1 | See [SavedVideo](SavedVideo.md) | Object |
|
||||
| Item2 | See [Video Resolution](Resolution.md) | Resolution (Int32)
|
|
@ -0,0 +1,10 @@
|
|||
# Resolution
|
||||
|
||||
This is an Enum
|
||||
|
||||
| Name | Number| Used to be |
|
||||
| ---- | ---- | -----|
|
||||
| Mux | 0 | Converted |
|
||||
| PreMuxed | 1 | NotConverted |
|
||||
| AudioOnly | 2 | Audio |
|
||||
| VideoOnly | 3 | N/A (Stored in "Converted" Directory)
|
|
@ -0,0 +1,7 @@
|
|||
# Saved Channel
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
File Path is Channel/{Id}.json
|
||||
| Name | Description | Type |
|
||||
|--------|-------|------|
|
||||
| Id | Channel Id | String
|
||||
| Title | Channel Title | String |
|
|
@ -0,0 +1,10 @@
|
|||
# Saved Playlist
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
File Path is Playlist/{Id}.json
|
||||
| Name | Description | Type |
|
||||
|--------|-------|------|
|
||||
| Id | Playlist Id | String
|
||||
| Title | Playlist Title | String |
|
||||
| AuthorChannelId | YouTube Channel Id | String |
|
||||
| AuthorChannelTitle | YouTube Channel Title | String |
|
||||
| Videos | Videos in Playlist | String[] |
|
|
@ -0,0 +1,16 @@
|
|||
# Saved Video
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
File Path is Info/{Id}.json
|
||||
| Name | Description | Type |
|
||||
|--------|-------|------|
|
||||
| Id | Video Id | String
|
||||
| Title | Video Title | String |
|
||||
| AuthorChannelId | YouTube Channel Id | String |
|
||||
| AuthorChannelTitle | YouTube Channel Title | String |
|
||||
| Keywords | YouTube Tags | String[] |
|
||||
| Likes | Video Likes | Int64 |
|
||||
| Dislikes | Video Dislikes | Int64 |
|
||||
| Views | Video Views | Int64 |
|
||||
| Duration | Video Duration ex 00:00:42 | TimeSpan (String) |
|
||||
| UploadDate | Video Upload Date ex 2015-07-22T19:00:00-05:00 | DateTime (String) |
|
||||
| AddDate | Date when added to downloader ex 2022-04-30T02:10:22.4359564-05:00 | DateTime (String) |
|
|
@ -0,0 +1,20 @@
|
|||
# Server
|
||||
|
||||
Get Requests
|
||||
|
||||
| Url | Description |
|
||||
|--------|-------|
|
||||
| http://localhost:3252/api/v2/Progress | [Video Progress](VideoProgress.md) |
|
||||
| http://localhost:3252/api/v2/QueueList | [Queue List](QueueList.md) |
|
||||
| http://localhost:3252/api/AddItem/{UrlOrId} | Download Video, Playlist, Channel or UserName v1 (Same as http://localhost:3252/api/AddItemRes/1/{UrlOrId}) (this is valid on previous downloader) (I prefer this one) |
|
||||
| http://localhost:3252/api/AddItemRes/{Resolution}/{UrlOrId} | Download Video, Playlist, Channel or UserName using [Resolution](Resolution.md) (uses the number) v1 (this is valid on previous downloader) (I prefer this one) |
|
||||
| http://localhost:3252/api/v2/AddVideo?v={Id}&res=PreMuxed | Download Video v2 using [Resolution](Resolution.md) (uses the Name on queryparm res) (I Prefer v1) |
|
||||
| http://localhost:3252/api/v2/AddPlaylist?v={Id}&res=PreMuxed | Download Playlist v2 using [Resolution](Resolution.md) (uses the Name on queryparm res) (I Prefer v1) |
|
||||
| http://localhost:3252/api/v2/AddChannel?v={Id}&res=PreMuxed | Download Channel v2 using [Resolution](Resolution.md) (uses the Name on queryparm res) (I Prefer v1) |
|
||||
| http://localhost:3252/api/v2/AddUser?v={Id}&res=PreMuxed | Download User v2 using [Resolution](Resolution.md) (uses the Name on queryparm res) (I Prefer v1) |
|
||||
| http://localhost:3252/api/v2/AddItem?v={Id}&res=PreMuxed | Download Video, Playlist Channel or User v2 using [Resolution](Resolution.md) (uses the Name on queryparm res) (I Prefer v1) |
|
||||
| http://localhost:3252/api/v2/subscribe?id={ChannelId}&getinfo=true\|false&conf=NotifyAndDownload | Subscribe to YouTuber (ChannelId), See [Bell](Bell.md) for conf queryparm |
|
||||
| http://localhost:3252/api/v2/subscribe?id={UserName}&conf=NotifyAndDownload | Subscribe to YouTuber (UserName), See [Bell](Bell.md) for conf queryparm |
|
||||
| http://localhost:3252/api/v2/resubscribe?id={ChannelId}&conf=Download | Change Bell for YouTuber, See [Bell](Bell.md) for conf queryparm |
|
||||
| http://localhost:3252/api/v2/unsubscribe?id={ChannelId} | Unsubscribe from YouTuber |
|
||||
| http://localhost:3252/api/v2/subscriptions | Get Subscriptions, Is a json array of [Subscription](Subscription.md) |
|
|
@ -0,0 +1,7 @@
|
|||
# Subscription
|
||||
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
| Name | Description | Type |
|
||||
|--------|-------|------|
|
||||
| Id | Channel Id | String |
|
||||
| BellInfo | See [Bell](Bell.md) | Bell (Int32) |
|
|
@ -0,0 +1,11 @@
|
|||
# Video Progress
|
||||
|
||||
The Url is http://localhost:3252/api/v2/Progress
|
||||
|
||||
This is Json Object (With these Key/Value Pairs)
|
||||
| Name | Description | Type |
|
||||
|--------|-------|------|
|
||||
| Video | See [SavedVideo](SavedVideo.md) | Object |
|
||||
| Progress | Video Progress (0-100) | Int32
|
||||
| ProgressRaw | Video Progress (0.0-1.0) | Double |
|
||||
| Length | Video Length in bytes (Wrong for Mux) | Int64
|
Loading…
Reference in New Issue