//SCRIPT INFO================================================================================================== BlockOpen (* SCRIPT INFO: Following until 'SCRIPT BEGINS HERE...' is documentation. Please see 'USER OPTIONS' in the body of the script. --------------------------------------------- SCRIPT: Imdb Movie(episodelist) Script AUTHOR: Ivek23 VERSION: 0.1.1.5 DATE: 17/02/2016 NEW_VERSION: 0.1.1.6 UPDATE: 02/05/2020 --------------------------------------------- TYPES AND FUNCTIONS Additional types and functions that can be used in scripts: 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 AddAwardEx(Event, Award, Category, RecipientVal1, RecipientVal2, 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 AnsiString(S, OldPattern, NewPattern: String; All : 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 CurrentDateTime : Extended function DateToStr(Value : Extended) : String function TimeToStr(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) *) // //BlockOpen //BlockClose //SCRIPT INFO================================================================================================== BlockClose //SCRIPT BEGINS HERE... //Some useful constants Const pauseBeforeLoad = 0; // Pause before loading (in millisecond) //Script types stMovies = 0; stPeople = 1; stPoster = 2; //Script modes smSearch = 0; smNormal = 1; smCast = 2; smReview = 3; smCredits = 4; smSoundtracks = 5; smEp1 = 6; smEp2 = 7; smEp3 = 8; smEp4 = 9; smEp5 = 10; smEp6 = 11; smEp7 = 12; smEp8 = 13; smEp9 = 14; smEp10 = 15; smEp11 = 16; smEp12 = 17; smEp13 = 18; smEp14 = 19; smEp15 = 20; smEp16 = 21; smEp17 = 22; smEp18 = 23; smEp19 = 24; smEp20 = 25; smEp21 = 26; smEp22 = 27; smEp23 = 28; smEp24 = 29; smEp25 = 30; smEp26 = 31; smEp27 = 32; smEp28 = 33; smEp29 = 34; smEp30 = 35; smEp = 36; smPoster = 37; smFinished = 38; //Parse results prError = 0; prFinished = 1; prList = 2; prListImage = 3; prDownload = 4; //Prefix modes pmNone = 0; pmEnd = 1; pmBegin = 2; pmRemove = 3; //Download methods dmGET = 0; dmPOST = 1; //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; //pfPID = 0; pfName = 1; pfTransName = 2; pfAltNames = 3; pfBirthday = 4; pfBirthplace = 5; pfGenre = 6; pfBio = 7; pfDeathDate = 8; pfRating = 9; pfDateAdded = 10; pfModDate = 11; pfComment = 12; pfBookmark = 13; pfVisible = 14; pfGenres = 15; pfAge = 16; pfFilmography = 17; pfCareer = 18; pfAwards = 19; pfPhoto = 20; pfImageList = 21; //Credits types ctActors = 0; ctDirectors = 1; ctWriters = 2; ctComposers = 3; ctProducers = 4; //Image types itPoster = 0; itScreenShot = 1; itFrontCover = 2; itDiscImage = 3; itPhoto = 4; //Script data //SCRIPT_VERSION = '0.1.1.2'; SCRIPT_VERSION = '0.1.1.6'; SCRIPT_NAME = 'Imdb Movie Script(episodelist)'; SCRIPT_DESC = '[EN] Get Movie Information from Imdb.com(episodelist)'; SCRIPT_LANG = $09; //English SCRIPT_TYPE = stMovies; BASE_URL = 'http://www.imdb.com'; BASE_URL_PERSON = 'http://www.imdb.com/name/'; BASE_URL_SUF = '/'; RATING_NAME = 'Imdb Movie Script'; RATING_NAME1 = 'Metascore'; //SEARCH_STR = 'http://www.imdb.com/find?q=%s&s=tt&exact=true&ref_=fn_tt_ex'; SEARCH_STR = 'http://www.imdb.com/find?s=tt&q=%s'; //SEARCH_STR = 'http://www.imdb.com/find?q=%s&s=tt'; //CODE_PAGE = 28591; //Use 0 for Autodetect CODE_PAGE = 65001; //Use 0 for Autodetect //BlockOpen (* //28591=ISO 8859-1 Latin 1; Western European (ISO). Use: 65001=Unicode (UTF-8) | 0=for Autodetect *) //BlockClose DEBUG = False; MAXIMUM_SIZE_X = 650; MAXIMUM_SIZE_Y = 500; MAXIMUM_SIZE_XY = 700; SILENT_MODE = False; //Image Options MAX_IMAGE_HEIGTH = 750; //Heigth limit of the stored posters. MAX_SEARCHLIST_HEIGTH = 200; //Heigth limit of the search list posters. //User Options GET_THEMES = True; //Set to False to ensure ~mfCategory~ not added even if 'Overwrite fields' setting allows GET_POSTER = False; //Set to False or True PRESERVE_PVD_DESCRIPTION_SETTING = True ; //Set to False or True PEOPLE_LIMIT = 25; //Limit of number of actors (cast) or of credits (crew) retrieved. //Global variables Var ELI:Integer; Mode:Byte; ExtraLinks : array [smCast..smPoster] of String; // Functions function GetScriptVersion:String; //BlockOpen Begin Result:=SCRIPT_VERSION; End; //BlockClose function GetScriptName:String; //BlockOpen Begin Result:=SCRIPT_NAME; End; //BlockClose function GetScriptDesc:String; //BlockOpen Begin Result:=SCRIPT_DESC; End; //BlockClose function GetRatingName:String; //BlockOpen Begin Result:=RATING_NAME; End; //BlockClose function GetScriptLang:Cardinal; //BlockOpen Begin Result:=SCRIPT_LANG; End; //BlockClose function GetCodePage:Cardinal; //BlockOpen Begin Result:=CODE_PAGE; End; //BlockClose function GetBaseURL:AnsiString; //BlockOpen Begin Result:=BASE_URL; End; //BlockClose function GetDownloadURL:AnsiString; //BlockOpen Begin LogMessage('Function GetDownloadURL BEGIN ====================== |'); LogMessage('Function GetDownloadURL====================== |'); LogMessage('Function GetDownloadURL|'); LogMessage('Global Var-Mode|'+IntToStr(Mode)+'|'); If (Mode=smSearch) Then Result:=SEARCH_STR Else Result:=ExtraLinks[Mode]; //LogMessage('Local Var-Result| '+Result+' |'); //LogMessage(' Local Var-URL| '+URL+' |'); LogMessage('Global Var-Result| '+Result+' |'); LogMessage('Function GetDownloadURL|'); LogMessage('Function GetDownloadURL END ====================== |'); End; //BlockClose function GetDownloadMethod:Byte; //BlockOpen Begin LogMessage(' Function GetDownloadMethod|'); LogMessage(' Global Var-Mode 1|'+IntToStr(Mode)+'|'); Result := dmGET; LogMessage(' Function GetDownloadMethod||'); End; //BlockClose function GetPrefixMode:Byte; //BlockOpen Begin Result:=pmBegin; End; //BlockClose function GetScriptType:Byte; //BlockOpen Begin Result:=SCRIPT_TYPE; End; //BlockClose function GetCurrentMode:Byte; //BlockOpen Begin Result:=Mode; End; //BlockClose function HTMLValue(HTML:String;StartPos,EndPos:Integer;StartValue,EndValue:String):String; //BlockOpen Var ValueStart,ValueEnd:Integer; Begin ValueStart := PosFrom(StartValue, HTML, StartPos); If (ValueStart>0) and ((ValueStart0) and ((ValueStart '' 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('Updated', Date); // Simple //AddCustomFieldValueByName('Updated',Date); // Simple //AddCustomFieldValueByName('Updated',Date+' at '+TimeToStr(CurrentDateTime)); // Verbose //AddCustomFieldValueByName('Updated0', Date + ' at ' + TimeToStr(CurrentDateTime) + ' • ' + SCRIPT_NAME + ' ' + SCRIPT_VERSION); // Annoying AddCustomFieldValueByName('IUpdated',Date+' at '+TimeToStr(CurrentDateTime)+' '+#9679+' '+SCRIPT_NAME+' '+SCRIPT_VERSION); // Annoying //AddCustomFieldValueByName('IUpdated',DateToStr(CurrentDateTime)+' at '+TimeToStr(CurrentDateTime)+' '+#8226+' '+SCRIPT_NAME+' '+SCRIPT_VERSION); // Annoying AddCustomFieldValueByName('IUpdated0',Date+' '+#8226+' '+SCRIPT_NAME+' '+SCRIPT_VERSION); // Annoying End Else LogMessage('date not found'); LogMessage('* Get result Date: '+DateParts[2]+'.'+ DateParts[1]+'.'+DateParts[0]+' at '+TimeToStr(CurrentDateTime)+#8729+SCRIPT_NAME+#8729+SCRIPT_VERSION); //LogMessage(' Get result Date: '+DateToStr(CurrentDateTime)+' at '+TimeToStr(CurrentDateTime)+' • '+SCRIPT_NAME+' '+SCRIPT_VERSION); MovieURL:=StringReplace(MovieURL,'episodes','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=-1','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=0','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=1','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=2','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=3','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=4','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=5','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=6','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=7','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=8','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=9','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=10','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=11','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=12','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=13','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=14','',True,False,True); MovieURL:=StringReplace(MovieURL,'?season=15','',True,False,True); MovieURL:=StringReplace(MovieURL,'/0','/',True,False,True); MovieURL:=StringReplace(MovieURL,'/1','/',True,False,True); MovieURL:=StringReplace(MovieURL,'/2','/',True,False,True); MovieURL:=StringReplace(MovieURL,'/3','/',True,False,True); MovieURL:=StringReplace(MovieURL,'/4','/',True,False,True); MovieURL:=StringReplace(MovieURL,'/5','/',True,False,True); MovieURL:=StringReplace(MovieURL,'fullcredits','',True,False,True); MovieURL:=StringReplace(MovieURL,'reference','',True,False,True); LogMessage(' Get result MovieURL:' + MovieURL +' ||'); AddFieldValueXML('url',MovieURL); //GetFieldValueXML('url'); LogMessage('**IMDB Movie END=====================||'); LogMessage('**IMDBMovie BEGIN**=====================||'); LogMessage(' ParseMovie BEGIN**====================== |'); //~Episode Guide~ If Pos('
Episode Guide
', HTML) > 0 then begin curPos := Pos('
Episode Guide
', HTML); EndPos := curPos; TmpStr := HTMLValues(HTML, '
Episode Guide
', '', '', '', ' ', EndPos); //AddCustomFieldValueByName('Seasons-Episodes', TmpStr); curPos := EndPos; end; //~Episodes~ If Pos('

Episodes

', HTML) > 0 then begin curPos := Pos('

Episodes

', HTML); EndPos := curPos; TmpStr1 := HTMLValues(HTML, '

Seasons

', '
', '', ' ', EndPos); TmpStr1 := StringReplace(TmpStr1, '="', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '1

', false, curPos); Season := Season +'1'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 1', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '2

', false, curPos); Season := Season +'2'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 2', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '3

', false, curPos); Season := Season +'3'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 3', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '4

', false, curPos); Season := Season +'4'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 4', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '5

', false, curPos); Season := Season +'5'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 5', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '6

', false, curPos); Season := Season +'6'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 6', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '7

', false, curPos); Season := Season +'7'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 7', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '8

', false, curPos); Season := Season +'8'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 8', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '9

', false, curPos); Season := Season +'9'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 9', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '10

', false, curPos); Season := Season +'10'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 10 ', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '11

', false, curPos); Season := Season +'11'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 11 ', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '12

', false, curPos); Season := Season +'12'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 12 ', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '13

', false, curPos); Season := Season +'13'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 13 ', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '14

', false, curPos); Season := Season +'14'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 14', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '15

', false, curPos); Season := Season +'15'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 15', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '16

', false, curPos); Season := Season +'16'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 16', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '17

', false, curPos); Season := Season +'17'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 17', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '18

', false, curPos); Season := Season +'18'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 18', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '19

', false, curPos); Season := Season +'19'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 19', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '20

', false, curPos); Season := Season +'20'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 20', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '21

', false, curPos); Season := Season +'21'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 21', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '22

', false, curPos); Season := Season +'22'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 22', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '23

', false, curPos); Season := Season +'23'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 23', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '24

', false, curPos); Season := Season +'24'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 24', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

', '25

', false, curPos); Season := Season +'25'; Episode := TextBetween(HTML, ', Ep', ' 0) AND (curPos < PosFrom(' Season 25', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '
', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, Episode); Episode := TextBetween(HTML, ', Ep', ' 0 then begin curPos := PrevPos('Episode List', HTML) > 0 then begin curPos := Pos('

Episode List

', HTML); EndPos := curPos; Season := TextBetween(HTML, '

Unknown', '

', false, curPos); Season := Season +' 0'; //Episode := TextBetween(HTML, '
', '
', false, curPos); curPos := PosFrom('
0) AND (curPos < PosFrom(' Unknown Season', HTML, endPos)) do begin endPos := PosFrom('?ref_=ttep_ep', HTML, curPos); URL := 'http://www.imdb.com/title/'+TextBetween(HTML, '', '', false, curPos); //AddEpisode(Title, OrigTitle, Description, URL, Year, Season, Episode); AddEpisode(Title, Title, '', URL, '', Season, ''); //Episode := TextBetween(HTML, '
', '
', false, curPos); curPos := PosFrom('',HTML); If curPos < 1 Then Exit; ItemValue:=TextBetWeenFirst(HTML,'

','

'); LogMessage(' Get result ItemValue:'+ItemValue+'||'); //AddSearchResult(' ** '+ItemValue+' **','','','',''); //AddSearchResult('','','','',''); LogMessage(' Parsing search results... BEGIN ===================== ||'); LogMessage(' Parsing search results...'); LogMessage('Parsing search results ...'+#13#10); LogMessage(' Search Result START * *'); curPos:=Pos('">
',HTML,curPos)+3; endPos:=PosFrom(' ',HTML,curPos); Title:=RemoveTags(Trim(Copy(HTML,curPos,endPos-curPos)),false); // Title :=StringReplace(Title,') - ',') '+#13,true,false,true); // Title :=StringReplace(Title,' - ','
',true,false,true); //LogMessage(' Get result Title:'+Title+'||'); If Pos(' (in development)',Title) OR Pos(' (TV Movie)',Title) OR Pos(' (Video Game)',Title) OR Pos(' (Video)',Title) OR Pos(' (TV Special)',Title) OR Pos(' (TV Short)',Title) OR Pos(' (Short)',Title) < 1 then //If Pos(' (in development)',Title) OR Pos(' (TV Special)',Title) OR Pos(' (Video Game)',Title) < 1 then //If Pos(' (TV Series)',Title) OR Pos(' (TV Mini-Series)',Title) > 0 then //If Pos(' (TV Series)',Title) > 2 then //If Pos(' (TV Mini-Series)',Title) > 0 then If Pos(' (TV Episode)',Title) < 1 then AddSearchResult(Title,'','',URL,''); LogMessage(' Get results AddSearchResult:#'+IntToStr(index)+'|'+Title+'|'+URL+' ||'); //AddSearchResult(Title,'','',URL,Preview); //LogMessage(' Get results AddSearchResult:#'+IntToStr(index)+'|'+Title+'|'+URL+' | '+Preview+' ||'); curPos:=PosFrom('">
',HTML) > 0 Then ParseMovie(URL,HTML); LogMessage(' * One Movie *'); LogMessage(' Parse Results for ParseMovie:|'+URL+' |'); LogMessage(' * One Movie END *'); LogMessage('Function ParsePage NORMAL END======================|'); Mode:=NextMode(Mode); if Mode <> smFinished then Result:=prDownload Else Result:=prFinished; End; Begin Mode:=smSearch; for ELI:=Low(ExtraLinks) to High(ExtraLinks) do ExtraLinks[ELI] := ''; End. //BlockClose