+  HandyCache форум
|-+  Главная категория» Общие вопросы» Расширения на языке Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 ... 5 6 [7] 8 9 ... 29   Вниз
  Отправить эту тему    Печать  
Автор Тема: Расширения на языке Lua в HandyCache  (Прочитано 437554 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #120 : 20 сентября 2009, 13:08:25 »

Цитировать
-- hc.execute_cmd('LoadURL '..hc.url) --вылетает в цикл
Команда LoadURL вызывает появление нового запроса. Для него тоже вызывается твое расширение, снова комнда LoadURL... Поэтому и циклится.
Цитировать
hc.action='dont_save'
Из-за этого файл не будет писаться в кэш.
Цитировать
Но загрузки страницы нет
Попробуй написать hc.use_proxy='127.0.0.1:80'
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #121 : 23 сентября 2009, 19:59:09 »

Небольшой скриптик,выводящий значение таблицы HC в файл.Полезен кодерам.
Есть вопрос автору HC.
Не выводятся некоторые значение,например hc.event. Пустые значения.
Kак получить POST-данные от клиента?
Если присвоить hc.use_proxy='' -- игнорируется пустое значение
Хотел для Опера Турбо не использовать прокси toonel


* HC_Vars.rar (0.74 Кб - загружено 93 раз.)
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #122 : 23 сентября 2009, 21:41:45 »

Цитировать
Не выводятся некоторые значение,например hc.event. Пустые значения.
Спасибо, исправлю.
Цитировать
Kак получить POST-данные от клиента?
Никак.
Цитировать
Если присвоить hc.use_proxy='' -- игнорируется пустое значение
Хотел для Опера Турбо не использовать прокси toonel
Присвой значение 'direct'. Забыл написать об этом в описании.
Сообщить модератору   Записан
VoyagerEternal
Новичок
*

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

Сообщений: 5


« Ответ #123 : 27 сентября 2009, 06:19:27 »

как сделать поиск файла в кеше lua-скриптом?

задача такая:
загружаю видео отсюда http://www.youtube.com/watch?v=BEDvAGq2dEA
URL которого регулярно меняется:
Код:
http://v5.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits
2Citag%2Cburst%2Cfactor&fexp=903204&itag=34&ipbits=0&signature=A8892B8F8616DDBD5028BDB0C0CA61871E69EC94.9C30AE82B8CFE9DDF6FEB54407FF1F968D85E986&sver=3&expire=1254042000&key=yt1&factor=1.25&burst=40&id=0440ef006ab67440

получается так что одинаковые файлы находятся в кеше в одной папке с разными именами
X:\InetCache\v5.lscache7.c.youtube.com\videoplayback^\37B928A9 
X:\InetCache\v5.lscache7.c.youtube.com\videoplayback^\8D4BC131 
X:\InetCache\v5.lscache7.c.youtube.com\videoplayback^\5F3AB822 

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

и ещё почему страница в 20 кбайт (http://www.youtube.com/watch?v=BEDvAGq2dEA) так долго грузится - минуты 2-3?
Добавлено: 27 Сентября 2009, 06:09:37

Как произвести поиск и замену подстроки в загружаемом файле?
Сообщить модератору   Записан
VoyagerEternal
Новичок
*

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

Сообщений: 5


« Ответ #124 : 27 сентября 2009, 08:25:57 »

Просмотр заблокированного содержимого одним кликом

Алгоритм: получаю URL блокированного содержимого, дописываю к нему '_ShowSpam_' и открываю его в новом окне. Настраиваю HandyCache на распознание URL с подстрокой '_ShowSpam_' и безпрепятственную загрузку.

В настройках черного списка указать html файл который будет заменять блокированное содержимое. Такого содержания:

<html>
<script type="text/javascript">
   function ShowSpam() {
       var s = document.URL;
         W = window.screen.availWidth;
         H = window.screen.availHeight;
         w = 400; h = 400;
      dx = -window.screenLeft; dy = -window.screenTop;
      window.open(s+'_ShowSpam_', 'newwin', 'top='+((H-h)/2+dy)+', left='+((W-w)/2+dx)+', menubar=1, toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, width='+w+', height='+h);   };
</script>
<body bgcolor=# topmargin=0 leftmargin=0 bottommargin=0 rightmargin=0>
<font color=#FFFF>
<a href='javascript: ShowSpam()'><img width=100% height=100% src="file://localhost/FreeInet/TurboGrabberPro/ok_/image/ozv/sea/CIM_.JPG" alt="РЕКЛАМА"></a>
</img>
</font>
</body>
</html>

В белый список нужно добавить строку _ShowSpam_ и поставить на ней галку 'черный список'
В переадресацию добавить ту же строчку и поставить галку только на 'заменить'

Это позволит кликом по заблокированной области загрузить содержимое в новом окне
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #125 : 27 сентября 2009, 10:54:03 »

Цитировать
задача такая:
загружаю видео отсюда http://www.youtube.com/watch?v=BEDvAGq2dEA
URL которого регулярно меняется
...
получается так что одинаковые файлы находятся в кеше в одной папке с разными именами

Эта проблема решается простым правилом в списке "Преобразование URL":

#5#~#True#~#^[^/]*(youtube\.com/videoplayback\?).*&(id=[^&]+).*#~#\1\2#~#False#~#True

Писать расширение тебе не нужно...
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #126 : 27 сентября 2009, 19:53:36 »

и ещё почему страница в 20 кбайт (http://www.youtube.com/watch?v=BEDvAGq2dEA) так долго грузится - минуты 2-3?

У меня быстро грузится, за пару секунд.

В переадресацию добавить ту же строчку и поставить галку только на 'заменить'

Без галки на "Обязательный" правило будет работать только вместе с предыдущим "Обязательным".

Цитировать
В белый список нужно добавить строку _ShowSpam_ и поставить на ней галку 'черный список'

После переадресации окончания _ShowSpam_ уже не будет и HC опять заблокирует эту загрузку.

Цитировать
Это позволит кликом по заблокированной области загрузить содержимое в новом окне

Ты сам-то тестировал свой алгоритм? Неужели работает с таким количеством недочетов?


P.S. Лично я предпочитаю грузить заблокированное не в новом окне, а в текущем на его законном месте через контекстное меню "Показать изображение", зажав горячую клавишу для временного отключения Черного списка.
Сообщить модератору   Записан
VoyagerEternal
Новичок
*

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

Сообщений: 5


« Ответ #127 : 28 сентября 2009, 05:49:36 »

Цитата: DenZzz
Ты сам-то тестировал свой алгоритм? Неужели работает с таким количеством недочетов?
У меня работает. Черный список блокировал после переадресации, пока галку на 'черный список' не поставил в белом списке.

Цитата: DenZzz
P.S. Лично я предпочитаю грузить заблокированное не в новом окне, а в текущем на его законном месте через контекстное меню "Показать изображение", зажав горячую клавишу для временного отключения Черного списка.

HandyCache стоит на другом компе, а на сервак горячую клавишу не пошлешь, и другим юзерам мешать не хочется, приходится вот так управлять.

Цитата: DenZzz
Проблема с загрузкой видео с youtube решается простым правилом в списке "Преобразование URL":
#5#~#True#~#^[^/]*(youtube\.com/videoplayback\?).*&(id=[^&]+).*#~#\1\2#~#False#~#True

но ведь есть мого других сайтов у которых ссылки динамические, это не только видео, для каждого чтоли правило сочинять, предлагаю написать расширение для всех.
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #128 : 28 сентября 2009, 11:13:16 »

У меня работает. Черный список блокировал после переадресации, пока галку на 'черный список' не поставил в белом списке.

Т.е. после переадресации окончание _ShowSpam_ уже удалено, а правило _ShowSpam_ в "Белом списке" все срабатывает на уже измененный URL без этого окончания?
Это противоречит логике работы списков HC. Лог монитора покажи.

Цитировать
но ведь есть мого других сайтов у которых ссылки динамические, это не только видео, для каждого чтоли правило сочинять, предлагаю написать расширение для всех.

В Lua нет штатной функции для поиска и формирования списка всех файлов в папке. Возможно, для этого есть сторонние готовые модули для Lua. Надо поискать...

А без списка "Преобразование URL" в ряде случаев все равно не обойтись, т.к. меняться могут не только параметры в конце URL, но и домены в начале. Поиск в огромном кэше среди тысяч папок съест не мало времени и ресурсов...
Сообщить модератору   Записан
Jarikk
Новичок
*

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

Сообщений: 31



« Ответ #129 : 28 сентября 2009, 11:19:57 »

Можно ли написать расширение для сохранения логов монитора в папке Logs скажем только за последние 10 дней? А то она разрастается и иногда забываешь совсем про нее. Отключать не хочется ведение логов, иногда надо просмотреть.
И еще, часто бывает нужно по gprs сидеть, использую toonel для этого дела. Вот допустим по-умолчанию НС работает через toonel и если в ответе с сервера видно, что используется gzip отключать toonel и идти напрямую для этой страницы. Просто заметил при пережатии тонелем во второй раз размер получается страницы больше да и без него страница будет быстрей загружаться. Возможно ли такое сделать и как это будет работать при одновременной загрузки страницы с gzip и без?
Сообщить модератору   Записан
VoyagerEternal
Новичок
*

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

Сообщений: 5


« Ответ #130 : 28 сентября 2009, 12:15:57 »

Т.е. после переадресации окончание _ShowSpam_ уже удалено, а правило _ShowSpam_ в "Белом списке" все срабатывает на уже измененный URL без этого окончания?
Это противоречит логике работы списков HC. Лог монитора покажи.

Правда не работает, ошибся. Тогда придется обойтись без преобразования, просто дописывать в конец URL '?ShowSpam'. А в преобразовании URL его удалять (самое первое правило сделать)
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #131 : 28 сентября 2009, 14:33:33 »

Можно ли написать расширение для сохранения логов монитора в папке Logs скажем только за последние 10 дней?

Тут опять нужна функция для поиска файлов в папке, которой пока нет.

Цитировать
И еще, часто бывает нужно по gprs сидеть, использую toonel для этого дела. Вот допустим по-умолчанию НС работает через toonel и если в ответе с сервера видно, что используется gzip отключать toonel и идти напрямую для этой страницы.

Если Toonel не правит исходные заголовки ответов сервера и оставляет там упоминание о GZIP, то это возможно сделать. Только напрямую надо идти не для всех элементов на этой странице. Картинки, наверно, все равно через Toonel все должны идти? Иначе они не будут сжиматься...

Цитировать
Возможно ли такое сделать и как это будет работать при одновременной загрузки страницы с gzip и без?

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



Правда не работает, ошибся. Тогда придется обойтись без преобразования, просто дописывать в конец URL '?ShowSpam'. А в преобразовании URL его удалять (самое первое правило сделать)

И такой дописанный URL отправлять на сервер в инете? Подозреваю, что некоторые сервера не примут такой URL и ответят "404 Not Found".

Вообще, все это можно реализовать в расширении. Прямо там можно отключать "Черный список" для специально помеченных URL, править заголовки запроса перед отправкой в инет и преобразовывать URL для записи в кэш.
Сообщить модератору   Записан
Jarikk
Новичок
*

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

Сообщений: 31



« Ответ #132 : 30 сентября 2009, 10:11:05 »

Тут опять нужна функция для поиска файлов в папке, которой пока нет.
Ясно, ну тогда подождем когда появиться Улыбка Или может проще mai62 уговорить, чтобы опцию соответствующую добавил в настройках

Цитировать
Если Toonel не правит исходные заголовки ответов сервера и оставляет там упоминание о GZIP, то это возможно сделать.
Эмм.. тогда наверное имеет смысл по-умолчанию проверять заголовки ответа напрямую, минуя тонель, т.е. по дефолту будет соеднение без прокси. и если в заголовке нету gzip, то пускать соединение через тонель?

Цитировать
Только напрямую надо идти не для всех элементов на этой странице. Картинки, наверно, все равно через Toonel все должны идти?
ну в принципе да, пусть бы картинки через тонель шли, хотя по gprs-у я картинки стараюсь вообще не загружать.

Цитировать
Без проблем.
Вот только я буду разбираться с этим долго да и не факт что напишу грамотно, подсобишь? Улыбка

ПС. И еще маленький вопросик, как вставить в скрипт задержку, скажем в 5с? Просто в своем расширении хотелось бы вместо команды os.execute() для запуска батника и с появление командного окна использовать команду hc.shell_execute(.. 'SW_HIDE') без появления командного окна и продолжения через 5с, когда примерно батник выполниться.
« Последнее редактирование: 30 сентября 2009, 11:02:25 от Jarikk » Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #133 : 30 сентября 2009, 12:03:39 »

Цитировать
Тут опять нужна функция для поиска файлов в папке, которой пока нет.
Ясно, ну тогда подождем когда появиться. Или может проще mai62 уговорить, чтобы опцию соответствующую добавил в настройках

mai62 подсказал, что уже есть готовые DLL с такой функциональностью.
Например, вот эта: http://www.keplerproject.org/luafilesystem/

Цитировать
Эмм.. тогда наверное имеет смысл по-умолчанию проверять заголовки ответа напрямую, минуя тонель, т.е. по дефолту будет соеднение без прокси. и если в заголовке нету gzip, то пускать соединение через тонель?

Можно и так. Тогда первый запрос на сервер пойдет напрямую, а последующие в текущей сессии HC - через Toonel. При желании можно даже в файл сохранять список сайтов для сжатия, только он разрастется и замусорится быстро...

Цитировать
Вот только я буду разбираться с этим долго да и не факт что напишу грамотно, подсобишь?

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

Цитировать
ПС. И еще маленький вопросик, как вставить в скрипт задержку, скажем в 5с? Просто в своем расширении хотелось бы вместо команды os.execute() для запуска батника и с появление командного окна использовать команду hc.shell_execute(.. 'SW_HIDE') без появления командного окна и продолжения через 5с, когда примерно батник выполниться.

Попробуй через событие Timer1s. Фиксируй системное время на старте hc.shell_execute(.. 'SW_HIDE') и через 5 срабатываний Timer1s запускай продолжение.

Видел в сторонней DLL более изящное решение через функцию sleep(int_msec), но мне страшно рекомендовать ту DLL, т.к. в ней 32 из 41 антивируса разглядели BackDoor.
Возможно, подобные функции есть и в других сторонних DLL. Надо искать...
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #134 : 15 октября 2009, 20:44:39 »

Каким способом можно узнать хост и порт,куда уйдет запрос в событии BeforeRequestHeaderSend? Переменная hc.use_proxy -пустая строка,какие еще есть способы?
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #135 : 15 октября 2009, 21:10:39 »

А зачем это нужно узнавать? Уйдет в соответствии с настройками. Если ты знаешь куда оно должно уйти, то впиши это в hc.use_proxy.
Перед вызовом обработчика BeforeRequestHeaderSend НС и сам еще не знает куда пойдет запрос. Он выясняет это после работы обработчика BeforeRequestHeaderSend потому, что результат до и после обработчика может быть разным.
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #136 : 15 октября 2009, 21:22:25 »

Переменная hc.use_proxy -пустая строка,какие еще есть способы?

Только самостоятельный парсинг файлов списков proxy.lst и condproxy.lst.
Да и вообще, можно перенести все выборы прокси в расширение, а списки эти отключить...
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #137 : 15 октября 2009, 22:26:27 »

Дело в том что нужно анализировать ответ accept-encoding.Если запросы уходит через toonel,то вести лог,если через fastun,то не вести.Я уже нашел решение:анализ по ключевым словам в их ответе
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #138 : 19 октября 2009, 21:16:02 »

Обращаюсь к гуру ХК.Какие еще преобразования в имени файла требуется в этом фрагменте кода
Код:
--[[ <HCExtension>
@name          Transform File
@author        igorek
@version       0.1
@description   Преобразовать имена файлов(и переместить) в связи с обновлением списка Преобразование URL
@event         Init/init
@event         Options/options
</HCExtension> ]]
function CacheToURL(str)
  local url=str
  url=string.gsub(url,hc.cache_path, "");
  --url=string.gsub(url,[[\|.*]], ""); -- удаляем имя файла внутри архива gzip
  url=string.gsub(url,"#_", ""); -- удаляем #_ в конце
  url=string.gsub(url,"^\\", "?",1); -- ^\ -> ?
  url=string.gsub(url,"!", ":",1); -- ! -> :
  url=string.gsub(url,"\\", "/"); -- \ -> /
  url='http://'..url;
  return url
end
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #139 : 19 октября 2009, 21:53:48 »

Какие еще преобразования в имени файла требуется в этом фрагменте кода

Много всяких. Посмотри в теме: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.0/ . Там есть исходники и сводная таблица.
Сообщить модератору   Записан
Страниц: 1 ... 5 6 [7] 8 9 ... 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: