"Разрежьте мою жену на две по 20 лет" - попросил клоун у фокусника на представлении.
Вот и пришёл тот час, когда опять берём инструмент и вырезаем что считаем нужным.
Но сразу надо вспомнить разницу между строкой файла и строковой переменной, иначе запутаемся при обработке потока информации. Строка в файле (текстовом, конечно) обычно заканчивается переводом строки, но если сказать точнее, то завершается либо шестнадцатиричным кодом "0A" или двумя кодами "0A 0D". А вот уже строковой переменной всё равно какие символы с их шеснадцатиричными представлениями присутствуют. Грубо говоря, может быть несколько строк в переменной, есть просто какое-то количество данных.
В нашем текстовом файле, если посмотреть внимательно, в качестве разделителя строк используется "0A". Но давайте на всякий случай примем, что могут быть оба символа. Напомню, что их можно в VBScript записать в том числе как Chr(10)=="0a" и Chr(13)=="0d".
Пока пишется скрипт мы нам нужен код (кусочек скрипта) по сохранению в файл скаченной страницы, но его можно убрать в конечном варианте, так как страничка будет хранится в переменной g=.ResonseText
И да, мы немного меняем код программы, эту строку добавим после строки .Send
- g = Replace(g,Chr(13),"") 'убираем все упоминания возврата каретки
- g = Split(g,Chr(10)) 'в массив по переводу строки
- g = Filter(g,"hls")
- g = Join(g,w)
Для упрощения дальнейшего анализа вырезанного текста, сохраним его в файл и новые строки кода будем добавлять перед этой строкой:
- CreateObject("Scripting.FileSystemObject").CreateTextFile(u&".txt",True).Write(g).Close
Этот файл нужен будет только при создании скрипта, в конечной версии просто уберём эту строку. У меня получилась четверть от начального размера - это всё равно многовато наверное.
Можно уже убрать модуль с сохранением в файл всей страницы, если нам что-то не надо, вот такая получилась строгая "цензура". :-)
Хотя можно просто пока в начале строк поставить символ ' и если вдруг что-то понадобиться в первоначальном коде страницы, просто вернём как было.
Вот далее что делать - это как кто захочет, возможно есть способы проще, но мы не будем искать лёгких путей. Есть такой термин "JSON", а это подскажет что можно или надо сделать.
Мы же просто создадим массив, а в качестве разделителя элементов в текстовой переменной пусть будет последовательность запятая-двойная_кавычка.
- g = Split(g,","&h)
- g = Join(g,w) 'для записи в файл надо массив "слить" в текст
Открываем файл "video-146954363_456239568.txt", смотрим, читаем, анализируем...
Обращаем внимание на строку --> jpg":"https:\/\/sun9-43.userapi.com\/c856520\/v856520584\/370bd\/7Ar0C7FYZ18.jpg"
Обращаем внимание на строку --> md_title":"Коллекция Джунджи Ито \/ Ito Junji Collection [12 из 12]"
Обращаем внимание на строку --> mvData":{"title":"Коллекция Джунджи Ито \/ Ito Junji Collection [12 из 12]"
Обращаем внимание на строку --> desc":"Донат: https:\/\/www.donationalerts.com\/r\/animestreams<br>(Лучший подарок админу и его друзьям)"
Обращаем внимание на строку --> hls_raw":"+EXTM3U\n+EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2224128,RESOLUTION=1280x720\nhttps:\/\/pvv4.vkuservideo.net.........
Текст может немного отличаться внутри, но нас интересует начало строк, становится понятно, что в текст массив после разрезания мы поместили без кавычки в начале, отрезали-то запятая+кавычка, значит надо вернуть символ. Вносим корректировку, вот как эти строки должны выглядеть:
g = Split(g,","&h)
- g = Join(g,w&h) 'для записи в файл надо массив "слить" в текст, в h символ кавычки
Мы теперь уже готовы перейти к новому этапу - можно убрать "мусор" и оставить только некоторые строки, на которые обратили внимание ранее.
Опять же скажу, что наверное есть лучший способ по такой "обработке" файла, сделаем как получается.
Давайте пока остановимся и посмотрим какой получился скрипт:
- 'https://zen.yandex.ru/id/5e6e13e66be9d72182b9ebf5
- On Error Resume Next
- w = vbCrLf
- h = Chr(34)
- t = "Host"
- d = "vk.com"
- h1 = "User-Agent"
- h2 = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0"
- url = "https://vk.com/video-146954363_456239568?list=e28287d47241c04b6b"
- url = Split(InputBox("Введите адрес видео","Enter URL",url),"?")(0)
- u = Split(url,"/")(3)
- With CreateObject("Msxml2.XMLHttp.6.0")
- .Open "GET", url&"?", False
- .SetRequestHeader t, d
- .SetRequestHeader h1, h2
- .Send
- .Open "GET", url&"?", False
- .SetRequestHeader t, d
- .SetRequestHeader h1, h2
- .Send
- g = .ResponseText
- End With
- g = Replace(g,Chr(13),"")
- g = Split(g,Chr(10))
- g = Filter(g,"hls")
- g = Join(g,w)
- g = Split(g,","&h)
- g = Join(g,w&h)
- CreateObject("Scripting.FileSystemObject").CreateTextFile(u&".txt",True).Write(g).Close
- MsgBox ": The End. :":Wscript.Quit