Плагин "Advanced Description"

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

Moderators: Korney San, marcipan

Post Reply
Skaurus
Бывалый
Posts: 11
Joined: 04 Jun 2006, 4:35 Sun
Contact:

Плагин "Advanced Description"

Post by Skaurus »

Плагин Advanced Description.

Цель данного плагина - позволить пользователю управлять содержимым файла описания. Можно отключить вывод даты, размера, URL etc. (первые строки), включить перенос длинных строк и т.д.
Подробно функции описаны ниже. Установка ограничивается распаковкой архива в папку plugins и включением плагина, но и она описана подробно в самом низу.

Автор: Skaurus
Копирайт: мой
e-mail: скачайте плагин и посмотрите в DM, на закладке настройки плагинов :)
Спасибо разработчикам библиотек SimpleXML и TRegExpr!

Плагин версии 0.51 можно скачать с сайтов: www.upload2.net, www.sendspace.com, www.uploading.com


Что плагин умеет?

1) Во-первых, он умеет не работать :) То есть его можно выключить. По умолчанию он как раз выключен.
2) Во-вторых, он умеет управлять выводом служебной информации: выводить или нет поля Name, Size, URL, Create time, Complete time, Referer и даже собственно само Description. Отключается все отдельно.
3) Далее, если вывод Description все-таки разрешен, его можно дополнительно обработать:
Разорвать на несколько строк длинные строки (максимальная длина,
после которой происходит разрыв, настраивается; а вот символы, по которым происходит разрыв, пока зафиксированы - это пробел, скобки и плюс/минус);
Убрать пробелы из конца и начала строк;
Убрать пустые строки из конца и начала текста описания;
Задать максимальное число пустых строк подряд посреди текста описания. Если подряд пустых строк окажется больше, их число уменьшится до заданного Вами.
4) Наконец, можно изменить формирование имени файла. Меня всегда доставало, что DM в имя файла описания включает расширение скачанного файла. Логика такого решения понятна, но меня все равно это злит и я все равно ручками меняю на то, что нравится мне :)
В данном случае имя можно формировать вообще по шаблону, например, включать в него текущую дату... Последние 10 шаблонов запоминаются.
Установка по умолчанию, %f.txt, выльется вот во что: если скачиваемый файл назывался file.rar, то плагин создаст файл описания file.txt.
При этом созданный ДМ-ом file.rar.txt никуда не денется, на всякий случай.



Что нуждается в доработке:

* Плагин без зазрения совести перезапишет одноименный с файлом описания файл, если такой окажется.
* Как уже говорилось, символы разрыва не настраиваются.
* Самое обидное: плагин срабатывает на событие "Закачка завершена", и пытается прочитать "родной" файл описания, чтобы его обработать и записать свой. Проблема в том, что файла-то еще нет - ДМ его еще не записал. Да, я знаю про функцию FileExists и могу написать "While not FileExists do sleep(1000);".
Но вот в чем проблема - на эту же секунду замирает и сам ДМ. То есть такая строка обеспечивает стопроцентный висяк. Поэтому приходится выкидывать окошечко со словами "Файл описания еще не создан, нажмите ОК". Пока вы жмете, ДМ успеет записать файл описания. Или нет, и тогда окошечко появится еще раз :)
Собственно, для решения этой подлянки нужно новое событие "Файл описания создан", которое я уже попросил у разработчиков. Жду, верю, надеюсь :)
* Окно настройки плагина ОБЯЗАНО быть закрытым при закрытии программы. Иначе dmaster.exe придется выгружать через процессы. Как делают другие - что плагины закрываются вместе с программой - я не знаю, научите :)
* В плагине нет защиты от исключительных ситуаций, например, если файл advdesc.xml не найден в директории плагинов.



УСТАНОВКА

Распакуйте файлы advdesc.dll и advdesc.xml в директорию Plugins папки, куда установлен Download Master. Запустите DM, зайдите в меню Закачки - Настройки - Плагины, выберите "DM Advanced Description Plug-In", нажмите кнопку Настройка и включите плагин.



ИСТОРИЯ ВЕРСИЙ

0.51
fix: Если файл описания по каким-то причинам не может быть найден, это не приведет к бесконечному выкидыванию окошек с просьбой подождать.
add: Английский интерфейс.

0.50
Первый релиз.


Плагин версии 0.51 можно скачать с сайтов: www.upload2.net, www.sendspace.com, www.uploading.com
Last edited by Skaurus on 12 Jun 2006, 23:06 Mon, edited 3 times in total.
Skaurus
Бывалый
Posts: 11
Joined: 04 Jun 2006, 4:35 Sun
Contact:

Post by Skaurus »

К плагину Description разработки SCHMaster этот плагин отношения не имеет :) С именем неувязочка вышла...
StormRider
Бывалый
Posts: 14
Joined: 19 Apr 2006, 14:42 Wed
Contact:

Post by StormRider »

А как насчет перехвата описания не из файла, а из самого DM? Тогда можно было бы пойти дальше и усовершенствовать диалог создания закачки html-редактором. Больно уже мне часто не хватает возможности вставки картинок в описание.
SCHMaster
Профи
Posts: 63
Joined: 12 Feb 2006, 3:59 Sun
Location: Киев

Post by SCHMaster »

2Skaurus
Самое обидное: плагин срабатывает на событие "Закачка завершена"
А кто мешает поставить на начало закачки? Это не сложно. То-же и с содержанием описания - вытягивать его хоть сразу, хоть потом - GetDownloadInfoByID и парсить инфу...
Но вот в чем проблема - на эту же секунду замирает и сам ДМ
Есть такая подлянка. Решение несложное - запустить проверку в отдельном процессе (TThread) ну и ес-сно добавить ограничение в кол-ве циклов. Секунды 3 хватит :).
Как делают другие - что плагины закрываются вместе с программой
Лично я никак не делал, окно настроек модальное от окна DM... Тут такая ситуевина может быть толко если "выйти" из DM через меню в трее. Но, вроде, ничего криминального - "выходит" со второго раза. А как устроить проверку? С-лету -
procedure DLLEntry(dwReason: DWORD);
begin
case dwReason of
// DLL_PROCESS_ATTACH:
DLL_PROCESS_DETACH:
begin
тут проверяешь - есть окно настроек или нет и прибиваешь его.
end
end
end;
* В плагине нет защиты от исключительных ситуаций, например,
try

твой код...
except
обработка исключительной ситуации...
end;
Skaurus
Бывалый
Posts: 11
Joined: 04 Jun 2006, 4:35 Sun
Contact:

Post by Skaurus »

StormRider wrote:А как насчет перехвата описания не из файла, а из самого DM? Тогда можно было бы пойти дальше и усовершенствовать диалог создания закачки html-редактором. Больно уже мне часто не хватает возможности вставки картинок в описание.
Можно и так перехватывать - но тогда, если выбрать такую же схему наименования файла, как у ДМа (полное имя файла+txt), ДМ этот файл перезапишет. Так что все равно эвент хочется :)
И, главное, описание может быть добавлено позже, по ходу закачки...

Картинки - это интересно. Можно завести что-то типа $img=url_картинки и формировать хтмл... Хорошая идея :)
Last edited by Skaurus on 17 Jun 2006, 4:08 Sat, edited 1 time in total.
Skaurus
Бывалый
Posts: 11
Joined: 04 Jun 2006, 4:35 Sun
Contact:

Post by Skaurus »

SCHMaster wrote:2Skaurus
А кто мешает поставить на начало закачки? Это не сложно. То-же и с содержанием описания - вытягивать его хоть сразу, хоть потом - GetDownloadInfoByID и парсить инфу...
Уже ответил :)
Есть такая подлянка. Решение несложное - запустить проверку в отдельном процессе (TThread) ну и ес-сно добавить ограничение в кол-ве циклов. Секунды 3 хватит :).
Замечательно :) Надо будет почитать доки.
Лично я никак не делал, окно настроек модальное от окна DM... Тут такая ситуевина может быть толко если "выйти" из DM через меню в трее. Но, вроде, ничего криминального - "выходит" со второго раза.
Вот! Как так сделать? :) Я вообще-то любитель, и люблю я php, а дельфи так... Слабо знаю. Это ведь, наверно, зависит от парента окна настроек? Просто у меня, кроме как с Parent = nil, угадать, что туда писать, не получилось :)
try
твой код...
except
обработка исключительной ситуации...
end;
Сейчас времени совсем не осталось на любительское программирование, что-либо делать с плагином вообще некогда ( Нашлось бы время переделать самое вопиющее - проверку существования файла...
А как время появится, можно уже следующую версию писать, с хтмл :))
SCHMaster
Профи
Posts: 63
Joined: 12 Feb 2006, 3:59 Sun
Location: Киев

Post by SCHMaster »

Просто у меня, кроме как с Parent = nil, угадать, что туда писать, не получилось
Попробуй так

Code: Select all

function CallSettings:Boolean;
begin
with TSettForm.Create(Application) do
 begin
 result:=ShowModal = mrOk;
 Free;
 end;
end;
Самый простой вариант.
Skaurus
Бывалый
Posts: 11
Joined: 04 Jun 2006, 4:35 Sun
Contact:

Post by Skaurus »

SCHMaster wrote:Попробуй так

Code: Select all

function CallSettings:Boolean;
begin
with TSettForm.Create(Application) do
 begin
 result:=ShowModal = mrOk;
 Free;
 end;
end;
Самый простой вариант.
Ага, спасибо! Обязательно попробую.
Romkin
Posts: 1
Joined: 21 Jan 2006, 21:10 Sat
Location: Киев
Contact:

Post by Romkin »

Пишет: файл описания пока не может быть создан. XP sp2.

Просьба добавить возможность задавать исключения для файлов по расширению независимо от наличия description. Например для файлов jpeg. В галереях при нажатии Закачать все в описание попадает текст-из alt тега для картинки. И приходится хранически эти описания удалять.
ALEKCEN
Бывалый
Posts: 10
Joined: 28 Nov 2008, 16:37 Fri

Post by ALEKCEN »

Перезалейте,плиз!
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

http://ifolder.ru/9322358 (Файл будет удален через 1 месяц после последнего скачивания)
Восстанавливаю забытые пассы на жабу, если правильный пасс есть в профиле клиента
Post Reply