English > PVD Python Scripts
PVD Selenium MOD v4 IMDb Movie Script Confusion
Ivek23:
Function ParsePage_IMDBMovieREFERENCE
Minor code correction.
--- Quote ---Function ParsePage_IMDBMovieREFERENCE(HTML:String):Cardinal; //BlockOpen
//Returns:
// Result := prFinished; Script has finished gathering data
// Result := prError; //It will change to prError if any major issue occurs and will exit;
//Retrieve: REFERENCE~
Var
curPos, endPos, debug_pos1:Integer;
MoviesID, MoviesID2: String;
ItemValue, ItemList, ItemList2, ItemList22: String;
ItemValue22, ItemValue3, ItemValue30, ItemValue31: String;
ItemValue00, ItemValue0, ItemValue1, ItemValue2: String;
ItemValue10, ItemValue11, ItemValue12, ItemValue40: String;
ItemValue100, ItemValue120, ItemValue140, ItemValue220: String;
ItemValue33, ItemList33, enTitleValue, enTitleList: String;
ItemValue320, ItemValue330: String;
.
.
.
Begin
LogMessage('Function ParsePage_IMDBMovieREFERENCE BEGIN=====================| |');
Result := prFinished; //It will change to prError if any major issue occurs and will exit;
--- End quote ---
--- Quote --- //LogMessage('Function ParsePage_IMDBMovieREFERENCE - Value of ReleaseInfoPageDownloaded: ' + BoolToStr(ReleaseInfoPageDownloaded))
// Get Imdb Release Date ~rdate~, (CF~IMDB Release Date~), (CF~IMDB Release Dates~)
ItemValue120 := TextBetWeenFirst(ItemList, '/releaseinfo">', '</a>');
if ItemValue120 <> '' then LogMessage('Function - Get result ItemValue120: ' + ItemValue120 + ' | |');
if ItemValue120 <> '' then AddCustomFieldValueByName('Imdb Release Date', ItemValue120);
//AddCustomFieldValueByName('IMDB Release Dates', ItemValue120);
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result DatePublished (CF~IMDB Release Date~): ' + ItemValue120 + ' | |');
ItemValue320 := TextBetWeenFirst(ItemList, '/releaseinfo">', ' (');
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result DatePublished 320 for ~rdate~): ' + ItemValue320 + ' | |');
// ItemValue320 := ConfDate2(ItemValue320);
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result DatePublished ItemValue320 after ConfDate2 for ~rdate~): ' + ItemValue320 + ' | |');
// AddFieldValueXML('rdate', ItemValue320); // Function ConfDate2 to ensure the day and month always have two digits and to format the date independently of regional settings.
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ~rdate~: ' + ItemValue320 + ' | |');
//End;
--- End quote ---
--- Quote --- //Get Plot Summary from "Storyline" section as ~description~
curPos := Pos('<td class="ipl-zebra-list__label">Plot Summary</td>', HTML); //WEB_SPECIFIC.
If 0<curPos then begin
ItemValue330 := TextBetWeen(HTML, '<p>', '</p>', false, curPos); //Strings which opens/closes the data. WEB_SPECIFIC
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue330 for ~description~ from the "Storyline": ' + #13 + ItemValue330 + ' | |');
curPos := Pos('Written by', ItemValue330); //WEB_SPECIFIC.
If 0<curPos then ItemValue330 := Copy(ItemValue330, 0, curPos-1);
curPos := Pos('Seasons', ItemValue330); //WEB_SPECIFIC.
If 0<curPos then ItemValue330 := Copy(ItemValue330, 0, curPos-1);
curPos := Pos('Season', ItemValue330); //WEB_SPECIFIC.
If 0<curPos then ItemValue330 := Copy(ItemValue330, 0, curPos-1);
curPos := Pos('Year:', ItemValue330); //WEB_SPECIFIC.
If 0<curPos then ItemValue330 := Copy(ItemValue330, 0, curPos-1);
ItemValue330 := StringReplace(ItemValue330, 'Know what this is about?', '', true, false, true); //Cleaning. WEB_SPECIFIC.
ItemValue330 := StringReplace(ItemValue330, 'Be the first one to add a plot.', '', true, false, true); //Cleaning. WEB_SPECIFIC.
ItemValue330 := StringReplace(ItemValue330, 'IMDb Answers surfaces high-value content that is missing from IMDb.', '', true, false, true); //Cleaning. WEB_SPECIFIC.
ItemValue330 := StringReplace(ItemValue330, ' -- ', ' — ', True, False, True);
//AddFieldValueXML('description', ItemValue330);
if ItemValue330 <> '' then LogMessage('Function ParsePage_IMDBMovieREFERENCE - added result for ~description~ from the "Storyline": ' + #13 + ItemValue330 + ' | |');
End;
if (ItemValue330 = '') AND (ItemValue22 <> '') then
AddFieldValueXML('description', ItemValue22);
AddCustomFieldValueByName('Description', ItemValue22);
if (ItemValue330 <> '') AND (ItemValue22 <> '') then
AddFieldValueXML('description', ItemValue330);
AddCustomFieldValueByName('Description', ItemValue330);
--- End quote ---
Ivek23:
Function ParsePage_IMDBMovieREFERENCE
Custom field to remove.
--- Quote --- //(*
// Get (CF~Year~) and ~year~
If Pos('<div id="content-2-wide" class="redesign">', HTML)>0 Then Begin
curPos := PosFrom('<h3 itemprop="name">', HTML, EndPos);
EndPos := PosFrom('<section class="titlereference-section-overview">', HTML, curPos);
ItemList := Copy(HTML, curPos, endPos-curPos);
ItemValue10 := TextBetWeenFirst(ItemList, 'itemprop="url">', '</a>');
//if ItemValue10 <> '' then AddCustomFieldValueByName('IMDB_year', ItemValue10);
if ItemValue10 <> '' then AddCustomFieldValueByName('Year', ItemValue10);
//If Not (USE_SAVED_PVDCONFIG And (ConfigOptions[4] = '0')) Then Begin
if ItemValue10 <> '' then AddFieldValueXML('year', ItemValue10); //It looks like there is a bug in PVD. Year will be populated even if set to "None" in PVD)
//End;
--- End quote ---
--- Quote --- // Get ~imdbrating~ (CF~IMDB Rating~), (~IMDBRating~)
ItemValue2 := TextBetWeenFirst(ItemList, '<span class="ipl-rating-star__rating">', '</span>');
//ItemValue2 := StringReplace(ItemValue2, ',', '.', True, False, False);
If ItemValue2 = '0' then ItemValue2 := '';
if ItemValue2 <> '' then LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue2: ' + ItemValue2 + ' | |');
//if ItemValue2 <> '' then ItemList2 := ItemList2 + ItemValue2;
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemList2 + ItemValue: ' + ItemList2 + ItemValue2 + ' | |');
AddFieldValueXML('imdbrating',ItemValue2);
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ratingValue ~imdbrating~ (CF~IMDB Rating~), (~IMDBRating~): ' + ItemValue2 + ' | |');
--- End quote ---
--- Quote --- // Get IMDb Votes (CF~IMDB_Votes~), (CF~IMDB Votes~), (CF~IMDB Votes:~)
ItemValue12 := TextBetWeenFirst(ItemList, '<span class="ipl-rating-star__total-votes">(', ')</span>');
ItemValue12 := StringReplace(ItemValue12, '.', '', True, False, False);
AddCustomFieldValueByName('IMDB Votes', ItemValue12);
AddCustomFieldValueByName('IMDB Votes:', ItemValue12);
if ItemValue12 <> '' then LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ratingCount (CF~IMDB_Votes~): ' + ItemValue12 + ' | |');
if ItemValue12 <> '' then LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue12: ' + ItemValue12 + ' | |');
//if ItemValue12 <> '' then ItemList2 := ItemList2 + ' ' + #8226 + ' ' + ItemValue12;
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemList2: ' + ItemList2 + ' | |');
--- End quote ---
--- Quote --- //LogMessage('Function ParsePage_IMDBMovieREFERENCE - Value of ReleaseInfoPageDownloaded: ' + BoolToStr(ReleaseInfoPageDownloaded))
// Get Imdb Release Date ~rdate~, (CF~IMDB Release Date~), (CF~IMDB Release Dates~)
ItemValue120 := TextBetWeenFirst(ItemList, '/releaseinfo">', '</a>');
if ItemValue120 <> '' then LogMessage('Function - Get result ItemValue120: ' + ItemValue120 + ' | |');
if ItemValue120 <> '' then AddCustomFieldValueByName('Imdb Release Date', ItemValue120);
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result DatePublished (CF~IMDB Release Date~): ' + ItemValue120 + ' | |');
//End;
--- End quote ---
--- Quote --- // Get ~studio~ and (CF~IMDb Studio2~) "Production Co" (multiple values in a comma separated list)
curPos := Pos('">Production compan', HTML); // WEB_SPECIFIC.
//curPos := Pos('<a href="/company/co', HTML) + Length('<a href="/company/co'); // WEB_SPECIFIC.
If 0 < curPos Then Begin
EndPos := curPos;
ItemValue := HTMLValues(HTML, '">Production compan', '</ul>', '<li>', '</a>', ', ', endPos);
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get ItemValue Studio/Production Co multiple: ' + ItemValue + ' | |');
AddFieldValueXML('studio', ItemValue);
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get results Studio/Production Co: ' + ItemValue + ' | |');
End;
--- End quote ---
--- Quote --- If Not(TechnicalPageDownloaded) then Begin
//If Not (USE_SAVED_PVDCONFIG And (ConfigOptions[23] = '0')) Then Begin
// Get the original "Runtime" (in minutes) as ~length~ (in seconds), CF~Run time1~), and (CF~Imdb Runtime1~) instead of the duration of the user movie copy
curPos := Pos('</li>', ItemList) + Length('</li>');
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result curPos for ~length~: ' + IntToStr(curPos) + ' | |');
ItemList := Copy(ItemList, curPos, endPos - curPos);
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemList for ~length~: ' + ItemList + ' | |');
ItemValue := TextBetWeenFirst(ItemList, '<li class="ipl-inline-list__item">', '</li>');
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue for ~length~: ' + ItemValue + ' | |');
if curPos > 0 then
begin
// Extract hours and minutes
Hours := 0;
Minutes := 0;
if Pos('h', ItemValue) > 0 then
begin
Hours := StrToIntDef(Copy(ItemValue, 1, Pos('h', ItemValue) - 1), 0);
ItemValue := Copy(ItemValue, Pos('h', ItemValue) + 1, Length(ItemValue));
end;
if Pos('min', ItemValue) > 0 then
begin
Minutes := StrToIntDef(Copy(ItemValue, 1, Pos('min', ItemValue) - 1), 0);
end;
ItemValue := IntToStr(Hours * 60 + Minutes);
if ItemValue = '0' then ItemValue := '';
if ItemValue <> '' then
begin
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result Original Runtime: ' + ItemValue + ' | |');
AddFieldValueXML('length', IntToStr(60 * StrToInt(ItemValue))); //~length~ Value in seconds.
AddCustomFieldValueByName('Run time 1', ItemValue);
AddCustomFieldValueByName('Imdb Runtime 1', IntToStr(Hours) + 'h' + ' ' + IntToStr(Minutes) + 'm (' + ItemValue + ' minutes)');
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result "Runtime" (in minutes) ~length~, (CF~Run time1~), and (CF~Imdb Runtime1~) : ' + ItemValue + ' | |');
end;
end
else
begin
LogMessage('Function ParsePage_IMDBMovieREFERENCE - duration/length not found');
end;
//End;
End; // If Not(TechnicalPageDownloaded) then Begin should end here
--- End quote ---
--- Quote --- If Not (MainPageDownloaded) And Not (TechnicalPageDownloaded) Then Begin
//Get "Color" (CF~Color :~) & (CF~'Imdb Color :~) (multiple values in a comma separated list)
curPos := Pos('<td class="ipl-zebra-list__label">Color</td>', HTML);
//LogMessage('Function ParsePage_IMDBMovieBASE - Get result curPos (CF~Color~) & (CF~Imdb Color~): ' + IntToStr(curPos) + ' | |');
if 0<curPos then begin
EndPos := curPos;
ItemValue := HTMLValues2(HTML, '<td class="ipl-zebra-list__label">Color</td>', '</ul>', '<li class="ipl-inline-list__item">', '</li>', ', ', EndPos);
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue after HTMLValues2 (CF~Color~) & (CF~Imdb Color~): ' + ItemValue + ' | |');
//ItemValue := StringReplace(ItemValue, '| ', ', ', True, True, False); //WEB_SPECIFIC.
ItemValue := StringReplace(ItemValue, '(', ' (', True, True, False); //WEB_SPECIFIC.
if ItemValue <> '' then ItemList := ItemList + 'Color: ' + ItemValue + '<br>';
if ItemValue <> '' then AddCustomFieldValueByName('Color :', ItemValue);
if ItemValue <> '' then AddCustomFieldValueByName('Imdb Color :', ItemValue);
if ItemValue <> '' then LogMessage('Function ParsePage_IMDBMovieBASE - Get result (CF~Color :~) and (CF~Imdb Color :~): ' + ItemValue + ' | |');
End;
End; //If Not (MainPageDownloaded) And Not (TechnicalPageDownloaded) Then Begin should end here
--- End quote ---
Removing unnecessary parts of the code.
--- Quote ---(*
If Not (MainPageDownloaded) Then Begin
// Go to "Connections" (CF~Conect~) (CF~MiniConnections~) (CF~FOLLOWEDBY_FIELD~)
// Initialize the string to collect all entries
allItemValues := '';
StartPos := Pos('<td class="ipl-zebra-list__label">Movie Connections</td>', HTML);
If StartPos > 0 Then Begin
// Define the end marker for the "Connections" section
EndPos := PosFrom('</tr>', HTML, StartPos);
If EndPos > StartPos Then Begin
// Extract the relevant HTML section
ItemValue := Copy(HTML, StartPos, EndPos - StartPos);
//LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result ItemValue for (CF~Conect~) (CF~MiniConnections~) (CF~FOLLOWEDBY_FIELD~) : ' + #13 + ItemValue + ' | |' + #13);
// Initialize connections container
Connections := '';
// Define connection types
connectionTypes := ['Featured in', 'Follows', 'Followed by', 'Referenced in', 'Remade as', 'Remake of', 'Spin-off', 'Spoofed in', 'Edited into', 'Edited from', 'Version of', 'Features', 'References', 'Spoofs', 'Spin-off from'];
// Iterate through each type of connection using an indexed loop
For i := Low(connectionTypes) To High(connectionTypes) Do Begin
connType := connectionTypes;
connStartPos := PosFrom(connType, ItemValue, 1);
While connStartPos > 0 Do Begin
connEndPos := PosFrom('</a>', ItemValue, connStartPos) + Length('</a>') - 1;
If connEndPos > connStartPos Then Begin
connHTML := Copy(ItemValue, connStartPos, connEndPos - connStartPos + 1);
// Extract the link URL
linkStartPos := PosFrom('<a href="', connHTML, 1) + Length('<a href="');
linkEndPos := PosFrom('">', connHTML, linkStartPos);
linkURL := Copy(connHTML, linkStartPos, linkEndPos - linkStartPos);
// Extract the link text
textStartPos := linkEndPos + Length('">');
textEndPos := PosFrom('</a>', connHTML, textStartPos);
linkText := Copy(connHTML, textStartPos, textEndPos - textStartPos);
// Build the custom format
connHTML := connType + ' <link url="https://www.imdb.com' + linkURL + '">' + linkText + '</link>';
// Append to connections container
If Length(Connections) > 0 Then
Connections := Connections + ', ' + connHTML
Else
Connections := connHTML;
End;
connStartPos := PosFrom(connType, ItemValue, connStartPos + Length(connHTML));
End;
End;
LogMessage('Function ParsePage_IMDBMovieREFERENCE - Final processed Connections: ' + Connections + ' | |' + #13);
// Add custom field values
AddCustomFieldValueByName('Conect', Connections);
AddCustomFieldValueByName('MiniConnections', Connections);
// Add condition to check "Followed By" presence and add custom field value
If PosFrom('Followed By', Connections, 1) > 0 Then
AddCustomFieldValueByName(FOLLOWEDBY_FIELD, '-1');
End;
End Else
LogMessage('Function ParsePage_IMDBMovieREFERENCE - (CF~Conect~) (CF~MiniConnections~) (CF~FOLLOWEDBY_FIELD~) not found');
*)
(*
//Go to "Soundtracks" (CF~MiniSoundtracks~)
StartPos := Pos('<td class="ipl-zebra-list__label">Soundtracks</td>', HTML);
if StartPos>0 then begin
//ItemValue := HTMLValue(HTML, StartPos, 0, '<div><span class="soundtrack-', '</div>');
ItemValue := TextBetWeen(HTML, '<td>', '<a href=', False, StartPos);
AddCustomFieldValueByName('MiniSoundtracks', ItemValue);
if ItemValue <> '' then LogMessage('Function ParsePage_IMDBMovieREFERENCE - Get result Soundtracks (CF~MiniSoundtracks~): ' + #13 + ItemValue + #13);
end else
LogMessage('Function ParsePage_IMDBMovieREFERENCE - (CF~MiniSoundtracks~) not found');
End; //If Not (MainPageDownloaded) Then Begin should end here
*)
--- End quote ---
Ivek23:
Function ParsePage_IMDBMovieTECHNICAL
Removing unnecessary parts of the code.
--- Quote --- //Get "Technical Specifications" info
curPos := Pos('<hgroup><h1 class="ipc-title__text">Technical specifications</h1></hgroup>', HTML);
if (curPos=0) then Exit;
EndPos := curPos;
ItemList2 := TextBetWeenFirst(HTML, '<h1 class="ipc-title__text">Technical specifications<', 'span id="contribute">Contribute to this page</span>'); //WEB_SPECIFIC.
If (Length(ItemList2)>0) Then Begin
--- End quote ---
Removing unnecessary parts of code for custom fields.
--- Quote --- //Get "Sound Mix" info (CF~SILENT_FIELD~), (CF~Imdb SoundMix~) and (CF~Imdb Sound Mix~)
curPos := Pos('Sound Mix', ItemList2); //WEB_SPECIFIC.
If 2<curPos Then Begin
ItemValue := HTMLValues2(HTML, 'Sound Mix', '</ul>', '<li role="presentation" class="ipc-inline-list__item">', '</li>', ' ', EndPos); //WEB_SPECIFIC.
ItemValue1 := ItemValue;
ItemValue := StringReplace(ItemValue, ' ', #13, True, False, True);
ItemValue := StringReplace(ItemValue, '(', ' (', True, False, True);
If ItemValue <> '' then LogMessage('Function ParsePage_IMDBMovieTECHNICAL - Get result Sound Mix: ' + ItemValue + ' | |');
if ItemValue <> '' then ItemList := ItemList + 'Sound Mix' + '<br>' + ItemValue + '<br><br>';
// SILENT_FIELD = 'Silent';
if PosFrom('Silent', ItemValue, 1)>0 then AddCustomFieldValueByName(SILENT_FIELD, '-1');
if ItemValue <> '' then AddCustomFieldValueByName('Imdb SoundMix', ItemValue);
ItemValue1 := StringReplace(ItemValue1, ' ', #13 + ', ', True, False, True);
if ItemValue <> '' then AddCustomFieldValueByName('Imdb Sound Mix', RemoveTagsEx0(ItemValue1));
If ItemValue1 <> '' then LogMessage('Function ParsePage_IMDBMovieTECHNICAL - Added result for (CF~Imdb SoundMix~) and (CF~Imdb Sound Mix~): ' + ItemValue1 + ' | |');
End;
--- End quote ---
--- Quote --- //Get "Aspect Ratio" (CF~Imdb AspectRatio~), (CF~Imdb_Aspect Ratio~), (CF~Imdb Aspect Ratio~), (CF~Aspect Ratio~), (CF~Imdb Aspect Ratio:~) and (CF~Aspect Ratio:~) info
curPos := Pos('Aspect Ratio', ItemList2); //WEB_SPECIFIC.
If 2<curPos Then Begin
ItemValue := HTMLValues2(HTML, 'Aspect Ratio', '</ul>', '<li role="presentation" class="ipc-inline-list__item">', '</li>', ' ', EndPos); //'<br><br>'
ItemValue1 := ItemValue;
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL Getting result initial ItemValue1 := ItemValue: ' + ItemValue + ' | |');
ItemValue := StringReplace(ItemValue, ' ', #13, True, False, True);
ItemValue := StringReplace(ItemValue, '(', ' (', True, False, True);
If ItemValue <> '' then LogMessage('Function ParsePage_IMDBMovieTECHNICAL Getting result ItemValue for the ~features~: ' + ItemValue + ' | |');
if ItemValue <> '' then ItemList := ItemList + 'Aspect Ratio' + '<br>' + ItemValue + '<br><br>';
ItemValue1 := StringReplace(ItemValue1, '/ (high definition)', ' HD', True, False, True);
ItemValue1 := StringReplace(ItemValue1, 'widescreen', 'WideScreen', True, False, True);
(* //instead of this, I provided snippet that depends on ":" and not on AR, because in the existing snippet there are many ARs that are missing.
ItemValue1 := StringReplace(ItemValue1, '16:9 HD', '16 : 9 HD', True, False, True);
ItemValue1 := StringReplace(ItemValue1, '4:3', '4 : 3', True, False, True);
ItemValue1 := StringReplace(ItemValue1, '2.55: 1', '2.55 : 1', True, False, True);
ItemValue1 := StringReplace(ItemValue1, '2.39: 1', '2.39 : 1', True, False, True);
ItemValue1 := StringReplace(ItemValue1, '2.40:1', '2.40 : 1', True, False, True);
//*)
ResultText := '';
i := 1;
While i <= Length(ItemValue1) Do Begin
If ItemValue1 = ':' Then Begin
// Check for spaces before and after the colon
If (i > 1) And (ItemValue1[i-1] <> ' ') Then
ResultText := ResultText + ' ';
ResultText := ResultText + ':';
If (i < Length(ItemValue1)) And (ItemValue1[i+1] <> ' ') Then
ResultText := ResultText + ' ';
End Else
ResultText := ResultText + ItemValue1;
i := i + 1;
End;
ItemValue1 := ResultText;
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL - ResultText: ' + ItemValue1 + ' | |');
//ItemValue1 := StringReplace(ItemValue1, '1(', '1, (', True, False, True);
ItemValue1 := StringReplace(ItemValue1, '1(', '1 (', True, False, True);
ItemValue1 := StringReplace(ItemValue1, ') ', '), ', True, False, True);
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL - ItemValue1: ' + ItemValue1 + ' | |');
// Initialize ItemValue3 to get ARs without descriptions
ItemValue3 := '';
ExplodeString(ItemValue1, ItemArray, ',');
// Iterate through the array and extract only aspect ratios
For i := 0 To High(ItemArray) Do Begin
ItemArray := Trim(ItemArray);
// Check if the entry contains an aspect ratio
If Pos(':', ItemArray) > 0 Then Begin
// Remove any parenthesis and their content
ItemArray := Copy(ItemArray, 1, Pos('(', ItemArray) - 1);
// Trim any trailing spaces
ItemArray := Trim(ItemArray);
// Append to ItemValue3
If ItemValue3 <> '' Then
ItemValue3 := ItemValue3 + ', ';
ItemValue3 := ItemValue3 + ItemArray;
End;
End;
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL - ItemValue3 (Aspect Ratios only): ' + ItemValue3 + ' | |');
if ItemValue <> '' then AddCustomFieldValueByName('Imdb_Aspect Ratio', StringReplace(RemoveTagsEx0(ItemValue1),' ',', ',True,False,True)); //As memo field, ARs with the description each as a comma separated list.
if ItemValue <> '' then AddCustomFieldValueByName('Imdb Aspect Ratio', RemoveTagsEx0(ItemValue3)); //As memo field, ARs without the description as comma separated list.-------
if ItemValue3 = '' then AddCustomFieldValueByName('Imdb Aspect Ratio', RemoveTagsEx0(ItemValue1)); //As memo field, ARs without the description as comma separated list.-------
if ItemValue <> '' then AddCustomFieldValueByName('Aspect Ratio', ItemValue); //As multiselect list field, ARs with the description each in separate line.
if ItemValue1 <> '' then LogMessage('Function ParsePage_IMDBMovieTECHNICAL - ItemValue, ItemValue1 and ItemValue3 are added to a memo and multiselect list');
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL - ItemValue, ItemValue1 and ItemValue3 that are added to a memo and multiselect list):' + #13#10 + #13#10 + 'ItemValue added as:' + #13#10 + '---------' + #13#10 + ItemValue + ' | |' + #13#10 + #13#10 + 'ItemValue1 added as' + #13#10 + '---------' + #13#10 + ItemValue1 + ' | |' + #13#10 + #13#10 + 'ItemValue3 added as' + #13#10 + '---------' + #13#10 + ItemValue3 + ' | |' + #13#10);
End;
--- End quote ---
--- Quote --- //Write to ~features~ and (CF~ImdbTechSpecs~) fields
if (Length(ItemList)>0) then begin
AddFieldValueXML('features', ItemList);
AddCustomFieldValueByName('ImdbTechSpecs', ItemList); //Ivek23 CustomField ~ImdbTechSpecs~ for ~features~
//LogMessage('Function ParsePage_IMDBMovieTECHNICAL - Added result Movie ~features~ and (CF~ImdbTechSpecs~): ' + ItemList + ' | |');
End;
End;
--- End quote ---
--- Quote --- //if (ItemValue2 = '') AND (ItemValue00 <> '') then AddFieldValueXML('length', IntToStr(60*StrToInt(ItemValue0)));
if (ItemValue2 <> '') AND (ItemValue = '') then AddFieldValueXML('length', IntToStr(60*StrToInt(ItemValue2)));
if (ItemValue2 <> '') AND (ItemValue0 <> '') then AddFieldValueXML('length', IntToStr(60*StrToInt(ItemValue0)));
if (ItemValue2 = '') AND (ItemValue0 <> '') then AddCustomFieldValueByName('Run time', ItemValue0);
if (ItemValue2 <> '') AND (ItemValue0 = '') then AddCustomFieldValueByName('Run time', ItemValue2);
if (ItemValue2 <> '') AND (ItemValue0 <> '') then AddCustomFieldValueByName('Run time', ItemValue0);
LogMessage('Function ParsePage_IMDBMovieTECHNICAL END=====================| |');
End; //BlockClose
--- End quote ---
Ivek23:
Function ParsePage_IMDBMovieAWARDS
Minor code correction.
--- Quote --- // Extract category
//categoryPos := PosFrom('<span class="ipc-metadata-list-summary-item__li awardCategoryName" aria-disabled="false">', Award, 1);
categoryPos := PosFrom('<span class="ipc-metadata-list-summary-item__li awardCategoryName ipc-btn--not-interactable" aria-disabled="false">', Award, 1);
If categoryPos > 0 Then Begin
categoryPos := PosFrom('>', Award, categoryPos) + 1;
endPos := PosFrom('</span>', Award, categoryPos);
Category := Copy(Award, categoryPos, endPos - categoryPos);
LogMessage('Function ParsePage_IMDBMovieAWARDS - Parsed Category: ' + Category);
End Else Begin
LogMessage('Function ParsePage_IMDBMovieAWARDS - Category tag not found');
Category := '';
End;
--- End quote ---
Ivek23:
ParsePage_IMDBMovieCONNECTIONS
Minor code correction.
--- Quote --- // Format the category link
Category1 := Category1 + '<link url="' + MovieURL + optionValue + '">' + categoryName + '</link> • ';
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Formatted and added category link: ' + '<link url="' + MovieURL + optionValue + '">' + categoryName + ' • </link>');
// Move to the next position
curPos := PosFrom('</option>', Category2, curPos) + Length('</option>');
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Moved curPos to next option tag: ' + IntToStr(curPos));
End;
// Remove the trailing " • " if it exists and keep the last </link> intact
If Copy(Category1, Length(Category1) - 13, 7) = ' • ' Then
Begin
Category1 := Copy(Category1, 1, Length(Category1) - 14) + '</link>';
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Removed trailing " • " and kept last </link> in Category1');
End;
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Final Category1 before combining: ' + Category1);
// Combine and format the final result
Category1 := '<link url="' + MovieURL + '">Connections:</link> ' + Category1;
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Combined and formatted final Category1: ' + Category1);
// Store the result in the custom field
--- End quote ---
--- Quote --- // Combine and format the final result
if Category1 <> '' then
Category1 := '<link url="' + MovieURL + '">Connections:</link> • ' + Category1
Else
Category1 := '<link url="' + MovieURL + '">Connections:</link> ' + Category1;;
//LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Combined and formatted final Category1: ' + Category1);
--- End quote ---
Function ParsePage_IMDBMovieCRITICREVIEWS
Minor code correction.
--- Quote --- //Get ~Metascore~
EndPos := Pos('</span></span><span class="label"><span class="metacritic-score-label">Metascore</span></span></span></a></li></ul>', HTML);
if EndPos>0 then begin
curPos := PrevPos('">', HTML, EndPos) + Length('">');
EndPos := PosFrom('</span></span><span class="label"><span class="metacritic-score-label">Metascore</span></span></span></a></li></ul>', HTML, curPos) + 2;
//ItemValue := RemoveTags(Copy(HTML, curPos, endPos-curPos), false);
ItemValue := Copy(HTML, curPos, endPos-curPos);
LogMessage('Function ParsePage_IMDBMovieCRITICREVIEWS - Get result Metascore original: ' + ItemValue + ' | |');
ItemValue := CustomStringReplace(ItemValue, ['0</', '1</', '2</', '3</', '4</', '5</', '6</', '7</', '8</', '9</'], [',0', ',1', ',2', ',3', ',4', ',5', ',6', ',7', ',8', ',9']);
//curPos := Pos('var ue_t0=ue_t0', ItemValue); //WEB_SPECIFIC.
//If 0<curPos then ItemValue := Copy(ItemValue, 0, curPos-1);
if ItemValue <> '' then AddCustomFieldValueByName('Metascore', FloatToStr((StrToFloat(ItemValue) * 1)));
if ItemValue <> '' then LogMessage('Function ParsePage_IMDBMovieCRITICREVIEWS - Get result Metascore in PVD format (CF~Metascore~): ' + ItemValue + ' | |');
End;
--- End quote ---
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version