Тема: AHK: Скачивание через GET/POST-запросы
По мотивам темы VBS: Изменение условия скачивания, где обсуждалось скачивание постов ВКонтакта, лайков к ним, комментариев и лайков к ним.
Не понимаю про какие подпрограммы вы пишите.
Я пристально этой темой не занимался, но в принципе все данные о "шагах" и их количестве должны выдаваться в ответе пост-запроса.
Например разберем эту ссылку:
https://vk.com/team?w=wall-22822305_377885
При отправлении постзапроса на https://vk.com/al_wall.php с данными act=get_replies&al=1&count=20&from=wkview&offset=0&post=-22822305_377885&rev=0
Выдаётся ответ в котором написано:
!json>{"num":20,"count":260,"offset":"0"}
Из чего можно сделать вывод о количестве текущих сообщений, об общем количестве сообщений и текущем отступе.
Кстати максимум текущих сообщений можно получить 100, то есть отправлять в пост-запросе:
act=get_replies&al=1&count=100&from=wkview&offset=0&post=-22822305_377885&rev=0
Когда получили все сообщения - проходите их регуляркой для определения количества лайков каждого сообщения.
И если лайки у сообщения есть, то определяете его ссылку и отправляете ее в пост-запросе.
После чего вы получаете информацию о лайкнувших.
И дальше используете такую же схему.
Имелся в виду случай, когда под-страниц у комментариев или лайков будет 10 штук — как тогда формировать сдвиг по offset?
post = -22822305_377885
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
post_url = https://vk.com/wkview.php?act=show&al=1&w=wall%post%&offset=999999
HTTP.Open("GET", post_url, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
PostText := RegExReplace(ResponseText, "s).*?<\!bool><\!>(<div.*?</div>)<\!><\!json>.*", "$1")
fileappend %PostText%, %A_desktop%/%post%.html
post_likes := RegExReplace(ResponseText, "s).*?,""likes"":(\d+),.*", "$1")
post_replies := RegExReplace(ResponseText, "s).*?,""count"":(\d+),.*", "$1")
msgbox, Лайков:%A_Tab%%A_Tab%%post_likes%`nКомментов:%A_Tab%%post_replies%
if (NOT post_likes = "") or (post_likes > 60)
gosub, post_likes
return
post_likes:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("POST", "https://vk.com/wkview.php", true)
HTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send("act=show&al=1&w=likes/wall" post "&offset=0")
HTTP.WaitForResponse()
clipboard := HTTP.ResponseText
fileappend % clipboard, %A_desktop%/%post%.html
return