51 (изменено: DD, 2018-05-11 23:48:15)

Re: AHK: Скачивание через GET/POST-запросы

Круто, спасибо! Можно ли будет задать игнорируемые символы — в частности, угловые скобки (тэги), а то они переделываются в <>? Или может имеется код, преобразующий юникод в готовые символы, как есть? —

\u2026   —>   
\u201d   —>   

52 (изменено: DD, 2018-05-11 23:59:52)

Re: AHK: Скачивание через GET/POST-запросы

Нашёл)) —

HTM =
(
<p>Your comment is correct, and I would like to add more&#8230; Crucifixion was not only a death sentence, but a form of cruel torture that sometimes took days for one to die as the individual endured excruciation pain beforehand&#8230; The scribes, and Pharisee&#8217;s who hated Jesus (not all did), wanted to humiliate our Savior to the utmost while demanding that the Roman governor Pilate execute HIM in this manner&#8230; Of course scripture had to fulfilled, but never the less, their hatred for Jesus was nothing more than Satanically inspired&#8230; </p>
<p>The cross is a pagan symbol that was used to honor Tammuz&#8230; The ancient son of Semiramis, who was worshiped by many as a goddess&#8230; Thus making her son a god in the eyes of the population&#8230; The ancient Israelites were shown to be worshiping Tammuz in the temple of God by weeping for this false god within Ezekiel chapter 8&#8230;<br />
&#8220;13 And He said to me, \u201cTurn again, and you will see greater abominations that they are doing.\u201d 14 So He brought me to the door of the north gate of the Lord\u2019s house; and to my dismay, women were sitting there weeping for Tammuz.&#8221;</p>
<p>Crucifixion was basically a sacrifice to the so called god Tammuz&#8230; Thus the scribes, and Pharisee&#8217;s were trying their best to discredit the Son of God&#8230; But it does not matter what these man thought, or imagined, that sacrifice of our Savior (the perfect Lamb of God) was necessary for the redemption of mankind&#8217;s sins&#8230; Only through HIM is anyone forgiven for the remission of sin&#8230;
)
HTM := JavaEscapedToHtml(HTM)
HTM := UnHTM(HTM)
msgbox % HTM


JavaEscapedToHtml(s) {
    i := 1
    while j := RegExMatch(s, "\\u[A-Fa-f0-9]{1,4}", m, i)
        e .= SubStr(s, i, j-i) Chr("0x" SubStr(m, 3)), i := j + StrLen(m)
    Transform, OutputVar, HTML, % e . SubStr(s, i)
    return OutputVar
}

UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
   Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
   IfEqual,HT,,   SetEnv,HT, % "&aacuteá&acircâ&acute´&aeligæ&agraveà&amp&aringå&atildeã&au"
 . "mlä&bdquo„&brvbar¦&bull•&ccedilç&cedil¸&cent¢&circˆ&copy©&curren¤&dagger†&dagger‡&deg"
 . "°&divide÷&eacuteé&ecircê&egraveè&ethð&eumlë&euro€&fnofƒ&frac12½&frac14¼&frac34¾&gt>&h"
 . "ellip…&iacuteí&icircî&iexcl¡&igraveì&iquest¿&iumlï&laquo«&ldquo“&lsaquo‹&lsquo‘&lt<&m"
 . "acr¯&mdash—&microµ&middot·&nbsp &ndash–&not¬&ntildeñ&oacuteó&ocircô&oeligœ&ograveò&or"
 . "dfª&ordmº&oslashø&otildeõ&oumlö&para¶&permil‰&plusmn±&pound£&quot""&raquo»&rdquo”&reg"
 . "®&rsaquo›&rsquo’&sbquo‚&scaronš&sect§&shy&sup1¹&sup2²&sup3³&szligß&thornþ&tilde˜&tim"
 . "es×&trade™&uacuteú&ucircû&ugraveù&uml¨&uumlü&yacuteý&yen¥&yumlÿ"

   HTM := RegExReplace( HTM,"&amp;(\w+;)", "&$1" )   ;!! для обработки &amp;lt; 
   HTM := RegExReplace( HTM,"&amp;(#\d+;)", "&$1" )  ;!! для обработки &amp;#60;

   TXT := RegExReplace( HTM,"<[^>]+>", " " )               ; Remove all tags between  "<" and ">"
   Loop, Parse, TXT, &`;                              ; Create a list of special characters
      L := "&" A_LoopField ";", R .= (!(A_Index&1)) ? ( (!InStr(R,L,1)) ? L:"" ) : ""
   StringTrimRight, R, R, 1
   Loop, Parse, R , `;                                ; Parse Special Characters
      If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
         StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
   Else If ( SubStr( A_LoopField,2,1)="#" )
      StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All

   TXT := RegExReplace(TXT, " +", " ")       ;!! множественные пробелы на один
   TXT := RegExReplace(TXT, "m)(*UCP)(?<=\s|^)""(?=\w)", "«")      ;!! кавычки
   TXT := RegExReplace(TXT, "m)(*UCP)(?<=[^\s""])""(?=\W|$)", "»") ;!! кавычки

;!! кавычки
loop, 10
{
      TXT := RegExReplace(TXT, "«([^«»]*)«([^«»]*)»", "«$1«$2»")
      TXT := RegExReplace(TXT, " ""([\s?\)\]\}\,\.\:\;\!\?…""'])", "n~b~s~p""$1")
      TXT := RegExReplace(TXT, "((^|[\s]|&nbsp;)([\(\[\{""]|\d+)*)([""])(\S([^""]*?|.*?\x20[""]\x20.*?)\S|[^""\s])[""]((\d+|[\)\]\}\,\.\:\;\!\?…""])*($|[\s]|&nbsp;))", "$1«$5»$7")
      TXT := RegExReplace(TXT, "n~b~s~p", " ")
      TXT := RegExReplace(TXT, "«([^«»]*)«([^«»]*)»", "«$1„$2“")
}

   Return RegExReplace( TXT, "(^\s*|\s*$)")            ; Remove leading/trailing white spaces
}

53 (изменено: Malcev, 2018-05-12 02:14:28)

Re: AHK: Скачивание через GET/POST-запросы

DD пишет:

Или может имеется код, преобразующий юникод в готовые символы, как есть? —

msgbox % JavaEscapedToHtml("\u2026test\u00bb")

JavaEscapedToHtml(s) {
    i := 1
    while j := RegExMatch(s, "\\u[A-Fa-f0-9]{1,4}", m, i)
        e .= SubStr(s, i, j-i) Chr("0x" SubStr(m, 3)), i := j + StrLen(m)
    return e . SubStr(s, i)
}
+ DD

54

Re: AHK: Скачивание через GET/POST-запросы

Авторизация на ВК перестала работать. Капчу добавили?

55

Re: AHK: Скачивание через GET/POST-запросы

Ну я вам уже объяснял как получить данные для отправки.
Посмотрите, что отправляете в IE и повторите тоже самое в скрипте.

56

Re: AHK: Скачивание через GET/POST-запросы

Имелось в виду, что скрипт авторизации, который работал вчера — сегодня не работает. У вас получается залогиниться с помощью кода по ссылке?

57

Re: AHK: Скачивание через GET/POST-запросы

С помощью моего, да.
http://forum.script-coding.com/viewtopi … 83#p124583

+ DD

58 (изменено: DD, 2018-08-20 14:21:53)

Re: AHK: Скачивание через GET/POST-запросы

Я тот же использую). Сейчас заработало — видимо, по IP блокировали.

59

Re: AHK: Скачивание через GET/POST-запросы

Постепенно назрел вопрос скачивания изображений из страниц, получаемых через GET/POST-запросы. Нет ли чего готового? Как быть при скачивании вот таких образцов из Фейсбука? —

+ открыть спойлер

https://z-p3-external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQC3zNibI5IvR9xS&w=56&h=56&url=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fj_b68PLpptE%2Fmaxresdefault.jpg&cfs=1&jq=75&sx=560&sy=0&sw=720&sh=720&ext=jpg&_nc_hash=AQCtNqSvG2JiJbch
https://z-p3-static.xx.fbcdn.net/rsrc.php/v3/y8/r/sEX739EOBGI.png
https://z-p3-external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQCD1xocR0u8pGcr&w=56&h=56&url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FohApS9e56z8%2Fhqdefault.jpg&cfs=1&jq=75&sx=33&sy=0&sw=360&sh=360&ext=jpg&_nc_hash=AQDTIEG1tWbIB793

P.S. Кстати, в расширенном поиске указал "POST" в ключевых словах для "только заголовков" — и настоящая тема почему-то не нашлась.

60

Re: AHK: Скачивание через GET/POST-запросы

А в чём проблема-то? Сохраняете responseBody в файл, примеры вроде есть.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

61

Re: AHK: Скачивание через GET/POST-запросы

http://forum.script-coding.com/viewtopic.php?id=9592

62 (изменено: DD, 2018-09-21 23:49:56)

Re: AHK: Скачивание через GET/POST-запросы

teadrinker
Имелась в виду ситуация, когда в responseBody находится список изображений (в т.ч. по образцу выше) и задача их все скачать — меняя пути на локальные, обрабатывая с учётом запрещенных символов (в т.ч. в ссылках на скачивание, напр., % — на `%), длины имён, уже существующих в директории файлов с теми же именами, но с др. размером, и т.п. Наверняка кто-то уже написал такую подпрограмму?

Malcev
Спасибо, кое-то приметил. К примеру, как настроить следующий код оттуда — на загрузку списка изображений, полученного из responseBody? —


#SingleInstance Force

Global Dir := "C:\Tmp\"
url = https://z-p3-external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQC3zNibI5IvR9xS&w=56&h=56&url=https`%3A`%2F`%2Fi.ytimg.com`%2Fvi`%2Fj_b68PLpptE`%2Fmaxresdefault.jpg&cfs=1&jq=75&sx=560&sy=0&sw=720&sh=720&ext=jpg&_nc_hash=AQCtNqSvG2JiJbch
 
MsgBox % Download(url) 
Return 

Download(Location)
{
    Global Path, FullSize, KBSize 
    Info := HttpQueryInfo(Location, 22)  
    RegexMatch(Info, "i).*? (.*?)\R", stat)
    If !InStr(stat1, "200 OK")
        Return "Error: " stat1
    RegexMatch(Info, "i)\RContent-Disposition: .*?filename=""(?<D>.*?)""", C)   
    If CD !=  
        Path := CD
    Else
    { 
        SplitPath, Location, FileName, , Ext, NameNoExt 
        RegexMatch(Info, "i)\RContent-Type: (.*?/(.*?))\R", CT)   
        RegRead, ExtMIME, HKEY_CLASSES_ROOT, MIME\Database\Content Type\%CT1%, Extension  
        If (ExtMIME != "")
           Path := NameNoExt ExtMIME
        Else If (Ext = "" && CT2 != "")
            Path := NameNoExt "." CT2
        Else
            Path := FileName
    }
    If !Path
        Return "Error: Path not found"  
    RegexMatch(Info, "i)\RContent-Length: (?<L>.*?)\R", C), FullSize := CL
    Path := Dir Path ;!!
    MsgBox % Path "`n`n" KBSize := Floor(FullSize/1024) "KB"
    SetTimer, GetSize, 100 



StringReplace, Path, Path, ?, _, All

    UrlDownloadToFile, %Location%, %Path%   
    SetTimer, GetSize, -1
    Progress, Hide
    Return "Complete"
}

GetSize: 
    FSize := FileOpen(Path, "r").Length 
    Percent := Floor((FSize / FullSize) * 100)  
    Progress, %Percent%, %Percent%`% Complete, Downloading... 
        , % Floor(FSize/1024) "KB / " KBSize " || " Path 
    Return
 
Esc::   
    ExitApp

HttpQueryInfo(URL, QueryInfoFlag=21, Proxy="", ProxyBypass="")
{
   hModule := DllCall("LoadLibrary", "str", "wininet.dll", Ptr)
   AccessType := Proxy = "" ? 1 : 3
   
   Loop 1
   {
      Error := 1
      if !io_hInternet := DllCall("wininet\InternetOpen", "str", "", "uint", AccessType, "str", Proxy, "str", ProxyBypass, "uint", 0, Ptr) ;dwFlags
         break
      
      if !iou_hInternet := DllCall("wininet\InternetOpenUrl", Ptr, io_hInternet, "str", url, "str", "", "uint", 0, "uint", 0x80000000, "uint", 0)
         break
      
      VarSetCapacity(buffer_len, 4, 0) 
      Loop
      {         
         if A_Index = 3
            break 2
         
         VarSetCapacity(buffer, NumGet(&buffer_len+0, "UInt"))
         hqi := DllCall("wininet\HttpQueryInfo", Ptr, iou_hInternet, "uint", QueryInfoFlag, Ptr, &buffer, Ptr, &buffer_len, "uint", 0)
      } Until hqi
      Error := ""
   }
   
   DllCall("wininet\InternetCloseHandle",  Ptr, iou_hInternet)
   DllCall("wininet\InternetCloseHandle",  Ptr, io_hInternet)
   DllCall("FreeLibrary", Ptr, hModule)
   
   Return, Error ? -1 : StrGet(&buffer)
}

63

Re: AHK: Скачивание через GET/POST-запросы

Из responseBody либо через ado либо через rawwrite:
http://forum.script-coding.com/viewtopi … 761#p83761

64

Re: AHK: Скачивание через GET/POST-запросы

А вот если получил я список изображений и скачиваю в подпрограмме — получается, после загрузки каждого изображения из списка, надо новое локальное имя этого файла отражать в responseBody? То есть, каждый раз заменять гиперссылку из responseBody на новый локальный путь картинки, или можно иначе? И не было ли тут примера такой обработки?

65

Re: AHK: Скачивание через GET/POST-запросы

Если вы получаете в ответе от сервера список картинок, то надо этот список парсить и загружать каждую картинку отдельно.

66 (изменено: DD, 2018-09-22 14:44:23)

Re: AHK: Скачивание через GET/POST-запросы

То есть, надо перебирать по одной ссылке из responseBody — находить, например, такое:

src="https://z-p3-static.xx.fbcdn.net/rsrc.php/v3/y8/r/sEX739EOBGI.png"

скачивать и заменять вхождение на новое локальное имя, получившееся в результате работы скрипта из 62 поста?

67

Re: AHK: Скачивание через GET/POST-запросы

Можно и из 62, а можно и через WinHttpRequest.

68

Re: AHK: Скачивание через GET/POST-запросы

А что эффективней? Достаточно будет заменить

UrlDownloadToFile, %Location%, %Path%

на код с WinHttpRequest? И непонятно, как обрабатывать дубликаты изображений — когда, например, с одной страницы это —

src="https://z-p3-static.xx.fbcdn.net/rsrc.php/v3/y8/r/sEX739EOBGI.png"

скачалось как это, —

src="../sEX739EOBGI.png"

а на другой, получается, его тоже надо скачать, чтобы выяснить, было оно ранее загружено или нет?

69

Re: AHK: Скачивание через GET/POST-запросы

Здесь или на оф. форуме нет примера загрузки страницы с изображениями?

70

Re: AHK: Скачивание через GET/POST-запросы

Я бы создавал список, то чего уже скачал, чтобы не было дубликатов, потом через Winhttprequest определял бы расширение и размер скачиваемого файла и сохранял бы через rawwrite.

DD пишет:

Здесь или на оф. форуме нет примера загрузки страницы с изображениями?

Не знаю. Я давно перестал этим интересоваться.