+  HandyCache форум
|-+  Главная категория» Общие вопросы» Расширения на языке Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 ... 24 25 [26] 27 28 29   Вниз
  Отправить эту тему    Печать  
Автор Тема: Расширения на языке Lua в HandyCache  (Прочитано 346042 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Anymore
Beta tester
*****

Репутация: +17/-0
Offline Offline

Сообщений: 336


« Ответ #500 : 11 Февраль 2013, 15:00:14 »

hc.url меняется во время загрузки страницы
Докажите это, пожалуйста.
« Последнее редактирование: 11 Февраль 2013, 15:07:11 от Anymore » Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #501 : 11 Февраль 2013, 16:01:42 »

Докажите это, пожалуйста.


сузьте пожалуйста задачу, доказать что :

1) hc.url меняется во время загрузки страницы

или

2) "window.location.href" нет
Добавлено: 11 Февраль 2013, 15:05:00

Докажите это, пожалуйста.
вот вроде:
Код:
--[[ <HCExtension>
@name         TEST
@event        RequestHeaderReceived/Request
@rule   handycache.ru/forum/
</HCExtension> ]]

function Request()
hc.put_to_log('URL_TEST - '..hc.url)
end
лог приложил


* TEST.txt (0.54 Кб - загружено 81 раз.)
Сообщить модератору   Записан
Anymore
Beta tester
*****

Репутация: +17/-0
Offline Offline

Сообщений: 336


« Ответ #502 : 11 Февраль 2013, 16:22:03 »

Работает, согласно документации.
Возможно, вам нужен рефер?
Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #503 : 11 Февраль 2013, 16:27:15 »

Работает, согласно документации.
я вот не понял, я доказал вам или нет, меняется или нет?  Улыбка

Возможно, вам нужен рефер?
рефер тоже не то, а вот что нибудь типа "window.location.href", чтобы не менялось всю загрузку страницы
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #504 : 11 Февраль 2013, 22:48:22 »

рефер тоже не то, а вот что нибудь типа "window.location.href", чтобы не менялось всю загрузку страницы

HC не может точно знать, какая страница сформировала запрос. В расширении можно использовать переменную hc.monitor_parent_url, но она берется из реферера, если он есть.
Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #505 : 12 Февраль 2013, 07:18:40 »

HC не может точно знать, какая страница сформировала запрос.
Ясно, жаль, благодарю.
Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #506 : 12 Февраль 2013, 14:57:32 »

Подскажите товарищи, а в адресной строке браузера можно менять URL на URL1 который получился после изменений через hc.request_header?

т.е. к примеру в адресной строке было :  http://1.jpg , через request_header я поменял на http://2.jpg , все это загрузилось в браузер, а как эти изменения отразить в адресной строке браузера? через answer_header не получается.

Выложите пожалуйста образец кому не лень.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #507 : 12 Февраль 2013, 17:05:32 »

а как эти изменения отразить в адресной строке браузера?

Через переадресацию с помощью ответа "302 Found". Больше никак браузер не узнает, что URL изменился.
Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #508 : 13 Февраль 2013, 10:04:47 »

DenZzz понял, благодарю.

Вопрос по мере изучения Lua:
я так понял что ".lua" понимает только в кодировке ANSI (я сужу по Notepad++) или не так?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #509 : 13 Февраль 2013, 14:16:26 »

В каком смысле "понимает"?

Библиотека функций языка Lua написана на языке С (точнее на подмножестве ANSI C и C++).
Расширение на Lua может обрабатывать тексты в любых кодировках. Например, расширение Content Master работает с HTML в кодировках windows-1251 (ANSI), utf-8 и koi8-r.
Сообщить модератору   Записан
GregoryPek
Новичок
*

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #510 : 13 Февраль 2013, 20:54:35 »

В каком смысле "понимает"?

Библиотека функций языка Lua написана на языке С (точнее на подмножестве ANSI C и C++).
Расширение на Lua может обрабатывать тексты в любых кодировках. Например, расширение Content Master работает с HTML в кодировках windows-1251 (ANSI), utf-8 и koi8-r.
я имел ввиду сам текст программы, текстовый файл
Сообщить модератору   Записан
wenny
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #511 : 27 Февраль 2013, 16:41:42 »

Доброго времени суток. Можно ли посредством lua из дополнения получить содержимое файла, находящегося на винте? Спасибо
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #512 : 28 Февраль 2013, 02:20:46 »

Можно.
Сообщить модератору   Записан
ThermIt
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #513 : 26 Март 2013, 16:10:19 »

Искал, не нашёл, может кто подскажет, как используя Lua разорвать соединение ICQ в заданное время? Или любое другое соединение.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #514 : 26 Март 2013, 23:15:21 »

Так
 hc.client_disconnect(ind)

ind - индекс соединения.

Индекс текущего соединения (соединения, для которого вызван текущий обработчик события) можно прочитать из переменной hc.connection_index.

Получается такая схема: в обработчике RequestHeaderReceived отловить соединение с ICQ и сохранить где-то индекс соединения. Когда наступит время, взять сохраненный индекс и по нему разорвать нужное соединение.
Сообщить модератору   Записан
ThermIt
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #515 : 27 Март 2013, 09:32:00 »

О, спасибо. Стал копать в эту сторону и наткнулся на hc.user_disconnect, которого для моих нужд за глаза хватит. Улыбка Осталось придумать как запустить код в определённое время и понять как это будет себя вести при включении-выключении дополнения.

ps: получилось что-то типа такого (формат дурной, потому что форум в нормальном формате не пропускает):
Код:
AnswerHeaderReceived/Answer
Timer1m/Timer

function Answer()
  time = os.date("*t")
  if time.hour >= 21 or time.hour < 7 then
      if hc.action=="" or hc.action==nil or hc.action=="save" then
        hc.action = "stop"
      end
  end
end

function Timer()
  time = os.date("*t")
  if time.hour >= 21 or time.hour < 7 then
    hc.user_disconnect('user1');
  end
end
pps: как получить список имён пользователей? Нашёл только таблицу статистики, но не понимаю как из неё получить имена.
« Последнее редактирование: 27 Март 2013, 10:15:47 от ThermIt » Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #516 : 27 Март 2013, 12:00:35 »

Так
Код:
--[[ <HCExtension>
@name Test_users_stat
@event Options
</HCExtension> ]]

function Options()
  local users = hc.get_users_stat('#all') or {}
  local s=''
  for user,v in pairs(users) do
    s= s..user..'\r\n'
  end
  hc.put_to_log(s)
end
Сообщить модератору   Записан
mirny
Пользователь
**

Репутация: +11/-1
Offline Offline

Сообщений: 84


« Ответ #517 : 28 Март 2013, 15:40:51 »

mai62, зачем вы так длинно пишете table.concat(users, '\r\n')?
Код:
function Options()
  local users = hc.get_users_stat('#all') or {}
  hc.put_to_log(users:concat'\r\n')
end
     
[/autism]
upd: А, понял. Не посмотрел что там словарь.
« Последнее редактирование: 28 Март 2013, 16:10:28 от mirny » Сообщить модератору   Записан
ThermIt
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #518 : 28 Март 2013, 20:28:49 »

Да не, всё правильно и работает. Улыбка
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

Репутация: +3/-0
Offline Offline

Сообщений: 18


« Ответ #519 : 16 Август 2013, 15:26:59 »

Выдалось немного времени, попробовал накидать расширение для сбора статистики обращения к файлам. С луа абсолютно незнаком, пробовал делать по аналогии с "IgnoreOnceVisitedSites" от Inversion. Первый блин - по моей задумке в файл пишется имя файла целиком, вместе с путем. В получившемся варианте пишутся все время только пустые строки. Где-то не попал ))) И сразу второй вопрос - следом за файлом в эту же строку хочу писать дату и время обращения. Кто подскажет?
Результат моего "труда":

--[[ <HCEXTENSION>
@name            Statistika
@author          Andrey_04.05@mail.ru
@version         0.1
@description     Собирает информацию об обращениях к файлам в текстовом виде для вычисления "рейтинга".
@event           BeforeRequestHeaderSend/on_BeforeRequestHeaderSend
</HCEXTENSION> ]]

g_name = re.find(hc.script_name, [[([^\\]+)\.lua$]], 1)
g_extensionRoot = re.replace(hc.script_name, g_name..[[\.lua$]], '')

function on_BeforeRequestHeaderSend()
   hc.monitor_string = hc.monitor_string ..'Test'
      f = io.open(g_extensionRoot..g_name..'DB.txt', 'a')
      if (f) then
         f:write(hc.cache_file_name..'\n')
         f:close()
      else                                                hc.put_to_log('Save failed')
         hc.monitor_string = hc.monitor_string ..' Save failed'
      end
end
Сообщить модератору   Записан
Страниц: 1 ... 24 25 [26] 27 28 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: