+  HandyCache форум
|-+  Главная категория» Дополнения, плагины» MoveRenameFile - расширение HC для конвертирования кэша
Имя пользователя:
Пароль:
Страниц: [1] 2  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: MoveRenameFile - расширение HC для конвертирования кэша  (Прочитано 26441 раз)
0 Пользователей и 1 Гость смотрят эту тему.
igorek
Новичок
*

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

Сообщений: 36


« : 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.rar (3.31 Кб - загружено 93 раз.)
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #1 : 23 октября 2009, 00:41:30 »

Переделал функцию CacheToURL таблице перекодировки символов версии 0.98b1

* MoveRenameFilev012.rar (3.43 Кб - загружено 63 раз.)
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #2 : 23 октября 2009, 01:51:37 »

  Часто возникают ситуации,когда с добавлением новых правил в списке Преобразование УРЛ,некоторые файлы остаются как бы вне кэша.Приходится либо отключить временно правило для них либо переименовать вручную файлы согласно новым правилам.
В моем кэше много потерянных файлов. За 4 года много раз менял Преобразование УРЛ.
Цитировать
Предлагаю скрипт,который переименует,и, если надо,переместит файлы согласно новым правилам.
Это супер!! А как оно узнает какой файл куда положить, если правила менялись много раз? Боюсь ошибок наделает.

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

А если наоборот взять и отключить какоето старое правило, тогда скрипт сможет правильно переименовать?
« Последнее редактирование: 23 октября 2009, 02:01:32 от HKLM » Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #3 : 23 октября 2009, 16:54:13 »

Цитировать
В моем кэше много потерянных файлов. За 4 года много раз менял Преобразование УРЛ.

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

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

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

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

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

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

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



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

« Последнее редактирование: 23 октября 2009, 17:28:41 от DenZzz » Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #4 : 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)
Старое имя определило правильно, а урл нет, вопроса в конце не должно быть.
Эти два файла закачаны только что, правила не менял. Пробовал папки разных сайтов, везде одно и тоже - предлагает переместить всё.
Почему так?

(Исправил опечатку)
« Последнее редактирование: 23 октября 2009, 18:02:50 от HKLM » Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #5 : 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, т.к. все это можно сейчас сделать на уровне расширения.
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #6 : 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,'([^?]+)?(.*)')
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #7 : 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
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #8 : 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 остатка]
Выкладываю поправленный скрипт

* MoveRenameFile_v0124.rar (4.19 Кб - загружено 70 раз.)
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #9 : 24 октября 2009, 14:48:43 »

Ну все, нормально получилось. Перелопатил свой кэш, 5500 файлов были переименованы.
После чего, долго смотрел последствия и никаких недостатков в кэше найти не смог.
Сообщить модератору   Записан
IVAn Dealer
Пользователь
**

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

Сообщений: 55


« Ответ #10 : 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
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #11 : 24 октября 2009, 17:12:53 »

Выложил только здесь
http://slil.ru/28117918
Сообщить модератору   Записан
IVAn Dealer
Пользователь
**

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

Сообщений: 55


« Ответ #12 : 24 октября 2009, 18:34:02 »

как у вас получается по 5 тыс. файлов перемещать? ведь в кэше очень много папок, получается имя каждой папки (урл) я должен вбивать в скрипт или я чего-то недопонял
хотелось бы чтобы всё было на автомате
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #13 : 24 октября 2009, 18:39:25 »

Readme читать надо
Цитировать
В поле ввести имя папки относительно корня вашего кэша
Можно . (точку),чтоб найти все файлы.
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #14 : 24 октября 2009, 21:11:00 »

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

* MoveRenameFile_v0125.rar (4.2 Кб - загружено 57 раз.)
Сообщить модератору   Записан
IVAn Dealer
Пользователь
**

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

Сообщений: 55


« Ответ #15 : 24 октября 2009, 21:14:04 »

переместил с помощью плагина более 113000 файлов
спасибо создателю
это как раз то, что мне было нужно!!!!
Сообщить модератору   Записан
igorek
Новичок
*

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

Сообщений: 36


« Ответ #16 : 24 октября 2009, 21:25:10 »

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

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

Сообщений: 5589



« Ответ #17 : 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" надо будет добавить соответствующее правило в конвертор кэша и запустить процедуру.
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #18 : 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.
Сообщить модератору   Записан
IVAn Dealer
Пользователь
**

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

Сообщений: 55


« Ответ #19 : 25 октября 2009, 07:22:48 »

все cs*.vkontakte.ru согласно правилам подчищает на ура!
Добавлено: 25 Октября 2009, 07:12:24

igorek

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

 
Перейти в: