omansak / libvideo

A lightweight .NET library to download YouTube videos.
BSD 2-Clause "Simplified" License
538 stars 163 forks source link

Jurassic Library went rouge. #269

Closed L0um15 closed 1 year ago

L0um15 commented 1 year ago

Youtube did something again:

at VideoLibrary.YouTubeVideo.DescrambleNSignature(System.String, System.String)
[...]
   at DynamicClass.anonymous(Jurassic.Compiler.ExecutionContext, System.Object[])
   at Jurassic.Library.UserDefinedFunction.CallLateBound(System.Object, System.Object[])
   at Jurassic.Library.FunctionInstance.CallWithStackTrace(System.String, System.String, Int32, System.Object, System.Object[])
   at DynamicClass.anonymous(Jurassic.Compiler.ExecutionContext, System.Object[])
   at Jurassic.Library.UserDefinedFunction.CallLateBound(System.Object, System.Object[])
   at Jurassic.ScriptEngine.CallGlobalFunction(System.String, System.Object[])
   at Jurassic.ScriptEngine.CallGlobalFunction[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.String, System.Object[])
   at VideoLibrary.YouTubeVideo.DescrambleNSignature(System.String, System.String)
   at VideoLibrary.YouTubeVideo+<NDescrambleAsync>d__36.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[VideoLibrary.YouTubeVideo+<NDescrambleAsync>d__36, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]](<NDescrambleAsync>d__36 ByRef)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[VideoLibrary.YouTubeVideo+<NDescrambleAsync>d__36, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]](<NDescrambleAsync>d__36 ByRef)
   at VideoLibrary.YouTubeVideo.NDescrambleAsync(System.String, System.Func`1<VideoLibrary.DelegatingClient>)
   at VideoLibrary.YouTubeVideo+<GetUriAsync>d__19.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<GetUriAsync>d__19, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].ExecutionContextCallback(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<GetUriAsync>d__19, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].MoveNext(System.Threading.Thread)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<GetUriAsync>d__19, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task`1<System.__Canon>, System.__Canon)
   at VideoLibrary.YouTubeVideo+<DecryptAsync>d__32.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<DecryptAsync>d__32, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].ExecutionContextCallback(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<DecryptAsync>d__32, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].MoveNext(System.Threading.Thread)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[VideoLibrary.YouTubeVideo+<DecryptAsync>d__32, libvideo, Version=3.2.2.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task`1<System.__Canon>, System.__Canon)
   at System.Net.Http.HttpClient+<GetStringAsyncCore>d__41.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpClient+<GetStringAsyncCore>d__41, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].ExecutionContextCallback(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpClient+<GetStringAsyncCore>d__41, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpClient+<GetStringAsyncCore>d__41, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task`1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult()
   at System.Net.Http.HttpConnection+ContentLengthReadStream+<CompleteCopyToAsync>d__5.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+ContentLengthReadStream+<CompleteCopyToAsync>d__5, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].ExecutionContextCallback(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+ContentLengthReadStream+<CompleteCopyToAsync>d__5, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+ContentLengthReadStream+<CompleteCopyToAsync>d__5, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Net.Http.HttpConnection+<CopyToContentLengthAsync>d__112.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+<CopyToContentLengthAsync>d__112, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].ExecutionContextCallback(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+<CopyToContentLengthAsync>d__112, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+<CopyToContentLengthAsync>d__112, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Threading.Tasks.Task`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TrySetResult(System.Threading.Tasks.VoidTaskResult)
   at System.Net.Http.HttpConnection+<FillAsync>d__102.MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Http.HttpConnection+<FillAsync>d__102, System.Net.Http, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task`1<Int32>, Int32)
   at System.Net.Security.SslStream+<ReadAsyncInternal>d__188`1[[System.Net.Security.AsyncReadWriteAdapter, System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Security.SslStream+<ReadAsyncInternal>d__188`1[[System.Net.Security.AsyncReadWriteAdapter, System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox, Boolean)
   at System.Threading.Tasks.Task.RunContinuations(System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task`1<Int32>, Int32)
   at System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__186`1[[System.Net.Security.AsyncReadWriteAdapter, System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__186`1[[System.Net.Security.AsyncReadWriteAdapter, System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Net.Security, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]].MoveNext(System.Threading.Thread)
   at System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.InvokeContinuation(System.Action`1<System.Object>, System.Object, Boolean, Boolean)
   at System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
L0um15 commented 1 year ago

Videolibrary 3.2.2 on NET 6

abduljalilmatora commented 1 year ago

I am using the following code for downloading video from YouTube: `using System; using System.Diagnostics; using System.IO; using System.Net; using VideoLibrary;

namespace you_tube_download { class Program { static void Main(string[] args) { try { Console.WriteLine("write url video : "); string url = Console.ReadLine(); string information = ""; var videos = YouTube.Default.GetAllVideos(url); int hightaudio = 1; int hightvideo = 1; Console.WriteLine("\nlist all format \n"); foreach (var item in videos)//write all file on this url { Console.WriteLine(item.Resolution+","+item.Format + "," + item.AudioFormat + "," + item.AudioBitrate + "," + item.ContentLength + "," + item.AdaptiveKind); if (item.AdaptiveKind.ToString() == "Audio" && item.AudioBitrate > hightaudio) { hightaudio = item.AudioBitrate; information = item.AudioFormat + "," + item.AudioBitrate+","+item.ContentLength; } if (item.Resolution > hightvideo) { hightvideo = item.Resolution; } } Console.WriteLine("\ndownload high video resolotion {0} and high audio bitrate {1}",hightvideo,hightaudio); string[] split = information.Split(','); foreach (var item in videos)//download audio { if (split[0]== item.AudioFormat.ToString() && split[1] == item.AudioBitrate.ToString() && split[2] == item.ContentLength.ToString()) { Console.WriteLine("\ndownload audio with bitrate {0} and size {1}MB",item.AudioBitrate, Math.Round((double)item.ContentLength / 1000000, 2)); downloadbest(item, Directory.GetCurrentDirectory() + "\file123456798.mp3"); Console.Write("end\n"); } } foreach (var item in videos)//download video { if (item.Resolution==hightvideo) { Console.WriteLine("\ndownload video with Resolution {0} and size {1}MB", item.Resolution, Math.Round((double)item.ContentLength/1000000,2)); downloadbest(item, Directory.GetCurrentDirectory() + "\file123456798.mp4"); Console.Write("end\n"); break; } } Console.WriteLine("wait for marge"); combine(); File.Delete(Directory.GetCurrentDirectory() + "\file123456798.mp3"); File.Delete(Directory.GetCurrentDirectory() + "\file123456798.mp4"); Console.WriteLine("press any key to continue..."); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine("\n\n\n\n" + ex); Console.ReadKey(); } Process.Start(Directory.GetCurrentDirectory()); } static void combine() { Process p = new Process(); p.StartInfo.FileName = "ffmpeg.exe"; p.StartInfo.Arguments = "-i \"" + Directory.GetCurrentDirectory() + "\file123456798.mp4\" -i \"" + Directory.GetCurrentDirectory() + "\file123456798.mp3\" -preset veryfast \"" + Directory.GetCurrentDirectory() + "\final.mp4\""; p.Start(); p.WaitForExit(); } static void downloadbest(YouTubeVideo y, string patch) { int total = 0; FileStream fs =null; Stream streamweb = null; WebResponse w_response = null; try { WebRequest w_request = WebRequest.Create(y.Uri); if (w_request != null) { w_response = w_request.GetResponse(); if (w_response != null) { fs = new FileStream(patch, FileMode.Create); byte[] buffer = new byte[1281024]; int bytesRead = 0; streamweb = w_response.GetResponseStream(); Console.WriteLine("Download Started"); do { bytesRead = streamweb.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, bytesRead); total += bytesRead; Console.Write($"\rDownloading ({Math.Round(((double)total/(int)y.ContentLength) 100, 2)}%) {total}/{y.ContentLength} "); } while (bytesRead > 0); Console.WriteLine("\nDownload Complete"); } }

        }
        catch (Exception ex)
        {
            Console.WriteLine("\n\n\n\n" + ex);
            Console.ReadKey();
            Process.Start(Directory.GetCurrentDirectory());
        }
        finally
        {
            if (w_response != null) w_response.Close();
            if (fs != null) fs.Close();
            if (streamweb != null) streamweb.Close();
        }
    }
}

}`

But in downloadbest(YouTubeVideo y, string patch) function at the line WebRequest w_request = WebRequest.Create(y.Uri); I got the following error:

Symbol loading for optimized module Jurassic.dll was skipped because Just My Code is enabled System.StackOverflowException: 'Exception of type 'System.StackOverflowException' was thrown error1 error2 error3 error4

omansak commented 1 year ago

270