//SCRIPT INFO================================================================================================== BlockOpen
(* Following until 'SCRIPT BEGINS HERE...' is documentation.
Please see 'USER OPTIONS' in the body of the script.
---------------------------------------------
SCRIPT: Imdb Movie(episodelist)a Script
AUTHOR: Ivek23
VERSION: 0.1.1.5
DATE: 17/02/2016
NEW_VERSION: 0.1.2.0
UPDATE: 04/09/2021
---------------------------------------------
*)
// //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;
smEp0 = 6;
smEp1 = 7;
smEp2 = 8;
smEp3 = 9;
smEp4 = 10;
smEp5 = 11;
smEp6 = 12;
smEp7 = 13;
smEp8 = 14;
smEp9 = 15;
smEp10 = 16;
smEp11 = 17;
smEp12 = 18;
smEp13 = 19;
smEp14 = 20;
smEp15 = 21;
smEp16 = 22;
smEp17 = 23;
smEp18 = 24;
smEp19 = 25;
smEp20 = 26;
smEp = 27;
smPoster = 28;
smFinished = 29;
//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.6';
SCRIPT_VERSION = '0.1.2.0';
SCRIPT_NAME = 'Imdb Movie Script(episodelist)a';
SCRIPT_DESC = '[EN] Get Movie Information from Imdb.com(episodelist)a';
SCRIPT_LANG = $09; //English
SCRIPT_TYPE = stMovies;
BASE_URL = 'http://www.imdb.com';
BASE_URL_PERSON = 'http://www.imdb.com/name/';
BASE_URL_SUF = '/';
BASE_URL_PRE = 'http://www.imdb.com/';
BASE_URL_PRE_TRUE = 'https://www.imdb.com/';
WEB_URL = 'http://web.archive.org';
WEB_URL_PRE = 'http://web.archive.org/web/';
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,I:Integer;
Mode:Byte;
MediaType:String; //'Movie''TVSeries''TVEpisode'
fullinfo,fullinfo1,fullinfo0,fullinfo00:String;
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('Global Var-Mode |'+IntToStr(Mode)+' |');
If (Mode=smSearch) Then
Result:=SEARCH_STR
Else
Result:=ExtraLinks[Mode];
LogMessage('Global Var-Result '+Result);
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 '-1' then AddCustomFieldValueByName('EPNUM ID:',GetFieldValueXML('epnum'));
if GetFieldValueXML('epnum') <> '-1' then LogMessage(' *** Movie EPNUM ID: '+GetFieldValueXML('epnum')+' ***');
if GetFieldValueXML('num') <> '0' then AddCustomFieldValueByName('NUM ID:',GetFieldValueXML('num'));
if GetFieldValueXML('num') <> '0' then LogMessage(' * Movie NUM ID: '+GetFieldValueXML('num'));
//Date ~Updated~ (choose simple or verbose version)
Date:=DateToStr(CurrentDateTime);
If Date <> '' 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_NAM+' '+SCRIPT_VERSION); // Annoying
AddCustomFieldValueByName('IUpdated0',Date+' '+#8226+' '+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
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);
//Get ~IMDb Url~
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,'?season=16','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=17','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=18','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=19','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=20','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=21','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=22','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=23','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=24','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=25','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=26','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=27','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=28','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=29','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=30','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=31','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=32','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=33','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=34','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=35','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=36','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=37','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=38','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=39','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=40','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=41','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=42','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=43','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=44','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=45','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=46','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=47','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=48','',True,False,True);
MovieURL:=StringReplace(MovieURL,'?season=49','',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,'/6','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/7','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/8','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/9','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/10','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/11','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/12','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/13','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/14','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/15','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/16','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/17','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/18','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/19','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/20','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/21','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/22','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/23','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/24','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/25','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/26','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/27','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/28','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/29','/',True,False,True);
MovieURL:=StringReplace(MovieURL,'/30','/',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');
//Get ~IMDbID~
TmpStr:=StringReplace(MovieURL,'http://www.imdb.com/title/','',False,False,False);
TmpStr:=StringReplace(TmpStr,'?ref_=fn_tt_tt_','',True,False,True);
TmpStr:=StringReplace(TmpStr,'/','',True,False,True);
AddCustomFieldValueByName('IMDbID',TmpStr);
LogMessage(' Get result IMDbID: '+TmpStr);
//Get ~IMDb Url~
Fullinfo1:='';
//Fullinfo1:=Fullinfo1+'Maindetails ';
Fullinfo1:=Fullinfo1+'MainPage ';
Fullinfo1:=Fullinfo1+'Reference ';
Fullinfo1:=Fullinfo1+'Episodes ';
Fullinfo1:=Fullinfo1+'Full Cast&Crew ';
Fullinfo1:=Fullinfo1+'Awards ';
Fullinfo1:=Fullinfo1+'ReleaseDates ';
Fullinfo1:=Fullinfo1+'TechSpecs ';
Fullinfo1:=Fullinfo1+'ParentsGuide ';
Fullinfo1:=Fullinfo1+'PlotKeywords ';
Fullinfo1:=Fullinfo1+'PlotSummary ';
Fullinfo1:=Fullinfo1+'FilmLocations ';
Fullinfo1:=Fullinfo1+'Taglines ';
Fullinfo1:=Fullinfo1+'CompanyCredits ';
Fullinfo1:=Fullinfo1+'Connections ';
Fullinfo1:=Fullinfo1+'Soundtracks ';
Fullinfo1:=Fullinfo1+'MiscSites ';
Fullinfo1:=Fullinfo1+'MiscPhoto ';
Fullinfo1:=Fullinfo1+'PhotoGallery ';
If Fullinfo1 <> '' then IMDB_URL:=Fullinfo1;
If IMDB_URL <> '' then AddCustomFieldValueByName('IMDb Movie Url',IMDB_URL);
LogMessage('**IMDB Movie END ===================== ||');
LogMessage(' ParseMovie BEGIN** ====================== |');
fullinfo:=fullinfo;
//(*
//Get ~rdate~ in contry provider local IP geolocation. See: http://sobizarre-en.blogspot.fr/2014/12/how-to-easily-defeat-imdb-geolocation.html
//Get ~imdbrating~, ~IMDB_Votes~ (Two tries)
ItemList:=TextBetWeenFirst(HTML,''+' ||');
If (Length(ItemList)>0) Then Begin
//Get ~title~
titleValue:=TextBetWeenFirst(ItemList,'","name":"','","');
If titleValue = '0' then titleValue:='';
//If titleValue = '' then titleValue:=TextBetWeenFirst(ItemList,'
','<'); //Strings which opens/closes the data. WEB_SPECIFIC
AddFieldValueXML('title',titleValue);
AddCustomFieldValueByName('Title',titleValue);
//AddCustomFieldValueByName('Localized title',titleValue);
if titleValue <> '' then LogMessage(' Get result title: '+titleValue);
//Get ~origtitle~
ItemValue:=TextBetWeenFirst(ItemList,'","name":"','","');
If (Length(ItemValue)=0) Then ItemValue:=titleValue;
AddFieldValueXML('origtitle',ItemValue);
AddCustomFieldValueByName('Origtitle',ItemValue);
if ItemValue <> '' then LogMessage(' Get result origtitle: '+ItemValue);
//Get ~alternatetitle~
ItemValue:=TextBetWeenFirst(ItemList,'","alternateName":"','","');
AddCustomFieldValueByName('Localized title',ItemValue);
if ItemValue <> '' then LogMessage(' Get result alternatetitle: '+ItemValue);
//Get ~IMDB_Movietype~
ItemValue:=TextBetWeenFirst(ItemList,'","@type":"','","');
if ItemValue <> '' then LogMessage(' Get result MediaType: '+ItemValue);
MediaType:=ItemValue;
MediaType:=StringReplace(MediaType,'TVSeries','TV Series',True,False,True);
MediaType:=StringReplace(MediaType,'TVEpisode','TV Episode',True,False,True);
AddCustomFieldValueByName('IMDB_Movietype',MediaType);
if ItemValue <> '' then LogMessage(' Get result MediaType (CF~IMDB_Movietype~):'+MediaType);
//Get ~year~
ItemValue:=TextBetWeenFirst(ItemList,',"datePublished":"','-');
//ItemValue:=TextBetWeenFirst(ItemList,'"datePublished": "','-');
//ItemValue:=TextBetWeenFirst(ItemList,'},"datePublished":"','-');
AddFieldValueXML('year',ItemValue);
if ItemValue <> '' then LogMessage(' Get result year: '+ItemValue);
//Get ~IMDB_Votes~
ItemValue:=TextBetWeenFirst(ItemList,'","ratingCount":',',"');
AddCustomFieldValueByName('IMDB_Votes',ItemValue);
AddCustomFieldValueByName('IMDB Votes',ItemValue);
AddCustomFieldValueByName('IMDB Votes:',ItemValue);
if ItemValue <> '' then LogMessage(' Get result ratingCount (~IMDB_Votes~): '+ItemValue);
//Get ~imdbrating~
//ItemValue:=TextBetWeenFirst(ItemList,'"ratingValue": "','"');
ItemValue:=TextBetWeenFirst(ItemList,'"worstRating":1,"ratingValue":','},"');
//ItemValue:=FloatToStr((StrToFloat(ItemValue) * 1));
AddFieldValueXML('imdbrating',ItemValue);
AddCustomFieldValueByName('IMDB Rating',ItemValue);
AddCustomFieldValueByName('IMDBRating',ItemValue);
if ItemValue <> '' then LogMessage(' Get result ratingValue ~imdbrating~ (CF~IMDB Rating~~IMDBRating~): '+ItemValue);
End;
//*)
//(*
//Get ~Metascore~
curPos:=Pos('">');
curPos:=PosFrom('">',HTML,EndPos)+Length('">');
EndPos:=PosFrom('Metascore',HTML,curPos)+2;
ItemValue:=RemoveTags(Copy(HTML,curPos,endPos-curPos),false);
ItemValue:=StringReplace(ItemValue,'0',',0',True,False,True);
ItemValue:=StringReplace(ItemValue,'1',',1',True,False,True);
ItemValue:=StringReplace(ItemValue,'2',',2',True,False,True);
ItemValue:=StringReplace(ItemValue,'3',',3',True,False,True);
ItemValue:=StringReplace(ItemValue,'4',',4',True,False,True);
ItemValue:=StringReplace(ItemValue,'5',',5',True,False,True);
ItemValue:=StringReplace(ItemValue,'6',',6',True,False,True);
ItemValue:=StringReplace(ItemValue,'7',',7',True,False,True);
ItemValue:=StringReplace(ItemValue,'8',',8',True,False,True);
ItemValue:=StringReplace(ItemValue,'9',',9',True,False,True);
//curPos:=Pos('var ue_t0=ue_t0',ItemValue);
//If 0 '' then AddCustomFieldValueByName('Metascore',FloatToStr((StrToFloat(ItemValue) * 1)));
if ItemValue <> '' then LogMessage(' Get result Metascore (CF~Metascore~): '+ItemValue);
End;
//*)
//(*
//Get "plot_summary" as ~comment~ (In the PVD check fields table selection only ~description~ can be checked for overwrite but the user can change the config and
curPos:=Pos('','
',false,curPos);
//if ItemValue <> '' then LogMessage(#13+' AVOIDED ALWAYS: Get result "Plot_summary" as ~comment~ 1:'+#13+ItemValue+#13);
ItemValue:=StringReplace(ItemValue,'Read all','',True,False,True);
//AddFieldValueXML('comment',ItemValue);
//AddFieldValueXML('description',ItemValue);
AddCustomFieldValueByName('IMDB Plot Summary',ItemValue);
if ItemValue <> '' then LogMessage(#13+' AVOIDED ALWAYS: Get result "Plot_summary" as ~comment~:'+#13+ItemValue+#13);
End;
//*)
//(*
//Get "Storyline-outlines" as ~description~
curPos:=Pos('"outlines":{"edges":[{"node":{',HTML);
If 0','',True,False,True);
//AddFieldValueXML('description',ItemValue2);
AddCustomFieldValueByName('IMDB Synopsis',ItemValue2);
if ItemValue2 <> '' then LogMessage(' Get result description000:'+#13+ItemValue2+#13);
End;
//*)
//(*
//Get "Storyline" as ~description~
curPos:=Pos('
Storyline
',HTML);
If 0
',HTML,endPos)+58;
endPos:=PosFrom('
',HTML,curPos);
ItemValue1:=Trim(Copy(HTML,curPos,endPos-curPos));
curPos:=Pos('','',True,False,True);
AddFieldValueXML('description',ItemValue1);
if ItemValue1 <> '' then LogMessage(' Get result description:'+#13+ItemValue1+#13);
End;
//*)
//(*
//Get "Summaries" as ~description~
curPos:=Pos('"summaries":{"edges":[{"node":{',HTML);
If 0','',True,False,True);
//AddFieldValueXML('description',ItemValue0);
AddCustomFieldValueByName('IMDB-Synopsis',ItemValue2);
if ItemValue0 <> '' then LogMessage(' Get result description00:'+#13+ItemValue0+#13);
End;
//*)
//(*
//Get ~genre~ (field with several values in a comma separated list)
curPos:=Pos('Genres',HTML);
If 0Genres','','
','
',', ',endPos);
AddFieldValueXML('genre',ItemValue);
if ItemValue <> '' then LogMessage(' Get results Genres: '+ItemValue);
End;
//Get ~genre~ (field with several values in a comma separated list)
curPos:=Pos('Genre',HTML);
If 0Genre','','
','
',', ',endPos);
AddFieldValueXML('genre',ItemValue);
if ItemValue <> '' then LogMessage(' Get results Genre: '+ItemValue);
End;
//*)
//(*
//Get ~rdate~ Release date
curPos:=Pos('releaseinfo?ref_=tt_dt_rdat" target="">Release date
',HTML);
If 0','',false,curPos);
if ItemValue <> '' then LogMessage(' Get results Release Date1: '+ItemValue);
debug_pos1:=Pos(' (',ItemValue);
if debug_pos1 >0 then ItemValue := Copy(ItemValue,0,debug_pos1-1);
if ItemValue <> '' then LogMessage(' Get results Release Date01: '+ItemValue);
//AddCustomFieldValueByName('IMDB Release Date',ItemValue);
AddCustomFieldValueByName('IMDB Release Dates',ItemValue);
End;
//*)
//(*
////ItemList1:=TextBetWeenFirst(HTML,'{"edges":[{"node":{"id":"','"synopses":{"edges":[');
ItemList1:=TextBetWeenFirst(HTML,'"},"__typename":"MoreLikeThisEdge"}],"__typename":"MoreLikeThisConnection"},"summaries":{"edges":[{"node":{"plotText":{"plaidHtml":"','"synopses":{"edges":[');
if ItemList1 <> '' then LogMessage(#13+' Parse results ('+IntToStr(curPos)+','+IntToStr(endPos)+') complex ItemList1: '+'"},"__typename":"MoreLikeThisEdge"}],"__typename":"MoreLikeThisConnection"},"summaries":{"edges":[{"node":{"plotText":{"plaidHtml":"'+ItemList1+'],"__typename":"PlotConnection"},"synopses":{"edges":['+'||'+#13);
//ItemList11:=TextBetWeenFirst(HTML,'],"isAdult":','"synopses":{"edges":[');
//if ItemList11 <> '' then LogMessage(#13+' Parse results ('+IntToStr(curPos)+','+IntToStr(endPos)+') complex ItemList11: '+'],"isAdult":'+ItemList11+'],"__typename":"PlotConnection"},"synopses":{"edges":['+'||'+#13);
//*)
//(*
//Get ~rdate~ in "releaseDate"
//ItemList2,ItemList12,day_s,month_s,year_s:String; ' "Certificate"},"releaseYear":{"year":1999,"endYear":2010,"__typename":"YearRange"},"releaseDate":{"day":7,"month":7,"year":2009,"__typename":"ReleaseDate"},"runtime": '
curPos:=Pos(',"releaseDate":{',HTML);
If 0 '' then LogMessage(' Parse results ItemList2: '+ItemList2);
//if ItemValue0 <> '' then LogMessage(' Parse results ItemValue0: '+ItemValue0);
If (Length(ItemList2)>0) Then Begin
day_s:=TextBetWeenFirst(ItemList2,'"day":',',"month":');
if day_s <> '' then LogMessage(' Parse results day_s:'+day_s);
month_s:=TextBetWeenFirst(ItemList2,'"month":',',"year":');
if month_s <> '' then LogMessage(' Parse results month_s:'+month_s);
year_s:=TextBetWeenFirst(ItemList2,'"year":',',"');
if year_s <> '' then LogMessage(' Parse results year_s:'+year_s);
AddFieldValueXML('year',year_s);
ItemList12:=day_s+'.'+month_s+'.'+year_s;
if ItemList12 <> '' then LogMessage(' Parse results ItemList12a: '+ItemList12);
ItemList12:=StringReplace(ItemList12,'null.','',True,False,True);
AddFieldValueXML('rdate',ItemList12);
AddCustomFieldValueByName('IMDB Release Date',ItemList12);
if ItemList12 <> '' then LogMessage(' Parse results ItemList12: '+ItemList12);
End;
End;
//*)
//~Episode Guide~
If Pos('" class="ipc-title ipc-title--section-title ipc-title--base ipc-title--on-textPrimary ipc-title-link-wrapper" tabindex="0">
Episodes',HTML)>0 then begin
curPos:=Pos('" class="ipc-title ipc-title--section-title ipc-title--base ipc-title--on-textPrimary ipc-title-link-wrapper" tabindex="0">
','','',' ',EndPos);
//AddCustomFieldValueByName('Seasons-Episodes',TmpStr);
//if TmpStr <> '' then LogMessage(' Get result Episode Guide: '+TmpStr);
curPos:=EndPos;
end;
If Pos('
','',' ',EndPos);
if TmpStr <> '' then LogMessage(' Get result Episode Guide0:'+TmpStr);
if TmpStr0 <> '' then LogMessage(' Get result Episode Guide1:'+TmpStr0);
TmpStr:=TmpStr+' '+TmpStr0;
//AddCustomFieldValueByName('Seasons-Episodes',TmpStr);
if TmpStr <> '' then LogMessage(' Get result Episode Guide: '+TmpStr);
curPos:=EndPos;
end;
//~Episodes~ 1 seasons
If Pos('" class="ipc-title ipc-title--section-title ipc-title--base ipc-title--on-textPrimary ipc-title-link-wrapper" tabindex="0">
Episodes',HTML)>0 then begin
endPos := Pos('&ref_=tt_eps_sn_1">
', HTML);
if endPos > 0 then begin
curPos := PrevPos('/episodes?season=', HTML, endPos);
if TmpStr2 <> '' then LogMessage(' Get result Seasons-Episodes02: '+TmpStr2);
TmpStr2:=Copy(HTML,curPos+17,endPos-curPos-17);
TmpStr2:=TmpStr+' '+''+TmpStr2+'';
//AddCustomFieldValueByName('Seasons-Episodes0',TmpStr2);
if TmpStr2 <> '' then LogMessage(' Get result Seasons-Episodes2: '+TmpStr2);
end;
end;
//~Episodes~
If Pos('