مشکل اول اینه که پروکسی محلی رو بدون پورت تشخیص میده که میتونید دو متد زیر رو در کلاس Helper اصلاح کنید.(دو متد رو میتونید ادغام کنید)
public static IWebProxy InitialProxy()
{
IWebProxy address = GetIeProxy();
return address;
//if (!string.IsNullOrEmpty(address))
//{
// WebProxy proxy = new WebProxy(address) {Credentials = CredentialCache.DefaultNetworkCredentials};
// return proxy;
//}
//return null;
}
private static IWebProxy GetIeProxy()
{
var p = WebRequest.DefaultWebProxy;
if (p == null)
return null;
WebProxy webProxy;
var proxy = p as WebProxy;
if (proxy != null)
webProxy = proxy;
else
{
Type t = p.GetType();
var s = t.GetProperty("WebProxy", (BindingFlags)0xfff).GetValue(p, null);
webProxy = s as WebProxy;
}
if (webProxy == null || webProxy.Address == null || string.IsNullOrEmpty(webProxy.Address.AbsolutePath ))
return null;
return webProxy;
}
در کلاس YouTubeDownloader چندجا از عبارات باقاعده استفاده شده که الگوهاش مشکل دارند. الگوها رو به صورت زیر اصلاح کنید.(اگر فضای خالی در عبارات زیر میبینید حذف کنید.)
"\"length_seconds\"\\s*:\\s*\"(\\d+)\""
"\"url_encoded_fmt_stream_map\"\\s*:\\s*\"(.+?)\u0 026"
"\u0026itag=([1-9]?[0-9]?[0-9])"
"'IS_WIDESCREEN':\\s*(.+?)\\s*"