diff --git a/Tesses.YouTubeDownloader.YTGET/Program.cs b/Tesses.YouTubeDownloader.YTGET/Program.cs deleted file mode 100644 index 5504a05..0000000 --- a/Tesses.YouTubeDownloader.YTGET/Program.cs +++ /dev/null @@ -1,109 +0,0 @@ -using Newtonsoft.Json; -using Tesses.YouTubeDownloader; -using YoutubeExplode.Videos; - -namespace Tesses.YouTubeDownloader.YTGET -{ - public class Program - { - public static HttpClient Client; - public static async Task Main(string[] args) - { - Client=new HttpClient(); - var vars=Environment.GetEnvironmentVariables(); - if(vars.Contains("TYTD_DIR")) - { - Environment.CurrentDirectory=vars["TYTD_DIR"].ToString(); - } - Resolution resolution=Resolution.PreMuxed; - if(args.Length ==0) - { - while(true) - { - Console.Write("> "); - string res=Console.ReadLine(); - if(!string.IsNullOrWhiteSpace(res)) - { - if(res.Equals("exit")) - { - return; - }else if(res.Equals("clear")){ - Console.Clear(); - }else if(res.Equals("save")) { - Console.Write("Type Video Id or Url: "); - string idOrUrl=Console.ReadLine(); - Console.Write("Type destination directory: "); - string dest=Console.ReadLine(); - - } else if(res.Equals("help")) - { - Console.WriteLine("exit: Exit the program"); - Console.WriteLine("clear: clear screen"); - Console.WriteLine("resmux: set the Video Resolution to Mux"); - Console.WriteLine("respremux: set the Video Resolution to PreMuxed"); - Console.WriteLine("resaudio: set the Video Resolution to AudioOnly"); - Console.WriteLine("resvidonly: set the Video Resolution to VideoOnly"); - Console.WriteLine("Url or Id: Video Id or Url"); - Console.WriteLine(); - } - else if(res.Equals("resmux")) - { - Console.WriteLine("Video Resolution has been set to Mux"); - resolution=Resolution.Mux; - }else if(res.Equals("respremux")) - { - Console.WriteLine("Video Resolution has been set to PreMuxed"); - resolution = Resolution.PreMuxed; - }else if(res.Equals("resaudio")) - { - Console.WriteLine("Video Resolution has been set to AudioOnly"); - resolution = Resolution.AudioOnly; - }else if(res.Equals("resvidonly")) - { - Console.WriteLine("Video Resolution has been set to VideoOnly"); - resolution = Resolution.VideoOnly; - }else{ - await Download(res); - } - - - } - } - } - foreach(var arg in args) - { - await Download(arg); - } - } - public static async Task Download(string url,Resolution resolution=Resolution.PreMuxed,CancellationToken token=default(CancellationToken)) - { - //download video - - TYTDCurrentDirectory currentDirectory=new TYTDCurrentDirectory(); - currentDirectory.CreateDirectories(); - VideoId? id=VideoId.TryParse(url); - if(id.HasValue) - { - var savedVideo= await currentDirectory.GetSavedVideoAsync(id.Value); - if(savedVideo !=null) - { - Console.Write($"{savedVideo.Title}: "); - - //bool first=true; - using(ProgressBar bar=new ProgressBar()) - { - bar.Report(0.0); - await currentDirectory.DownloadNoQueue(savedVideo,resolution,token,new Progress((p)=>{ - bar.Report(p); - })); - bar.Report(0.99); - bar.Report(1.0); - - } - Console.WriteLine(); - - } - } - } - } -} \ No newline at end of file diff --git a/Tesses.YouTubeDownloader.YTGET/ProgressBar.cs b/Tesses.YouTubeDownloader.YTGET/ProgressBar.cs deleted file mode 100644 index cdbf74b..0000000 --- a/Tesses.YouTubeDownloader.YTGET/ProgressBar.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.Text; -using System.Threading; - -/// -/// An ASCII progress bar -/// -/// https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54 -public class ProgressBar : IDisposable, IProgress { - private const int blockCount = 10; - private readonly TimeSpan animationInterval = TimeSpan.FromSeconds(1.0 / 8); - private const string animation = @"|/-\"; - - private readonly Timer timer; - - private double currentProgress = 0; - private string currentText = string.Empty; - private bool disposed = false; - private int animationIndex = 0; - - public ProgressBar() { - timer = new Timer(TimerHandler); - - // A progress bar is only for temporary display in a console window. - // If the console output is redirected to a file, draw nothing. - // Otherwise, we'll end up with a lot of garbage in the target file. - if (!Console.IsOutputRedirected) { - ResetTimer(); - } - } - - public void Report(double value) { - // Make sure value is in [0..1] range - value = Math.Max(0, Math.Min(1, value)); - Interlocked.Exchange(ref currentProgress, value); - } - - private void TimerHandler(object state) { - lock (timer) { - if (disposed) return; - - int progressBlockCount = (int) (currentProgress * blockCount); - int percent = (int) (currentProgress * 100); - string text = string.Format("[{0}{1}] {2,3}% {3}", - new string('#', progressBlockCount), new string('-', blockCount - progressBlockCount), - percent, - animation[animationIndex++ % animation.Length]); - UpdateText(text); - - ResetTimer(); - } - } - - private void UpdateText(string text) { - // Get length of common portion - int commonPrefixLength = 0; - int commonLength = Math.Min(currentText.Length, text.Length); - while (commonPrefixLength < commonLength && text[commonPrefixLength] == currentText[commonPrefixLength]) { - commonPrefixLength++; - } - - // Backtrack to the first differing character - StringBuilder outputBuilder = new StringBuilder(); - outputBuilder.Append('\b', currentText.Length - commonPrefixLength); - - // Output new suffix - outputBuilder.Append(text.Substring(commonPrefixLength)); - - // If the new text is shorter than the old one: delete overlapping characters - int overlapCount = currentText.Length - text.Length; - if (overlapCount > 0) { - outputBuilder.Append(' ', overlapCount); - outputBuilder.Append('\b', overlapCount); - } - - Console.Write(outputBuilder); - currentText = text; - } - - private void ResetTimer() { - timer.Change(animationInterval, TimeSpan.FromMilliseconds(-1)); - } - - public void Dispose() { - lock (timer) { - disposed = true; - UpdateText(string.Empty); - } - } - -} \ No newline at end of file diff --git a/Tesses.YouTubeDownloader.YTGET/Tesses.YouTubeDownloader.YTGET.csproj b/Tesses.YouTubeDownloader.YTGET/Tesses.YouTubeDownloader.YTGET.csproj deleted file mode 100644 index 3415ca0..0000000 --- a/Tesses.YouTubeDownloader.YTGET/Tesses.YouTubeDownloader.YTGET.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - Exe - net6.0 - enable - enable - - -