Remove crappy blazor class and add throttle to SSE
This commit is contained in:
parent
15cf9a6606
commit
53b6f8b27f
|
@ -16,6 +16,7 @@ using Tesses.WebServer.Swagme;
|
||||||
|
|
||||||
namespace Tesses.Extensions
|
namespace Tesses.Extensions
|
||||||
{
|
{
|
||||||
|
|
||||||
public static class Extensions
|
public static class Extensions
|
||||||
{
|
{
|
||||||
public static string Substring(this string value,string str)
|
public static string Substring(this string value,string str)
|
||||||
|
@ -31,8 +32,37 @@ namespace Tesses.Extensions
|
||||||
|
|
||||||
namespace Tesses.YouTubeDownloader.Server
|
namespace Tesses.YouTubeDownloader.Server
|
||||||
{
|
{
|
||||||
|
|
||||||
using Tesses.YouTubeDownloader;
|
using Tesses.YouTubeDownloader;
|
||||||
|
|
||||||
|
internal class EventSender
|
||||||
|
{
|
||||||
|
DateTime lastScan = DateTime.Now;
|
||||||
|
TimeSpan ts;
|
||||||
|
public EventSender(TimeSpan interval)
|
||||||
|
{
|
||||||
|
this.ts = interval;
|
||||||
|
}
|
||||||
|
public bool CanScan
|
||||||
|
{
|
||||||
|
get{
|
||||||
|
return DateTime.Now - lastScan >= ts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendEvent(Action action)
|
||||||
|
{
|
||||||
|
if(CanScan)
|
||||||
|
{
|
||||||
|
lastScan = DateTime.Now;
|
||||||
|
action();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void Sent()
|
||||||
|
{
|
||||||
|
lastScan = DateTime.Now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static class B64
|
internal static class B64
|
||||||
{
|
{
|
||||||
|
@ -988,6 +1018,13 @@ internal static class B64
|
||||||
}
|
}
|
||||||
public async Task Event(ServerContext ctx)
|
public async Task Event(ServerContext ctx)
|
||||||
{
|
{
|
||||||
|
double interval=0;
|
||||||
|
string intervalStr;
|
||||||
|
if(ctx.QueryParams.TryGetFirst("interval",out intervalStr))
|
||||||
|
{
|
||||||
|
if(!double.TryParse(intervalStr,out interval)) interval=0;
|
||||||
|
}
|
||||||
|
|
||||||
IStorage storage=Downloader as IStorage;
|
IStorage storage=Downloader as IStorage;
|
||||||
if(storage != null){
|
if(storage != null){
|
||||||
|
|
||||||
|
@ -1010,7 +1047,10 @@ internal static class B64
|
||||||
p.Video=e.VideoInfo;
|
p.Video=e.VideoInfo;
|
||||||
evts.SendEvent(p);
|
evts.SendEvent(p);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
EventSender s = new EventSender(TimeSpan.FromSeconds(interval));
|
||||||
storage.VideoProgress += (sender,e)=>{
|
storage.VideoProgress += (sender,e)=>{
|
||||||
|
bool wasFirst= first;
|
||||||
ProgressItem p=new ProgressItem();
|
ProgressItem p=new ProgressItem();
|
||||||
p.StartEvent=false;
|
p.StartEvent=false;
|
||||||
p.StopEvent=false;
|
p.StopEvent=false;
|
||||||
|
@ -1022,7 +1062,13 @@ internal static class B64
|
||||||
p.Video=e.VideoInfo;
|
p.Video=e.VideoInfo;
|
||||||
|
|
||||||
first=false;
|
first=false;
|
||||||
|
if(wasFirst || s.CanScan)
|
||||||
|
{
|
||||||
|
s.Sent();
|
||||||
evts.SendEvent(p);
|
evts.SendEvent(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
storage.VideoFinished +=(sender,e)=>{
|
storage.VideoFinished +=(sender,e)=>{
|
||||||
ProgressItem p=new ProgressItem();
|
ProgressItem p=new ProgressItem();
|
||||||
|
|
|
@ -16,11 +16,11 @@
|
||||||
<PackageId>Tesses.YouTubeDownloader.Server</PackageId>
|
<PackageId>Tesses.YouTubeDownloader.Server</PackageId>
|
||||||
<Author>Mike Nolan</Author>
|
<Author>Mike Nolan</Author>
|
||||||
<Company>Tesses</Company>
|
<Company>Tesses</Company>
|
||||||
<Version>2.0.1</Version>
|
<Version>2.0.1.1</Version>
|
||||||
<AssemblyVersion>2.0.1</AssemblyVersion>
|
<AssemblyVersion>2.0.1.1</AssemblyVersion>
|
||||||
<FileVersion>2.0.1</FileVersion>
|
<FileVersion>2.0.1.1</FileVersion>
|
||||||
<Description>Adds WebServer to TYTD</Description>
|
<Description>Adds WebServer to TYTD</Description>
|
||||||
<PackageLicenseExpression>LGPL-3.0-only</PackageLicenseExpression>
|
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
||||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||||
<PackageTags>YoutubeExplode, YouTube, YouTubeDownloader</PackageTags>
|
<PackageTags>YoutubeExplode, YouTube, YouTubeDownloader</PackageTags>
|
||||||
<RepositoryUrl>https://gitlab.tesses.cf/tesses50/tytd</RepositoryUrl>
|
<RepositoryUrl>https://gitlab.tesses.cf/tesses50/tytd</RepositoryUrl>
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Tesses.YouTubeDownloader
|
|
||||||
{
|
|
||||||
public interface IBlazorContext
|
|
||||||
{
|
|
||||||
public void StartEvents(Action<string> evt);
|
|
||||||
|
|
||||||
public void StopEvents();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -211,6 +211,7 @@ internal class SegmentedHttpStream : Stream
|
||||||
return v.Major >= 2;
|
return v.Major >= 2;
|
||||||
}
|
}
|
||||||
string url;
|
string url;
|
||||||
|
public string Url {get{return url;}}
|
||||||
public TYTDClient(string url)
|
public TYTDClient(string url)
|
||||||
{
|
{
|
||||||
client=new HttpClient();
|
client=new HttpClient();
|
||||||
|
@ -413,7 +414,7 @@ internal class SegmentedHttpStream : Stream
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
private async Task<IReadOnlyList<(SavedVideo Video, Resolution Resolution)>> GetQueueListAsync()
|
public async Task<IReadOnlyList<(SavedVideo Video, Resolution Resolution)>> GetQueueListAsync()
|
||||||
{
|
{
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
@ -426,7 +427,7 @@ internal class SegmentedHttpStream : Stream
|
||||||
|
|
||||||
return new List<(SavedVideo video,Resolution resolution)>();
|
return new List<(SavedVideo video,Resolution resolution)>();
|
||||||
}
|
}
|
||||||
private async Task<SavedVideoProgress> GetProgressAsync()
|
public async Task<SavedVideoProgress> GetProgressAsync()
|
||||||
{
|
{
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
@ -552,7 +553,6 @@ internal class SegmentedHttpStream : Stream
|
||||||
_error.Invoke(this,new TYTDErrorEventArgs("jNQXAC9IVRw",ex));
|
_error.Invoke(this,new TYTDErrorEventArgs("jNQXAC9IVRw",ex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public IBlazorContext BlazorContext {get;set;} = null;
|
|
||||||
public void ResetEvents()
|
public void ResetEvents()
|
||||||
{
|
{
|
||||||
if(src != null) {
|
if(src != null) {
|
||||||
|
@ -668,7 +668,7 @@ internal class SegmentedHttpStream : Stream
|
||||||
}
|
}
|
||||||
if(item.BellEvent)
|
if(item.BellEvent)
|
||||||
{
|
{
|
||||||
|
bell=true;
|
||||||
}
|
}
|
||||||
progress.Length = item.Length;
|
progress.Length = item.Length;
|
||||||
progress.ProgressRaw=item.Percent;
|
progress.ProgressRaw=item.Percent;
|
||||||
|
@ -713,17 +713,9 @@ internal class SegmentedHttpStream : Stream
|
||||||
}
|
}
|
||||||
private void _startEventStream()
|
private void _startEventStream()
|
||||||
{
|
{
|
||||||
if(BlazorContext != null)
|
|
||||||
{
|
|
||||||
BlazorContext.StartEvents((evt)=>{
|
|
||||||
sse_Event(this,new SSEEvent(evt));
|
|
||||||
});
|
|
||||||
src=new CancellationTokenSource();
|
|
||||||
hadBeenListeningToEvents=true;
|
|
||||||
src.Token.Register(BlazorContext.StopEvents);
|
|
||||||
}else{
|
|
||||||
Task.Run(_startEventStreamAsync).Wait(0);
|
Task.Run(_startEventStreamAsync).Wait(0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public ExtraData GetExtraDataOnce()
|
public ExtraData GetExtraDataOnce()
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
<PackageId>Tesses.YouTubeDownloader</PackageId>
|
<PackageId>Tesses.YouTubeDownloader</PackageId>
|
||||||
<Author>Mike Nolan</Author>
|
<Author>Mike Nolan</Author>
|
||||||
<Company>Tesses</Company>
|
<Company>Tesses</Company>
|
||||||
<Version>2.0.2.2</Version>
|
<Version>2.0.2.3</Version>
|
||||||
<AssemblyVersion>2.0.2.2</AssemblyVersion>
|
<AssemblyVersion>2.0.2.3</AssemblyVersion>
|
||||||
<FileVersion>2.0.2.2</FileVersion>
|
<FileVersion>2.0.2.3</FileVersion>
|
||||||
<Description>A YouTube Downloader</Description>
|
<Description>A YouTube Downloader</Description>
|
||||||
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
||||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||||
|
|
Loading…
Reference in New Issue