English > PVD Python Scripts

PVD Selenium MOD v4 IMDb Movie Script Confusion

<< < (4/15) > >>

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