Автор Тема: Разработка плагинов (вопросы)  (Прочитано 77058 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн bibik

  • Новичок
  • *
  • Сообщений: 9
Re: Разработка плагинов (вопросы)
« Ответ #30 : 20 Августа 2008, 07:40:45 »
КРУТО! Сделайте плизз кто нибудь...... :'(
Век буду блогадарен!!!!!

Оффлайн djek-ural

  • Модератор
  • *****
  • Сообщений: 1223
  • Фильмов много не бывает.
Re: Разработка плагинов (вопросы)
« Ответ #31 : 20 Августа 2008, 16:08:35 »
Очень заинтересовала тема по разработке плагинов , скачал образцы для знакомства , при первичном осмотре напоминает бейсик , там команды IF THEN ELSE , хотел спросить с моими познаниями бейсика ( школьная программа , сдавал экзамен на 5 ) возможна работа на Delphi , вчера удалось раздобыть установочный диск Делфи 7 и плюсом много программ библиотек с подсказками. П.с. Просто не хочется изучать дельфи с 0 , хотя книгу самоучитель раздобыл.

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #32 : 20 Августа 2008, 17:56:22 »
Рекомендую писать всё таки скрипт, а не плагин т.к. проще. Писать на делфи после школьного бейсика может быть проблематично, а вот со скриптами думаю справится получится (там тоже паскаль, но в упрощённом виде).
Если всё таки плагины писать на Delphi, то лучше взять версию попозже - 2005+ для поддержки юникода...

П.С. Теоретически можно писать плагины и на C++, но я не пробовал.
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн bibik

  • Новичок
  • *
  • Сообщений: 9
Re: Разработка плагинов (вопросы)
« Ответ #33 : 21 Августа 2008, 19:54:56 »
Ребят, ну что...никто так и не поможет со скриптами?

Оффлайн djek-ural

  • Модератор
  • *****
  • Сообщений: 1223
  • Фильмов много не бывает.
Re: Разработка плагинов (вопросы)
« Ответ #34 : 30 Ноября 2008, 17:23:34 »
Нашел на одном сайте дистрибутивы Delphi 2005 и Borland Delphi 8 Architect Edition , вопрос такой что за версия 8 , это не одно и тоже с 2005 .
ЗЫ Хотя штудирую паскаль , но такую вешь иметь в запаснике не помешает.

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #35 : 30 Ноября 2008, 18:23:41 »
Нашел на одном сайте дистрибутивы Delphi 2005 и Borland Delphi 8 Architect Edition , вопрос такой что за версия 8 , это не одно и тоже с 2005 .
ЗЫ Хотя штудирую паскаль , но такую вешь иметь в запаснике не помешает.

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

Оффлайн Resha

  • Постоялец
  • ***
  • Сообщений: 126
Re: Разработка плагинов (вопросы)
« Ответ #36 : 23 Января 2009, 12:37:59 »
nostra,
а не появилось ли в последних бетах импорт скриншотов для плагинов (если можно с пимерчиком). Насколько я понял для скриптов такая фича уже есть:

AddImageURL(0, 'http://www.test.com/test.jpg'); //первый параметер: 0 - Poster, 1 - Screenshot, 2 - Front cover, 3 - CD Cover
« Последнее редактирование: 23 Января 2009, 12:40:35 от Resha »
Win10 x64, PVD 1.0.2.7

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #37 : 24 Января 2009, 16:11:21 »
Так собственно, Вы уже сами ответили на свой вопрос. Просто находим ссылку на скриншот и выполняем
AddImageURL(1, 'найденная ссылка');
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн Resha

  • Постоялец
  • ***
  • Сообщений: 126
Re: Разработка плагинов (вопросы)
« Ответ #38 : 24 Января 2009, 20:59:45 »
Так собственно, Вы уже сами ответили на свой вопрос. Просто находим ссылку на скриншот и выполняем
AddImageURL(1, 'найденная ссылка');

Возможно я чего-то не правильно делаю, но если я пытаюсь применить такую команду, то делфи не компилит dll (меня ж правильно поняли?: я делаю не скрипт, а плагин - dll-файл). Может мне надо где-то с сайта скачать свежие модули для это всего? или чего-то ещё подключить?

Если таки меня не правильно поняли и мне нужно чего-то сделать с полями XML_IMAGES, XML_IMGTYPE, XML_IMGPATH, XML_IMGFORMAT, XML_IMGDATA, то тут без примера не соображу.

З.Ы. Со мной можно на "ты" ;-)
« Последнее редактирование: 24 Января 2009, 21:32:59 от Resha »
Win10 x64, PVD 1.0.2.7

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #39 : 25 Января 2009, 21:35:42 »
Аааа, я то думал для скриптов нужно. Плагин должен вернуть в виде XML вот такую структуру:
<images>
 <image>
  <imgtype>1</imgtype>
  <imgurl>http://www.test.com/sreen1.jpg</imgurl>
 </image>
 ...
 <image>
  <imgtype>1</imgtype>
  <imgurl>http://www.test.com/sreenN.jpg</imgurl>
 </image>
</images>

можно ещё указать imgformat, но не обязательно.
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн Resha

  • Постоялец
  • ***
  • Сообщений: 126
Re: Разработка плагинов (вопросы)
« Ответ #40 : 15 Февраля 2009, 21:44:32 »
Вопросы по плагинам (не скрипатм ;-) ):

1. Можно ли в плагине получить какую-то информация из карточки фильма?
      Ситуация: одним плагном получил дату релиза, скажем, "февраль 2000". В базу заношу "01.02.2000". Затем прохожу вторым плагином (по другому сайту) и там дата "08 февраля 2000". И вот тут хотелось бы проверить, что если в карточке стоит дата с днём "01", то взять новую.
       Также неплохо было бы знать информацию о количестве скриншотов, чтоб плагин не добавлял лишние.
2. Получил список ссылок (10 шт). Но программа выбрала сама одну и начала загружать. Предполагаю, что программа сама делает какие-то проверки (понятно одна из них: КоличествоСсылок = 1). Нет ли там проверки по точному совпадению (без учета регистра) названия фильма? Если есть, то можно ли её из где-либо (желательно из плагина) отключить?
3. Есть пользовательское поле типа "Memo". Можно в него плагином ДОБАВЛЯТЬ информацию?
      Пример: Поле называется "Дополнительные ресурсы". Один плагин нашёл на сайте чего-то - записал в поле, второй нашёл - ДОПИСАЛ в это поле.
« Последнее редактирование: 18 Февраля 2009, 06:16:05 от Resha »
Win10 x64, PVD 1.0.2.7

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #41 : 20 Февраля 2009, 00:52:13 »
Цитировать
Можно ли в плагине получить какую-то информация из карточки фильма?

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

...
type
 TPluginGetValueCallback = function (const AValue : Integer; const IsCustom : Boolean) : PWideChar;

...

var
 GetValue, GetParentValue : TPluginGetValueCallback;

...

procedure SetValueCallback(AValueCallback, AParentValueCallback : TPluginGetValueCallback); stdcall;
begin
 GetValue := AValueCallback;
 GetParentValue := AParentValueCallback;
end;
...

exports
 ...
 SetValueCallback;

Теперь можно вызывать ф-цию GetValue для получения значения из актуальной записи или GetParentValue для получения значения из записи сериала из-под єпизода.

Цитировать
Нет ли там проверки по точному совпадению (без учета регистра) названия фильма? Если есть, то можно ли её из где-либо (желательно из плагина) отключить?

Есть. Отключить нельзя. Зачем нужна проверка с учётом регистра?

Цитировать
Есть пользовательское поле типа "Memo". Можно в него плагином ДОБАВЛЯТЬ информацию?
      Пример: Поле называется "Дополнительные ресурсы". Один плагин нашёл на сайте чего-то - записал в поле, второй нашёл - ДОПИСАЛ в это поле.

Можно ;) Вот этот код нужен для получения списка имеющихся польз. полей и соответсвенно определения номера поля для использования в ф-ции GetValue:
...
type
  TWideArray = array of WideString;
  TIntArray = array of Integer;

var
 CustomFieldNames : TWideArray;
 CustomFieldIDs : TIntArray;

...

function ExplodeCustomFields(AText : PWideChar; var Fields : TWideArray; var Indexes : TIntArray) : Integer; overload;
var
 I : Integer;
 S : WideString;
 IsField, Done : Boolean;
begin
 Result := 0;
 SetLength(Fields, Result);
 SetLength(Indexes, Result);

 if AText = nil then
  Exit;

 I := 0;
 Done := (AText[I] = #8) AND (AText[I + 1] = #0);
 IsField := True;

 while not Done do begin
  S := '';
  while AText[I] <> #0 do begin
   S := S + AText[I];
   Inc(I);
  end;

  if IsField then begin
   Inc(Result);
   SetLength(Fields, Result);
   SetLength(Indexes, Result);
  end;

  if IsField then
   Fields[Result - 1] := S
  else
   Indexes[Result - 1] := StrToIntDef(S, 0);

   IsField := not IsField;

  Inc(I);
  if (AText[I] = #8) AND (AText[I + 1] = #0) then
   Done := True;
 end;
end;

...

procedure SetCustomFields(CustomFields : PWideChar); stdcall;
begin
 ExplodeCustomFields(CustomFields, CustomFieldNames, CustomFieldIDs);
end;

...

exports
 ...
 SetCustomFields;

Имея значения поля добавляем к нему новые данные и передаём программе в виде XML:
<custom>
 <customid>CustomFieldIDs[FieldIndex]</customid>
 <value>New field value</value>
</custom>
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн Resha

  • Постоялец
  • ***
  • Сообщений: 126
Re: Разработка плагинов (вопросы)
« Ответ #42 : 20 Февраля 2009, 09:36:44 »
Цитировать
Нет ли там проверки по точному совпадению (без учета регистра) названия фильма? Если есть, то можно ли её из где-либо (желательно из плагина) отключить?

Есть. Отключить нельзя. Зачем нужна проверка с учётом регистра?

Уже и не надо, да и дело не в регистре (см. объяснение ниже). Буквально тока шо решил проблему по другому.

Объянсю ради интереса:
Есть три игры "Postal 2", "Postal 2: Share the Pain" и "Postal 2: Штопор Жж0т" (аналогию можно провести с фильмами Матрица, ...). Первые две игры затягивались отлично без вопроса сама выбирала ссылку по точному совпадению названия, а с третьей возникла проблема.
В базу я её занёс как "Postal 2: Штопор Жжёт". Из-за одной буквы плагин не находил ссылок вообще. А когда в карточке убрал всё после двоеточия, то программа подхватила, не спрашивая, мне инфу по первой игре.

Решил проблему так: если не находит "Postal 2: Штопор Жжёт", то плагин обрезает строку поиска до первого пробела (ну или плюса в строке поиска) "Postal 2" ищет инфу, а т.к. в карточке по прежнему стоит "Postal 2: Штопор Жжёт", то теперь відаёт список для выбора ;-)


По остальному спасибо буду разбираться
« Последнее редактирование: 20 Февраля 2009, 11:26:25 от Resha »
Win10 x64, PVD 1.0.2.7

Оффлайн Reset

  • Глобальный модератор
  • *****
  • Сообщений: 1362
Отладка плагинов
« Ответ #43 : 03 Апреля 2009, 19:18:05 »
Подскажите, пожалуйста, как можно эффективно отлаживать плагины?
Вопрос заключается в следующем. Я написал часть плагина и успешно его откомпилировал. Могу ли я проверить правильность функционирования плагина без программы (вероятно, нет)? Если могу, то как? А если не могу, то могу ли я не перезапускать программу при обновлении плагина? Если да, то как?
Нет описания? Нужны ответы? Есть предложения? Не хватает сайтов?

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Разработка плагинов (вопросы)
« Ответ #44 : 03 Апреля 2009, 21:38:04 »
Отлаживать как обычно в дебагере.

Цитировать
Могу ли я проверить правильность функционирования плагина без программы (вероятно, нет)?

Нет

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

Скорее всего не получится плагин откопилировать т.к. он подгружен. Тут ничего не поделаешь. На самом деле эта проблема довольно странная т.к. я подгружаю плагины только по мере надобности, но после многих тестов выяснилось, что это Firebird их занимает  :o Зачем, почему и как от этого избавиться не понятно.
« Последнее редактирование: 03 Апреля 2009, 21:41:24 от nostra »
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации