//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 '' 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('',HTML); If 0','','',', ',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('',HTML); If 0