Приложение позволяет получить прямую ссылку на видео YouTube в формате MP4, спрятанную в коде страницы с видео и зашифрованную. Поддерживается вставка ссылки на видео из буфера обмена и копирование прямой ссылки в буфер.
Внимание! YouTube иногда перепрятывает ссылки к своим видео, так что программа рано или поздно потеряет свою актуальность. Будьте к этому готовы. Учитывайте этот нюанс в своих проектах На момент 27 февраля 2014 года программа работала.
Код функции, ищущей ссылки в коде страницы. // html - HTML-код страницы с видео. // using System.Text.RegularExpressions; private List<string> ExtractUrls(string html) { List<string> urls = new List<string>(); string DataBlockStart = "\"url_encoded_fmt_stream_map\":\\s+\"(.+?)&"; // Marks start of Javascript Data Block
html = Uri.UnescapeDataString(Regex.Match(html, DataBlockStart, RegexOptions.Singleline).Groups[1].ToString());
string firstPatren = html.Substring(0, html.IndexOf('=') + 1);
var matchs = Regex.Split(html, firstPatren);
for (int i = 0; i < matchs.Length; i++) matchs[i] = firstPatren + matchs[i];
foreach (var match in matchs) { if (!match.Contains("url=")) continue;
string url = Helper.GetTxtBtwn(match, "url=", "\\u0026", 0); if (url == "") url = Helper.GetTxtBtwn(match, "url=", ",url", 0); if (url == "") url = Helper.GetTxtBtwn(match, "url=", "\",", 0);
string sig = Helper.GetTxtBtwn(match, "sig=", "\\u0026", 0); if (sig == "") sig = Helper.GetTxtBtwn(match, "sig=", ",sig", 0); if (sig == "") sig = Helper.GetTxtBtwn(match, "sig=", "\",", 0);
while ((url.EndsWith(",")) || (url.EndsWith(".")) || (url.EndsWith("\""))) url = url.Remove(url.Length - 1, 1);
while ((sig.EndsWith(",")) || (sig.EndsWith(".")) || (sig.EndsWith("\""))) sig = sig.Remove(sig.Length - 1, 1);
if (string.IsNullOrEmpty(url)) continue; if (!string.IsNullOrEmpty(sig)) url += "&signature=" + sig; urls.Add(url); } return urls; }
|