По 3 пункту надо добавить, что существует три вида плагинов и в зависимости от этого одна функция будет меняться.
1. Плагин для обработки фильмов/имен - AMM_PluginStart4
2. Плагин для импорта информации о фильме - AMM_NewBasePluginStart4(OrigTitle:Pchar; tlength:Integer);
2. Плагин для импорта информации о людях - AMM_NewNamePluginStart4(OrigTitle:Pchar; tlength:Integer);
Теперь по остальным пунктам.
В API прописаны три основные класса TPerson, TMovie и TMovieBase
TPerson - Класс имен, не требует специального создания используется через TMovieBase.CurrentName
Доступные свойства:
NameID:Integer - ID персоны
Name:String - Имя
AltName:String - Альтернативное имя
BirthDay:String - День рождения
BirthPlace:String - Место рождения
BirthYear:Integer - Год рождения
BirthCountry:String - Страна рождения
Biography:String - Биография
Filmography:String - Фильмография
Comments:String - Комментарии
URL:String - Ссылка на страницу
Rating:Integer - Рейтинг
Доступные функции:
IsPicExists:Boolean; - Возвращает True если у персоны есть фото
GetPic(FName:String):Boolean; - Сохраняет фото персоны в файл
SetPic(FName:String):Boolean; - Вставить фото персоны из файла (корректно работает только с JPEG файлами)
DeletePic:Boolean; - Удалить фото персоны
TMovie - Класс фильмов, не требует специального создания используется через TMovieBase.CurrentMovie
Доступные свойства:
Title:String - Название фильма
OriginalTitle:String - Оригинальное название
Description:String - Описание
Genre:String - Жанры. В строке перечисляются все жанры через запятую
Year:String - Год выхода фильма
Resolution:String - Разрешение
Size:String - Размер файла
Duration:String - Длительность
Loan:String - Кому отдан
Director:String - Режиссер
VideoInfo:String - Информация о видео потоке. Выводиться в виде строки "Кодек~Частота кадров~Средний битрейт~Глубина цвета"
AudioInfo :String - информация о аудио потоке. Выводиться в виде строки "Кодек~Информация~Средний битрейт"
Actors:String - Актеры
MediaType:String - Тип носителя
MediaCount:Integer - Количество носителей
MediaLocation:String - Местонахождение
Rating:Integer - Рейтинг фильма
MovieNum:Integer - Номер фильма
Comments:String - Комментарии
MediaLabel:String - Метка носителя
Subtitles:String - Субтитры
AspectRatio:String - Формат экрана
URL:String - Ссылка на страницу фильма
LocalPath:String - Локальный путь
Country: String - Страна
MPAA: String - Рейтинг МЗАА
ID: Integer - ID фильма
Wishlist: Boolean - Желаемый
Seen: Boolean - Просмотренный
Studio: String - Студии
Barcode: String - Штрих-Код
Scenario: String - Сценарист
TrailerLink: String - Ссылка на трейлер
Price: Single - Цена
UDFieldsCount:Integer - Количество пользовательских полей
ScreenshotsCount:Integer - Количество скриншотов
EpisodesCount:Integer - Количество эпизодов
PersonalMarks: String - Личные отметки пользователя
Доступные функции:
IsCoverExists:Boolean; - Возвращает True если у фильма есть постер
GetScreenshot(FName:String; ScreenIndex:Integer):Boolean; - Сохраняет скриншот в файл
GetCoverImage(FName:String):Boolean; - Сохраняет постер в файл
SetCoverImage(FName:String):Boolean; - Вставить постер из файла (корректно работает только с JPEG файлами)
SetScreenshot(FName:String):Integer; - Вставить скриншот из файла (корректно работает только с JPEG файлами)
DeleteScreenshot(ScreenIndex:Integer):Boolean; - Удалить скриншот
DeleteCover:Boolean; - Удалить постер
GetUDFieldValue(Index:Integer):String; - Получить значение пользовательского поля
GetUDFieldName(Index:Integer):String; - Получить имя пользовательского поля
SetUDFieldValue(Index:Integer; UDValue:String):Integer; - Установить значение пользовательского поля
EpisodeAdd(SeasonNum, EpisodeNum:Integer; Title, Description, URL, AirDate:String):Integer; - Добавить эпизод
EpisodeDelete(EpIndex:Integer):Boolean; - Удалить эпизод
EpisodeGetSeasonNum(EpIndex:Integer):Integer; - Получить номер сезона
EpisodeGetEpisodeNum(EpIndex:Integer):Integer; - Получить номер эпизода
EpisodeGetTitle(EpIndex:Integer):String; - Получить название эпизода
EpisodeGetDescription(EpIndex:Integer):String; - Получить описание эпизода
EpisodeGetURL(EpIndex:Integer):String; - Получить ссылку на страницу эпизода
EpisodeGetAirDate(EpIndex:Integer):String; - Получить дату выхода эпизода
EpisodeSetSeasonNum(EpIndex, SeasonNum:Integer); - Установить номер сезона
EpisodeSetEpisodeNum(EpIndex, EpisodeNum:Integer); - Установить номер эпизода
EpisodeSetTitle(EpIndex:Integer; Title:String); - Установить название эпизода
EpisodeSetDescription(EpIndex:Integer; Description:String); - Установить описание эпизода
EpisodeSetURL(EpIndex:Integer; URL:String); - Установить ссылку на страницу эпизода
EpisodeSetAirDate(EpIndex:Integer; AirDate:String); - Установить дату выхода эпизода
SaveMovieCardImage(FName:String;w,h:Integer):Boolean; - сохранить как изображение (JPG, PNG или BMP) вид карточки выбранного фильма с текущим шаблоном.
TMovieBase - Основной класс
Доступные свойства:
CurrentMovie:TMovie; - Доступ к текущему фильму
CurrentName:TPerson; - Доступ к текущему имени
GetAllPersonalMarks:String - Список личных отметок
GenreList:TStringList; - Список жанров
MovieCount:Integer - Количество фильмов в списке (если есть фильтрация то выводится именно количество отфильтрованных фильмов)
Filename:String - Имя файла открытой базы
Доступные функции:
//для работы с фильмами
AddMovie; - Добавить фильм
SaveMovie:Integer; - Сохранить текущий фильм
EditMovie; - Редактировать текущий фильм
DeleteMovie; - Удалить текущий фильм
First; - Выбрать первый фильм в списке
Last; - Выбрать последний фильм в списке
Next; - Следующий фильм
Prior; - Предыдущий фильм
Compress; - Сжать базу
GetGenreList:Boolean; - Получить список жанров
LocateMovieID(IDValue:Integer):Boolean; - Найти фильм по ID
SetSQLFilter(FilterStr:String):Boolean; - Установить SQL фильтр
ExecSQL(SQLStr:String):Boolean; - Выполнить SQL
//для работы с персонами
AddName; - добавить имя
SaveName:Integer; - Сохранить имя
EditName; - Редактировать текущее имя
DeleteName; - Удалить имя
FirstName; - Выбрать первое в списке имя
LastName; - Выбрать последнее в списке имя
NextName; - Следующие имя
PriorName; - Предыдущее имя
LocateNameID(IDValue:Integer):Boolean; - Найти имя по ID
GetNameCount:Integer; - Получить количество имен в списке
//Функции работающие только в плагине импорта информации о фильме
GetGetURL(URL:String):String; - Загружает html страницу с указанного адреса
GetPostURL(URL, Params:String):String; - Передача параметров при помощи POST метода
GetCoverFromURL(URL:String):Boolean; - Загрузить постер по ссылке
GetScreenFromURL(URL:String):Boolean; - Загрузить скриншот по ссылке
SelectTheMovie(MovieList:String):Integer; - Выводит список фильмов для выбора нужного
//Функции работающие только в плагине импорта информации о персоне
NameGetURL(URL:String):String; - Загружает html страницу с указанного адреса
NamePostURL(URL, Params:String):String; - Передача параметров при помощи POST метода
GetNamePicFromURL(URL:String):Boolean; - Загрузить фото по ссылке
SelectTheName(NameList:String):Integer; - Выводит список имен для выбора нужного
Ну и на последок пример простого плагина который перенумеровывает фильмы
Код: Выделить всё
library Test;
uses
amm_pluginapi,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, IniFiles;
{$R *.res}
function GetVersion4: Integer; far;
begin
Result := 1;
end;
function GetName4: Pchar; far;
begin
Result := 'Test';
end;
procedure AMM_PluginStart4; far;
var
MovieBase: TMovieBase;
x, i: Integer;
begin
MovieBase := TMovieBase.Create;
x := MovieBase.MovieCount;
MovieBase.First;
for i := 1 to x do
begin
MovieBase.EditMovie;
MovieBase.CurrentMovie.MovieNum := i;
MovieBase.SaveMovie;
MovieBase.Next;
end;
MovieBase.Free;
end;
procedure Init4(Owner: Integer); far;
begin
OwnerAPP := Owner;
end;
exports
GetName4, AMM_PluginStart4, Init4, GetVersion4;
begin
end.