Русский > Разработчикам

Разработка скриптов

<< < (2/2)

nostra:
9. Встроенные ф-ции для парсинга

function Pos(Substr : WideString; Str: WideString): Integer
Определяет позицию подстроки SubStr в тексте Str


function PosFrom(const SubStr, Str : WideString; FromIndex : Integer) : Integer
Определяет позицию подстроки SubStr в тексте Str начиная поиск с позиции FromIndex


function LastPos(const SubStr, Str : WideString) : Integer
Определяет позицию подстроки SubStr в тексте Str с конца текста.


function PrevPos(const SubStr, Str : WideString; APos : Integer) : Integer
Определяет позицию подстроки SubStr в тексте Str перед APos.


function RemoveTags(AText : WideString; doLineBreaks : Boolean) : WideString
Удаляет теги из текста AText. На пример: <a href="http://test.com">Test</a> будет преобразован в Test. Если doLineBreaks установлен в True, то тег <br> будет конвертироваться в перевод строки.


function ExplodeString(AText : WideString; var Items : TWideArray; Delimiters : WideString) : Integer
Разделяет сроку AText на подстроки используя разделители Delimiters. Результат пишется в динамический массив Items.


function Copy(S: WideString; Index, Count: Integer): WideString
Копирует Count символов из строки S начиная с Index


procedure Delete(var S: WideString; Index, Count: Integer)
Удаляет Count символов из строки S начиная с Index


procedure Insert(Source: WideString; var Dest: WideString; Index: Integer)
Вставляет строку Source в строку Dest на позиции Index


function Length(S: WideString): Integer
Определяет длину строки S


function Trim(S: WideString): WideString
Убирает невидимые символы (пробел, перевод строки, абзац) из строки S


function CompareText(S1, S2: WideString): Integer
Сравнивает 2 строки (S1 и S2) без учёта регистра. Возвращает 0 если строки равны, значение > 0 если S1 > S2 и значение < 0 если S1 < S2.


function CompareStr(S1, S2: WideString): Integer
Сравнивает 2 строки (S1 и S2) с учётом регистра. Возвращает 0 если строки равны, значение > 0 если S1 > S2 и значение < 0 если S1 < S2.


function UpperCase(S: WideString): WideString
Переводит все символы в строке S в верхний регистр (большие буквы).


function LowerCase(S: WideString): WideString
Переводит все символы в строке S в нижний регистр (маленькие буквы).


function StringReplace(S, OldPattern, NewPattern: WideString; ReplaceAll : Boolean; IgnoreCase : Boolean; WholeWord: Boolean): WideString 
Заменяет OldPatter на NewPattern в строке S. Если ReplaceAll установлен в True, то заменяются все повторения OldPattern. Если IgnoreCase установлен в True, то сравнение подстрок ведётся без учёта регистра.


function StrToInt(const S: WideString): Integer
Преобразовывает строку в целое число


function IntToStr(const Value: Integer): WideString
Преобразовывает целое число в строку


function StrToFloat(const S: WideString): Extended
Преобразовывает строку в действительное число


  function FloatToStr(const Value: Extended): WideString
Преобразовывает действительное число в строку


function HTMLValues(const HTML : WideString; ABegin, AEnd, ItemBegin, ItemEnd : WideString; ValDelim : WideString; var Pos : Integer) : WideString
Собирает значения из HTML в строку разделяя их разделителем ValDelim. Ф-ция ищет сначала подстроку ABegin начиная с позиции Pos, начиная с неё выбирает значения между подстроками ItemBegin и ItemEnd пока не встретится AEnd. Конечная позиция в тексте возвращается в переменную Pos.


function HTMLValues2(const HTML : WideString; ABegin, AEnd, ItemBegin, ItemEnd : WideString; ValDelim : WideString; var Pos : Integer) : WideString
Аналогично HTMLValues, но после ItemBegin ищется конец тега > и значение читается после него.


function TextBetween(const HTML : WideString; ABegin, AEnd : WideString; doLineBreaks : Boolean; var Pos : Integer) : WideString
Возвращает текст без HTML тегов из строки HTML, начиная с ABegin и заканчивая AEnd. ABegin ищется начиная с позиции Pos.


function HTMLToText(const HTML : WideString) : WideString
Преобразует все значения символов используемые в HTML для таких символов как <, >, $, " и т.д. в текст

nostra:
10. Ф-ции заполнения полей (наконец-то :) )


10.1. Ф-ции для заполнения стандартных (для плагинов загрузки информации) полей

procedure AddSearchResult(Title1, Title2, Year, URL, PreviewURL : WideString)
Добавляет результат поиска. Все переменные заполнять не обязательно, главное заполнить хотя бы Title1 или Title2 и URL.


procedure AddFieldValue(AField: Integer; AValue : WideString)
Добавляет значение поля (AValue). AField может принимать следующие значения:
Для фильмов:
0URL1Название2Ориг. название3Другие названия4Год5Жанр6Категория7Страна8Студии9MPAA10Доп. рейниг11Теги12Слоган13Описание14Длительность15Бонусы
Для персон:
0URL1Имя2Переведённое имя3Другие имена4Дата рождения5Место рождения6Жанр7Биография8Дата смерти

procedure AddMoviePerson(Name, TransName, Role, URL : WideString; AType : Byte)
Добавляет участника фильма. AType может принимать следующие значения:
0Актёр1Режиссёр2Сценарист3Композитор4Продюсер

procedure AddPersonMovie(Title, OrigTitle, Role, Year, URL : WideString; AType : Byte)
Добавляет фильм в фильмографию. AType может принимать следующие значения:
0Актёр1Режиссёр2Сценарист3Композитор4Продюсер

procedure AddAward(Event, Award, Category, Recipient, Year: WideString; const Won : Boolean)
procedure AddAwardEx(Event, Award, Category, RecipientVal1, RecipientVal2, Year: String; const Won : Boolean)
Добавляет награду.


procedure AddConnection(Title, OrigTitle, Category, URL, Year: WideString)
Добавляет связь с другим фильмом.


procedure AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode : WideString)
Добавляет эпизод.


10.2. Ф-ции для остальных полей

procedure AddFieldValueXML(AField: WideString; AValue : WideString)
Эту ф-цию можно использовать для полей которые нельзя заполнить ф-циями указаными выше (за исключением пользовательских полей). Стандартные поля тоже можно заполнять с её помощью.
В переменной AValue передаётся значение поля, а AField - это строка(название) соответствующая определённому полю:

Для фильмов:
numtitleorigtitleakayeargenrecountrystudioreleasempaalocationcategorytaglinedescriptioncounttyperatingimdbratingoratingornameriplengthlangstranslationresolutionvideocodecvideobitrateaudiocodecaudiobitratesizeurlpathcommentdateaddedcodelabelloansubsframeratelabelfeaturesviewedbookmarkwishloandateviewdatetags

Для персон:
nametransnamealtnamesbirthdaybirthplacebiodeath


procedure AddCustomFieldValueByNumber(CustomNumber: Integer; AValue : WideString)
Заполняет пользовательское поле по порядковому номеру поля.
CustomNumber - номер пользовательского поля по счёту
AValue - значение (используйте '-1' для True(галочка установлена) и '0' для False)


procedure AddCustomFieldValueByName(CustomName: WideString; AValue : WideString)
Заполняет пользовательское поле названию поля.
CustomName - название пользовательского поля
AValue - значение

nostra:
11. Другие ф-ции

procedure ShowMessage(const Msg, Head : WideString)
Выводит текстовое сообщение с кнопкой OK.
Head - Название окна
Msg - Текст сообщения


12. Проверка работы скрипта

После того как Вы написали скрипт нужно проверить его работоспособность. Для этого запустите PVD с параметром -debug, вот так: viddb.exe -debug
Запустив программу с этим параметром в меню "Помощь" появится меню Log, которое открывает окно с логом программы.
В этом окне можно получить следующую информацию:

* какие плагины загружает программа
* какие скрипты компилируются
* какие ошибки происходят при компилировании скриптов
* какие веб страницы загружает программа при работе плагина/скрипта
Если скрипт не может быть скомпилирован из-за ошибок, то в программу он не подгружается и соответственно не появляется в меню "Импорт" или в списке плагинов в настройках.

При компиляции скрипта компилятор выводит сообщение при обнаружении ошибки с информацией в каком месте скрита была найдена ошибка и описанием ошибки.
На пример: [Error] (366:2): Semicolon (';') expected
Это означает, что в строке 366 на позиции 2 отсутствует ; (на самом деле она вероятнее всего отсутствует в конце строки 365)

Так же компилятором выводятся подсказки по оптимизации кода.
На пример: [Hint] (368:2): Variable 'TEST' never used
Это означает, что переменная Test объявленная в строке 368 на позиции 2 не была использована.

Если скрипт компилируется, но работает не корректно можно воспользоваться ф-цией ShowMessage для вывода значений переменных в части кода, который не правильно работает, а так же проверить правильность URL-ов загружаемых программой в логе.

В режиме -debug программа так же пишет текст загружаемых страниц в файл page.html в папку программы. (там всегда находится последняя страница загруженная программой).

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии