HandyCache форум

Главная категория => Дополнения, плагины => Тема начата: igorek от 21 октября 2009, 20:03:56



Название: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 21 октября 2009, 20:03:56
  Часто возникают ситуации,когда с добавлением новых правил в списке Преобразование УРЛ,некоторые файлы остаются как бы вне кэша.Приходится либо отключить временно правило для них либо переименовать вручную файлы согласно новым правилам.
Предлагаю скрипт,который переименует,и, если надо,переместит файлы согласно новым правилам.
Файлы,требующие для работы:
 1. http://luaforge.net/frs/download.php/3677/lua5_1_4_Win32_bin.zip -скачать,внутри архива взять папку Microsoft.VC80.CRT
 и положить в папку ХэндиКэш
 2. http://luaforge.net/frs/download.php/3933/luafilesystem-1.4.2-win32-lua51.zip -lfs.dll в папку ХК


Название: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 23 октября 2009, 00:41:30
Переделал функцию CacheToURL таблице перекодировки символов версии 0.98b1


Название: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 23 октября 2009, 01:51:37
  Часто возникают ситуации,когда с добавлением новых правил в списке Преобразование УРЛ,некоторые файлы остаются как бы вне кэша.Приходится либо отключить временно правило для них либо переименовать вручную файлы согласно новым правилам.
В моем кэше много потерянных файлов. За 4 года много раз менял Преобразование УРЛ.
Цитировать
Предлагаю скрипт,который переименует,и, если надо,переместит файлы согласно новым правилам.
Это супер!! А как оно узнает какой файл куда положить, если правила менялись много раз? Боюсь ошибок наделает.

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

А если наоборот взять и отключить какоето старое правило, тогда скрипт сможет правильно переименовать?


Название: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 23 октября 2009, 16:54:13
Цитировать
В моем кэше много потерянных файлов. За 4 года много раз менял Преобразование УРЛ.

Для этого и сделал скрипт.У себя с помощью скрипта переместил более тысячи файлов.

Цитировать
А как оно узнает какой файл куда положить, если правила менялись много раз?

Старался правильно преобразовать файлы в УРЛ согласно правилам преобразования символов в ХК.
Затем ХК выдавал результат преобразования УРЛ в файл через список Преобразование УРЛ

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

Да, из двух файлов отберется более новый,а старый будет удален

Цитировать
А если наоборот взять и отключить какоето старое правило, тогда скрипт сможет правильно переименовать?

Однозначно не получится туда и обратно положить.
Можете для начала посмотреть результаты,что и куда переместятся.Формат вывода:
УРЛ
Старый путь
Новый путь
Если вас удовлетворит такое перемещение(переименование),то нажимаете кнопку Move



igorek, с тэгами аккуратнее! В bbCode все тэги в квадратных скобках.
--
Модератор



Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 23 октября 2009, 17:36:59
Судя по логу он предлагает переместить все что я пробовал ему скормить.
лог:
Код:
Find: 121 file(s)
Begin find files in folder: H:\Cache\tods-blog.com.ua\

http://tods-blog.com.ua/internet-money/xap-tnx-blogs/?
H:\Cache\tods-blog.com.ua\internet-money\xap-tnx-blogs\#_
H:\Cache\tods-blog.com.ua\internet-money\xap-tnx-blogs\^\#_


http://tods-blog.com.ua/services/seo-services/anchor-generator/?
H:\Cache\tods-blog.com.ua\services\seo-services\anchor-generator\#_
H:\Cache\tods-blog.com.ua\services\seo-services\anchor-generator\^\#_


Find: 2 file(s)
Старое имя определило правильно, а урл нет, вопроса в конце не должно быть.
Эти два файла закачаны только что, правила не менял. Пробовал папки разных сайтов, везде одно и тоже - предлагает переместить всё.
Почему так?

(Исправил опечатку)


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: DenZzz от 23 октября 2009, 18:12:46
А как оно узнает какой файл куда положить, если правила менялись много раз?

Никак. Часто правила списка "Преобразования URL" необратимы, поэтому некоторые части исходного URL могут быть потеряны безвозвратно, т.е. достоверно восстановить исходный URL в ряде случаев не получится. Соответственно, и преобразовать этот путь к файлу новыми правилами корректно может не получиться.

Добавлено: 23 Октября 2009, 18:57:36

Можно, конечно, попытаться проанализировать старые правила списка "Преобразование URL" с целью правильного восстановления исходных URL. Для простейших однозначных правил это получится сделать, но вот для правил посложнее - нет.

Добавлено: 23 Октября 2009, 19:05:37

igorek

Ты немного поспешил с функцией CacheToURL_New(str). ;) Это перспективный алгоритм, он пока не реализован в HC. Да и вряд ли вообще будет реализован в основном коде HC, т.к. все это можно сейчас сделать на уровне расширения.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 23 октября 2009, 20:22:25
Судя по логу он предлагает переместить все что я пробовал ему скормить.
лог:
Код:
Find: 121 file(s)
Begin find files in folder: H:\Cache\tods-blog.com.ua\

http://tods-blog.com.ua/internet-money/xap-tnx-blogs/?
H:\Cache\tods-blog.com.ua\internet-money\xap-tnx-blogs\#_
H:\Cache\tods-blog.com.ua\internet-money\xap-tnx-blogs\^\#_


http://tods-blog.com.ua/services/seo-services/anchor-generator/?
H:\Cache\tods-blog.com.ua\services\seo-services\anchor-generator\#_
H:\Cache\tods-blog.com.ua\services\seo-services\anchor-generator\^\#_


Find: 2 file(s)
Старое имя определило правильно, а урл нет, вопроса в конце не должно быть.
Эти два файла закачаны только что, правила не менял. Пробовал папки разных сайтов, везде одно и тоже - предлагает переместить всё.
Почему так?

(Исправил опечатку)
признаюсь,я не знаток регурярных выражений
Найдите в скрипте local _,_,burl,aurl=string.find(url,'([^?]+)?\?(.*)')
и замените вот на эту строку
local _,_,burl,aurl=string.find(url,'([^?]+)?(.*)')


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 23 октября 2009, 22:41:13
igorek
Спасибо, заменил строку в двух местах. Теперь количество найденных как ожидалось.

Давно хотел спросить какое правило из преобразования URL преобразует в короткие имена типа:
H:\Cache\yandex.ru\yandsearch^\3FBC44D8
В папке яндекса таких и так много, а скрипт предлагает несколько замен:
Код:
http://yandex.ru/yandsearch?ras=1&date=&text=SPC3&spcctx=notfar&zone=all&linkto=&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=&to_month=&to_year=&mime=all&Link=&rstr=&site=&numdoc=10&ds=&how=tm
H:\Cache\yandex.ru\yandsearch^\ras=1&date=&text=SPC3&spcctx=notfar&zone=all&linkto=&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=&to_month=&to_year=&mime=all&Link=&rstr=&site=&numdoc=10&ds=&how=tm
H:\Cache\yandex.ru\yandsearch^\A8EF7B3B


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 23 октября 2009, 23:36:28
Цитировать
Давно хотел спросить какое правило из преобразования URL преобразует в короткие имена типа:
H:\Cache\yandex.ru\yandsearch^\3FBC44D8
подробности тут http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg15389/#msg15389
Цитировать
2.4.12. На последнем этапе преобразования URL проверяется длина имени (относительно папки кеша).
Если она больше 200, то ищется последний символ [\] в пределах первых 192 символов.
Строка до символа [\] остается, а оставшееся кодируется хешем CRC32:
При длинне URL до 200 -> Папка кэша\URL
При длинне URL свыше 200 -> Папка кэша\[URL до 192]\[CRC32 остатка]
Выкладываю поправленный скрипт


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 24 октября 2009, 14:48:43
Ну все, нормально получилось. Перелопатил свой кэш, 5500 файлов были переименованы.
После чего, долго смотрел последствия и никаких недостатков в кэше найти не смог.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: IVAn Dealer от 24 октября 2009, 17:04:12
2. http://luaforge.net/frs/download.php/3933/luafilesystem-1.4.2-win32-lua51.zip -lfs.dll в папку ХК

не могу скачть - выложите плиз или на hoclumur@yandex.ru


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 24 октября 2009, 17:12:53
Выложил только здесь
http://slil.ru/28117918


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: IVAn Dealer от 24 октября 2009, 18:34:02
как у вас получается по 5 тыс. файлов перемещать? ведь в кэше очень много папок, получается имя каждой папки (урл) я должен вбивать в скрипт или я чего-то недопонял
хотелось бы чтобы всё было на автомате


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 24 октября 2009, 18:39:25
Readme читать надо
Цитировать
В поле ввести имя папки относительно корня вашего кэша
Можно . (точку),чтоб найти все файлы.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 24 октября 2009, 21:11:00
Новое в версии 0125:
[-] Исправлена ситуация,когда новое имя файла совпадает с существуюшим именем папки,
    или попытка создать папку с существующим именем файла
Пример:Требуется переместить файлы типа корень кэша\сайт.ру\страница1\#_ в корень кэша\сайт.ру\страница1
Правило: #5#~#True#~#(.*/.*)(/$)#~#\1#~#False#~#True


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: IVAn Dealer от 24 октября 2009, 21:14:04
переместил с помощью плагина более 113000 файлов
спасибо создателю
это как раз то, что мне было нужно!!!!


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 24 октября 2009, 21:25:10
Цитировать
Правило: #5#~#True#~#(.*/.*)(/$)#~#\1#~#False#~#True
После этого правила скорее всего создадутся пути корень_кэша\сайт.ру\страница1#_
Запустите очистку пустых папок в меню Настройки->Очистка,галочка Удалять пустые подкаталоги
Затем заново запустите скрипт,и все имена приведутся без заверщающего #_


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: DenZzz от 24 октября 2009, 23:49:37
igorek

В ряде случаев расширение MoveRenameFile может делать неправильные преобразования!

Ну, например, есть у меня в кэше файлы с разными страницами этого форума:

Код:
http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.260
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120.260
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120


http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.280
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120.280
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120


http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.300
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120.300
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120


http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.320
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120.320
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120


http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.340
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120.340
D:\HandyCache\Cache\handycache.ru\component\option,com_smf\Itemid,10\topic,1120

После запуска переименования все эти файлы будут утеряны. Останется в кэше только последнее из них и то с неправильным именем! А таких похожих файлов в папке handycache.ru у меня больше 1000. Фактически весь кэш с этим форумом будет утерян!

Дело в том, что в списке "Преобразование URL" у меня (и думаю у многих) есть старое проверенное правило, которое уже больше двух лет работает исправно:
#5#~#True#~#(handycache\.ru/component/option,com_smf/Itemid,\d+/topic,\d+)(\.\d+)?(;all)?[./].*#~#\1\2\3#~#False#~#True

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

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

Мне кажется, что использование списка "Преобразование URL" в MoveRenameFile надо сделать опциональным и предупреждать пользователей о вероятных нежелательных последствиях.
Думаю, лучше сделать в MoveRenameFile свой отдельный список правил в формате RegExp для преобразования путей к файлам (а не URL), по которым будет работать расширение. Тогда можно будет вообще уйти от промежуточного восстановления URL функцией CacheToURL_098b1(str) и неправильного повторного применения правил списка "Преобразование URL".
Думаю, никакой сложности тут для пользователей не возникнет. Просто при добавлении нового правила в список "Преобразование URL" надо будет добавить соответствующее правило в конвертор кэша и запустить процедуру.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 25 октября 2009, 01:12:54
Цитировать
После запуска переименования все эти файлы будут утеряны. Останется в кэше только последнее из них и то с неправильным именем! А таких похожих файлов в папке handycache.ru у меня больше 1000. Фактически весь кэш с этим форумом будет утерян!
У меня включено точно такое правило, но раньше пробовал и другие.
В handycache.ru до обработки фaйлoв - 834, кaтaлoгoв - 517
после обработки--------------фaйлoв - 736, кaтaлoгoв - 517
По данным лога 17 файлов улетело в общие папки скриптов и смайлов.
И еще 106 обработано, видимо некоторые затерлись.

А сначала я проверял счетчиками hcHistorian.
До обработки: Записей в истории 57879, Файлов в кэше 78245
После обраб.: Записей в истории 57849, Файлов в кэше 79085 базу пересоздал.
Незнаю насколько можно доверять историку, он же не может определить какие урл были неправильно восстановлены, но файлов стало больше на 800.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: IVAn Dealer от 25 октября 2009, 07:22:48
все cs*.vkontakte.ru согласно правилам подчищает на ура!
Добавлено: 25 Октября 2009, 07:12:24

igorek

В ряде случаев расширение MoveRenameFile может делать неправильные преобразования!
...
Останется в кэше только последнее из них и то с неправильным именем!
Получается что всё что сделал MoveRenameFile относительно данного форума не пригодно для HC ? Или всё таки после преобразования HC сможет использовать такой кэш?


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: DenZzz от 25 октября 2009, 09:22:03
Или всё таки после преобразования HC сможет использовать такой кэш?

То, что осталось, сможет, но осталось немного. Попробуй в автономном режиме походить по темам форума - почти везде будет ответ "404 Not found (HC)".

Добавлено: 25 Октября 2009, 10:20:37

Соответственно, и правило для необновления старых тем:
#5#~#True#~#handycache\.ru/component/option,com_smf/Itemid,\d+/topic,\d+\.\d+/#~##~##~#-168:00
работать не сможет, т.к. все файлы старых тем в ходе работы MoveRenameFile будут удалены.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 25 октября 2009, 16:02:55
Всем привет!Да,предупреждаю всех,конвертация небезопасна для кэша,т.к. не всегда удается однозначно сделать преобразования кэша. Сначала просмотрите внимательно логи преобразований,и если все так,как хотели,только после этого нажимайте кнопку Move.
Цитировать
Дело в том, что в списке "Преобразование URL" у меня (и думаю у многих) есть старое проверенное правило, которое уже больше двух лет работает исправно:
#5#~#True#~#(handycache\.ru/component/option,com_smf/Itemid,\d+/topic,\d+)(\.\d+)?(;all)?[./].*#~#\1\2\3#~#False#~#True
Я для себя исправил на такое правило:
#5#~#True#~#(handycache\.ru/component/option,com_smf/Itemid,\d+/topic,\d+)(\.\d+)?(;all)?.*#~#\1\2\3#~#False#~#True
Нормально сохраняются с инета,и при конвертации не портит кэш
Добавлено: 25 Октября 2009, 15:11:06

Цитировать
Думаю, лучше сделать в MoveRenameFile свой отдельный список правил в формате RegExp для преобразования путей к файлам (а не URL), по которым будет работать расширение.
Пользователям придется самим изобретать правила преобразования для файлов,соответствующий добавлению нового правила преобразования УРЛ.Мне кажется, УРЛ -это основа,потому что запросы идут от браузера.
Цитировать
Тогда можно будет вообще уйти от промежуточного восстановления URL функцией CacheToURL_098b1(str) и неправильного повторного применения правил списка "Преобразование URL".
Зато появится функция по загрузке файла и воздействию регулярных выражений на имя файла.
Цитировать
Думаю, никакой сложности тут для пользователей не возникнет.
А мне хотелось еще так. Загрузил новый список правил правил и конвертнул кэш.

Можно на всякий случай обезопасить,типа откат.
Вот примерно код: везде вместо строки os.remove(XXX) заменить на os.rename(XXX,XXX..'#del')
И если все ОК,то в ТоталКоммандир найти эти файлы и удалить.
Думаю,лучше тщательно прорабатывать правила для Преобразования УРЛ,чтобы по второму кругу не портил кэш
З.Ы: Но над твоим предложением подумаю.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 25 октября 2009, 23:33:09
v.013
  • Добавлена возможность преобразования файла напрямую,
  без использования правила Преобразование УРЛ.
  Пока с одним правилом.
  Корень кэша и символ #_ в конце пути удаляются перед обработкой правила.
  Внимание:после конвертации,соотвествующее правило должно быть в списке Преобразование УРЛ,
  иначе HandyCache не найдет эти файлы
  • Возможность резервной копии файлов.В конец имени добавляется #del


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 26 октября 2009, 00:08:48
igorek
В поле замена отображаются квадратики: ..
Так и должно быть?


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 26 октября 2009, 01:03:58
Не протестировал с чистого листа. Там я для примера привел пример замены.
В исходном коде поправить
Код:
local function DefaultParams()
hc_static['WriteToLog']='1'
  hc_static['LastDir']='handycache.ru'
  hc_static['Regex']='(nnm\.ru\\\d{4})\\(\d{2})\\(\d{2})\\'
  hc_static['Replace']=[[\1.\2.\3]]
  -- или так hc_static['Replace']='\\1.\\2.\\3'
  hc_static['UseRuleHC']='1'
  hc_static['Backup']='1'
end


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: DenZzz от 26 октября 2009, 12:38:08
Возможность резервной копии файлов.В конец имени добавляется #del

Если сохранять резервные копии, то атрибут "системный" не переходит к новым файлам.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 28 октября 2009, 18:25:53
v.0132
  • Добавлен новый модуль alien,который позволяет использовать экспортируемые функции
   Положить в папку HandyCache
[-]Файловые аттрибуты теперь сохраняются корректно(если подключен модуль alien)
  • Добавлена возможность преобразования URL с собственным правилом,
  без использования списка правил Преобразование УРЛ.
  • Добавлена возможность использовать правила,загружаемые с файла.
   Таблица RulesForURL -правила для преобразования УРЛ
   Таблица RulesForFile -правила для преобразования файла
   Чтобы использовать правила с файла,ввести в поле Rule or file
   строку file://имяфайла


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 08 ноября 2009, 20:31:02
Цитировать
v.014
  • Добавлена возможность очистки кэша с использованием правил Черного списка.
    Для использования этой возможности требуется чтобы был запущен скрипт Content Master
    и выбрано действие Action: BlackList URL


Название: MoveRenameFile_v014 - очистка кэша с использованием правил Черного списка
Отправлено: forteks от 23 марта 2010, 09:40:58
Можно ли после анализа кеша видеть в списке файлов  какое правило сработало?
и избирательно выбрать файлы для бекапа?


Название: MoveRenameFile v014 и Content Master 0.551 - не работает очистка по Black List
Отправлено: forteks от 17 мая 2010, 10:25:14
MoveRenameFile v014 при выборе опции BlackList URL
просто схлопывается при запуске сканирования всего кеша
у кого работает эта функция научите плиз...


Название: Re: MoveRenameFile v014 и Content Master 0.551 - не работает очистка по Black List
Отправлено: DenZzz от 17 мая 2010, 14:19:51
у кого работает эта функция научите плиз...

Эта функция использует в своей работе данные, сформированные расширением Content Master, которое уже много раз было существенно модифицировано, а расширение MoveRenameFile v014 не обновлялось с ноября 2009 г.! Оно пытается использовать старый формат настроек СМ, который давно уже не используется!

P.S. Вообще, привязываться в MoveRenameFile к настройкам СМ было не дальновидно, т.к. последний обновляется очень часто. Надежнее было бы самому анализировать Черный и Белый список HC...


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 25 мая 2010, 21:51:17
Я извинияюсь, что не обновляю свою программу, т.к. погрузился в мир пчел. Может кто другой возьмется.


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: igorek от 04 октября 2010, 18:58:53
Цитировать
v.02
  •    Очистка кэша с использованием списка правил Черного списка из Content Master версии 0.65.8
  •    Чекбокс Convert %-Char для преобразования имени файла в кириллицу для поддержки расширения eU_Convert_Cyrillic_and_other_codes
  • Реализован откат преобразования имени файла
  • [-] Минимизирован интерфейс


Название: Re: MoveRenameFile - расширение HC для конвертирования кэша
Отправлено: HKLM от 04 октября 2010, 20:04:58
Content Master версии 0.66.5 с ним не работает по Черному списку?