//This version of script is for use with PVD versions 0.9.9.16 and above!!! (* Additional types and functions that can be used in scripts: --------------------------------------------- SCRIPT: iafd_movie script AUTHOR: SusiMeier DATE: 20/6/2010 VERSION: 0.0.1.3 CO-AUTHOR: Ivek23 SCRIPT MODIFICATION: Ivek23 MODIFICATION VERSION: 0.3.0.0 DATE: 29/12/2014 UPDATE: 21/05/2015 --------------------------------------------- CustomField : IAFDUpdated ----> Long Text Comments ----> Memo AKA ----> Memo Studio ----> Select List OR Multiselect List Distributor ----> Select List OR Multiselect List Studio (Distributor) ----> Memo Compilation ----> Select List OR Multiselect List Magazine Reviews ----> Memo Buy This Movie ----> Memo DVD Bonus ----> Checkbox Complete Movie ----> Checkbox //IAFD Duration ----> Short Text --------------------------------------------- //Types TWIDEARRAY : array of String //Field functions procedure AddSearchResult(Title1, Title2, Year, URL, PreviewURL : String) procedure AddFieldValue(AField: Integer; AValue : String) procedure AddMoviePerson(Name, TransName, Role, URL : String; AType : Byte) procedure AddPersonMovie(Title, OrigTitle, Role, Year, URL : String; AType : Byte) procedure AddAward(Event, Award, Category, Recipient, Year: String; const Won : Boolean) procedure AddConnection(Title, OrigTitle, Category, URL, Year: String) procedure AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode : String) //String functions function Pos(Substr : String; Str: String): Integer function PosFrom(const SubStr, Str : String; FromIndex : Integer) : Integer function LastPos(const SubStr, Str : String) : Integer function PrevPos(const SubStr, Str : String; APos : Integer) : Integer function RemoveTags(AText : String; doLineBreaks : Boolean) : String function ExplodeString(AText : String; var Items : TWideArray; Delimiters : String) : Integer function Copy(S: String; Index, Count: Integer): String procedure Delete(var S: String; Index, Count: Integer) procedure Insert(Source: String; var Dest: String; Index: Integer) function Length(S: String): Integer function Trim(S: String): String function CompareText(S1, S2: String): Integer function CompareStr(S1, S2: String): Integer function UpperCase(S: String): String function LowerCase(S: String): String function StringReplace(S, OldPattern, NewPattern: String; ReplaceAll : Boolean; IgnoreCase : Boolean; WholeWord: Boolean): String function StrToInt(const S: String): Integer function IntToStr(const Value: Integer): String function StrToFloat(const S: String): Extended function FloatToStr(const Value: Extended): String function HTMLValues(const HTML : String; ABegin, AEnd, ItemBegin, ItemEnd : String; ValDelim : String; var Pos : Integer) : String function HTMLValues2(const HTML : String; ABegin, AEnd, ItemBegin, ItemEnd : String; ValDelim : String; var Pos : Integer) : String function TextBetween(const HTML : String; ABegin, AEnd : String; doLineBreaks : Boolean; var Pos : Integer) : String function HTMLToText(const HTML : String) : String procedure ShowMessage(const Msg, Head : String) *) const pauseBeforeLoad = 1000; // Pause before loading (in millisecond) //Some useful constants const //Script types stMovies = 0; stPeople = 1; stPoster = 2; //Script modes smSearch = 0; smNormal = 1; smPoster = 2; //Parse results prError = 0; prFinished = 1; prList = 2; prListImage = 3; prDownload = 4; //Movie fields mfURL = 0; mfTitle = 1; mfOrigTitle = 2; mfAka = 3; mfYear = 4; mfGenre = 5; mfCategory = 6; mfCountry = 7; mfStudio = 8; mfMPAA = 9; mfRating = 10; mfTags = 11; mfTagline = 12; mfDescription = 13; mfDuration = 14; mfFeatures = 15; //People fields pfURL = 0; pfName = 1; pfTransName = 2; pfAltNames = 3; pfBirthday = 4; pfBirthplace = 5; pfGenre = 6; pfBio = 7; pfDeathDate = 8; //Credits types ctActors = 0; ctDirectors = 1; ctWriters = 2; ctComposers = 3; ctProducers = 4; //Script data SCRIPT_VERSION = '0.3.0.0'; SCRIPT_NAME = 'IAFD.com_movie'; SCRIPT_DESC = '[EN] Get movie full information from IAFD.com'; SCRIPT_LANG = $09; //English SCRIPT_TYPE = stMovies; BASE_URL = 'http://www.iafd.com/'; RATING_NAME = 'ADE'; SEARCH_STR = 'www.iafd.com/results.asp?SearchType=Mozilla-search&SearchString=%s'; CODE_PAGE = 0; //Use 0 for Autodetect //Custom field names to use BONUS_FIELD = 'DVD Bonus'; COMPLETE_FIELD = 'Complete Movie'; //Global variables var Mode : Byte; PosterURL : String; //Functions function GetScriptVersion : String; begin Result := SCRIPT_VERSION; end; function GetScriptName : String; begin Result := SCRIPT_NAME; end; function GetScriptDesc : String; begin Result := SCRIPT_DESC; end; function GetRatingName : String; begin Result := RATING_NAME; end; function GetScriptLang: Cardinal; begin Result := SCRIPT_LANG; end; function GetCodePage : Cardinal; begin Result := CODE_PAGE; end; function GetBaseURL : AnsiString; begin Result := BASE_URL; end; function GetDownloadURL : AnsiString; begin if PosterURL = '' then Result := SEARCH_STR else Result := PosterURL; end; function GetScriptType : Byte; begin Result := SCRIPT_TYPE; end; function GetCurrentMode : Byte; begin Result := Mode; end; function HTMLValue(HTML: string; StartPos, EndPos: Integer; StartValue, EndValue: string): string; var ValueStart, ValueEnd: Integer; begin ValueStart := PosFrom(StartValue, HTML, StartPos); if (ValueStart > 0) and ((ValueStart < EndPos) or (EndPos = 0)) then begin ValueStart := ValueStart + Length(StartValue); ValueEnd := PosFrom(EndValue, HTML, ValueStart); Result := Copy(HTML, ValueStart, ValueEnd - ValueStart); end else Result := ''; end; function RemoveTagsEx(AText : String) : String; var B, E : Integer; begin Result := AText; B := PosFrom('(', Result, 1); E := PosFrom(')', Result, B); while (B > 0) AND (B < E) do begin Delete(Result, B, E - B + 1); B := Pos('(', Result); E := Pos(')', Result); end; end; function RemoveTagsEx1(AText : String) : String; var B, E : Integer; begin Result := AText; B := PosFrom('(', Result, 1); E := PosFrom(']', Result, B); while (B > 0) AND (B < E) do begin Delete(Result, B, E - B + 1); B := Pos('(', Result); E := Pos(']', Result); end; end; function RemoveTagsEx2(AText : String) : String; var B, E : Integer; begin Result := AText; B := PosFrom('copyright">', Result, 1); E := PosFrom('', Result, B); while (B > 0) AND (B < E) do begin Delete(Result, B, E - B + 1); B := Pos('copyright">', Result); E := Pos('', Result); end; end; //procedure FindPoster(HTML : String); //var // curPos, EndPos : Integer; //begin // curPos := Pos('Box Cover', HTML); // curPos := PosFrom(' '' then begin ExplodeString(Date, DateParts, '-'); Date := DateParts[2] +'.'+ DateParts[1] +'.'+ DateParts[0]; Date := StringReplace(Date, '01.', '1.', True, True, False); Date := StringReplace(Date, '02.', '2.', True, True, False); Date := StringReplace(Date, '03.', '3.', True, True, False); Date := StringReplace(Date, '04.', '4.', True, True, False); Date := StringReplace(Date, '05.', '5.', True, True, False); Date := StringReplace(Date, '06.', '6.', True, True, False); Date := StringReplace(Date, '07.', '7.', True, True, False); Date := StringReplace(Date, '08.', '8.', True, True, False); Date := StringReplace(Date, '09.', '9.', True, True, False); //AddCustomFieldValueByName('IAFDUpdated', Date); // Simple //AddCustomFieldValueByName('IAFDUpdated', DateToStr(CurrentDateTime) + ' at ' + TimeToStr(CurrentDateTime)); // Verbose AddCustomFieldValueByName('IAFDUpdated', Date + ' at ' + TimeToStr(CurrentDateTime) + ' '+#8226+' ' + SCRIPT_NAME + ' ' + SCRIPT_VERSION); // Annoying end else LogMessage('date not found'); AddFieldValue(mfGenre, 'IAFD'); AddFieldValue(mfURL, MovieURL); LogMessage('Page parsing started'); EndPos := 1; fullinfo:= ''; fullinfo:= fullinfo + + #13#10; //Check for title. No orig. title info present, so duplicate.. dbgstrg:= TextBetween(HTML, '