Здравствуйте, в этой новости хочу уделить внимание разработке плагинов на Delphi к DownloadMaster (DM). В прошлой статье мы рассмотрели основные события и методы API DM, которые предоставляют нам разработчики для того, чтобы написать какой-нибудь плагин. Какие плагины можно написать для DM да много каких. На самом деле если Вы захотите написать какой-то плагин, он уже возможен есть в сети, но всеже когда написал свой плагин, можно и другим дать его в помощь, если он полезный будет. Например плагины очень популярные такие, которые перехватывают ссылки с разных обменников, такие как рапидшара и ей подобные сервисы, а также же был бы популярный плагин, который качает сразу же через DM видео файл по прямой ссылке. Вот примерно такие плагины довольно популярны. Я делал подобный плагин, который получал ссылки с файлообменников и видео-сервиса и добавлял их в закачку DM. В этой статье мы рассмотрим, что-то подобное. В прошлой статье я рассказал про мастер создания плагинов для DM, Вы сможете кстати сделать такой мастер сами для любого плагина.

Ну вот теперь давайте по порядку, мы в данной статье будем работать с событием dm_download_added, то есть оно возникает тогда, когда добавляется закачка какая-либо, без разницы какого формата. Мы для начала получим список всех идентификаторов закачки, а затем про их получим информацию. Ну мы например добавим какую-нибудь ссылку, которая не прямая, а затем пропарсив ее, получим прямую и сразу же добавим в DM. Для начала в файл названиеплагинаImpl.pas мы где мастер плагинов DM создал шаблончик найдем функцию EventRaised и там же есть событие dm_download_added, а точнее оно там будет описано так примерно

if eventType = 'dm_download_added' then
     begin
 
     end;

Мастер сам создал такой шаблон, а мы между begin…end напишем сначала получение идентификаторов закачек, код смотрим ниже

var
 id_list:WideString;
 begin
     if eventType = 'dm_download_added' then
     begin
      id_list:=myIDmInterface.DoAction('GetDownloadIDsList','');
      ShowMessage(id_list);
     end;
 end;

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

var
 id_list,id_info:WideString;
 i,j:integer;
begin
   if eventType = 'dm_download_added' then
     begin
      id_list:=myIDmInterface.DoAction('GetDownloadIDsList','');
      for i:=1 to length(id_list) do
       begin
        if (id_list[i]=' ') and (i<>length(id_list)) then
         begin
          j:=i;
         end;
       end;
      Delete(id_list,1,j);
      Delete(id_list,length(id_list),1);
      id_info:=myIDmInterface.DoAction('GetDownloadInfoByID',id_list);
      ShowMessage(id_info);
     end;
end;

Вот таким мы образом получим информацию в формате XML о закачке, там нам необходимо вытащить <url></url>, то есть url, которую бы добавляем для дальнейшего парсинга. Давайте же пропарсим это дело

var
 
id_list,id_info,url:WideString;
i,j:integer;
id_list,id_info,url:WideString; i,j:integer;
 begin
     if eventType = 'dm_download_added' then
     begin
      id_list:=myIDmInterface.DoAction('GetDownloadIDsList','');
      for i:=1 to length(id_list) do
       begin
        if (id_list[i]=' ') and (i<>length(id_list)) then
         begin
          j:=i;
         end;
       end;
      Delete(id_list,1,j);
      Delete(id_list,length(id_list),1);
      id_info:=myIDmInterface.DoAction('GetDownloadInfoByID',id_list);
      url:=copy(id_info,pos('<url>',id_info)+length('<url>'),pos('</url>',id_info));
      Delete(url,pos('</url>',url),length(url));
      ShowMessage(url);
     end;
 end;

Теперь когда ссылка получена, можете ее парсить, что хотите делать, в потоках обрабатывать и так далее. В конце статьи хочу сказать, что скомпилированный плагин DM (*.dll) необходимо закинуть в папку с DownLoadMaster там есть папка Plugins туда и копируем. После этого перезапустить DM и должно вместе с DM запуститься окно настроек Вашего плагина (если Вы использовали мастер создание плагинов DM), чтобы оно при старте на запускалось мы находим процедуру PluginConfigure комментируем вызов формы

procedure TDMTest.PluginConfigure(params: WideString);
begin
 if not Assigned(CfgForm) then
  begin
   CfgForm := TDMTestSetupForm.Create(nil);
  end;
 CfgForm.Language:=myIDmInterface.DoAction('GetLanguage', '');
 {$IFNDEF USS3}
 
 {$ELSE}
 CfgForm.Settings:=Self.Settings;
 {$ENDIF}
 if params='NOCANCEL' then
  begin
   //CfgForm.BitBtn2.Enabled:=false;
   //if CfgForm.ShowModal=mrOK then
     //SettingsChanged;
  end
 else
  begin
   //CfgForm.Show;
  end;
end;

Ну вроде бы все, ждем следующей статьи

Да, хочу заметить, что в настоящее время очень популярны различные icq-клиенты — потому что это удобно, можно переписываться с кем захотите. Но самое, что интересное — это то, что можно общаться по icq через телефон, что очень удобно, потому что это можно сделать в любом месте. Пример такого icq-клиента на телефон — Jimm. Некоторые не знают как установить icq-клиент на телефон, Вы не думайте, что установка Jimm на телефон очень сложная, Вам необходимо только лишь узнать поддерживает ли Вам телефон данный icq-клиент, ну а так все очень просто.

Все исходники качаем тут

Автор статьи - Andrey53

Метки: , , , ,

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*