1

Тема: AHK: считывание данных с сайта в фоновом режиме

Добрый день. Появилась идея написания скрипта, чтобы при нажатии на клавишу, вылезал msgbox с текущим временем. Время на компьютере иногда расходится с точным временем. По личным причинам, нужно чтобы время было точное, то есть секунда в секунду по сайту Time100. Не могу понять, как вытащить время с данного сайта. Заранее спасибо.

2

Re: AHK: считывание данных с сайта в фоновом режиме

yura170100 пишет:

Не могу понять, как вытащить время с данного сайта

Какие варианты пытались использовать?

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

3 (изменено: yura170100, 2022-03-02 21:09:48)

Re: AHK: считывание данных с сайта в фоновом режиме

teadrinker
Нашел тему на форуме . Человек попросил поиск класса unread и подсчет количества данных элементов.
В этой же теме привели код:

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://ya.ru")
HTTP.Send()
MsgBox, % HTTP.ResponseText

Поменял сайт, на необходимый мне:

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "https://time100.ru/")
HTTP.Send()
MsgBox, % HTTP.ResponseText

Однако в полученном msgbox нет необходимой мне информации

4

Re: AHK: считывание данных с сайта в фоновом режиме

Вообще-то частично есть:

<span class="time" data-tz="Europe/Moscow" data-format="%H:%i:%s">20:42</span>

Секунд нет.
На этом сайте есть API, можно так получить:

MsgBox, % GetTimeFromTime100ru(3, "HH:mm:ss")

GetTimeFromTime100ru(localTimeOffset := 0, formatString := "") {
   static url := "https://time100.ru/api.php"
   unixTime := GetResponseText(url,,,, error)
   if error
      throw error
   Return UnixTimeToLocal(unixTime, localTimeOffset, formatString)
}

GetResponseText(url, method := "GET", HeadersArray := "", body := "", ByRef error := "") {
   Whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
   Whr.Open(method, url, true)
   for name, value in HeadersArray
      Whr.SetRequestHeader(name, value)
   Whr.Send(body)
   Whr.WaitForResponse()
   status := Whr.status
   if (status != 200)
      error := "HttpRequest error, status: " . status
   Arr := Whr.responseBody
   pData := NumGet(ComObjValue(arr) + 8 + A_PtrSize)
   length := arr.MaxIndex() + 1
   Return StrGet(pData, length, "UTF-8")
}

UnixTimeToLocal(unixTime, diff, formatStr := "") {
   time := "19700101"
   time += unixTime, s
   time += diff, h
   if formatStr
      FormatTime, time, % time, % formatStr
   Return time
}

Но это API возвращает UTC время, чтобы преобразовать в локальное, нужно знать, на сколько оно отличается. Московское это +3 часа (если нет перехода на зимнее-летнее время).
Если на компьютере верно указана time zone, то можно так узнать разницу:

localTimeOffset := A_Now
localTimeOffset -= A_NowUTC, h
MsgBox, % localTimeOffset
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: yura170100, 2022-03-03 15:24:36)

Re: AHK: считывание данных с сайта в фоновом режиме

teadrinker
Именно то что нужно, спасибо огромное.
Большая благодарность за помощь, попробую разобраться в коде, чтобы понимать как он работает.

6

Re: AHK: считывание данных с сайта в фоновом режиме

Ок, только верните точки на место. Смайлик точку не заменяет.

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

7 (изменено: Malcev, 2022-03-03 03:35:19)

Re: AHK: считывание данных с сайта в фоновом режиме

Оффтоп.

+ открыть спойлер
teadrinker пишет:

Смайлик точку не заменяет.

Вопрос № 235156
Цитата с www.artlebedev.ru/kovodstvo/paragraphs/143/: "Смайлик отбивается от слова пробелом. Если после смайлика идет знак препинания, он пробелом не отбивается. Точка после смайлика обычно не ставится. Смайлик может быть совмещен с обычной закрывающей скобкой (при условии, что она где-то открылась :-) " Согласны ли вы с этим? С уважением

Ответ справочной службы русского языка

    Да, все верно.

http://new.gramota.ru/spravka/buro/sear … ;start=495

8

Re: AHK: считывание данных с сайта в фоновом режиме

Malcev, это что было?

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

9

Re: AHK: считывание данных с сайта в фоновом режиме

Ну то что, Артемий Лебедев советует не ставить точку после смайликаи gramota.ru с ним согласна.

10

Re: AHK: считывание данных с сайта в фоновом режиме

А зачем это здесь? У нас же, вроде, есть место для оффтопика?

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

11 (изменено: Malcev, 2022-03-03 03:34:59)

Re: AHK: считывание данных с сайта в фоновом режиме

Ну не знаю, стоит ли это темы для оффтопика.
Я это так,  для заметки привел.
Спрятал под спойлер.

12

Re: AHK: считывание данных с сайта в фоновом режиме

У нас есть традиционно сложившиеся правила форума. Если кто-то сомневается, заменяет ли смайлик точку, не ставьте смайлик.

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

13

Re: AHK: считывание данных с сайта в фоновом режиме

teadrinker пишет:

Если кто-то сомневается, заменяет ли смайлик точку, не ставьте смайлик.

Вот это стоит добавить в правила после:

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

14

Re: AHK: считывание данных с сайта в фоновом режиме

Добавил.
yura170100, если хотите продолжать пользоваться форумом, исправьте свои посты, пожалуйста!

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

15

Re: AHK: считывание данных с сайта в фоновом режиме

teadrinker
Не совсем понял что необходимо сделать: после смайлика поставить точку или же через пробел после смайлика поставить точку. Просто убрал смайлик. Ещё раз благодарю.