Recent Posts

Pages: [1] 2 3 4 5 6 ... 10
1
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Ivek23 on April 19, 2025, 05:55:01 pm »
There is a PVD Selenium MOD v4 IMDb Movie, People and FilmAffinity topic on this link below, where the Scripts.7z package is a file with all the missing files in the package. Below is also the Scripts-2025-03-23.7z package with updates. Use only those files that you are missing. If you want, you can edit the SeleniumPVDbScriptsConfig-v4.ini file if you want to use more scripts.

https://www.videodb.info/forum_en/index.php/topic,4379.msg22821.html#msg22821
2
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Pacifist on April 19, 2025, 05:07:33 pm »
Here is an updated, modified and adapted IMDB_Movies_[EN][Selenium]-v4.psf , where only one custom field is used in certain parts of the code, rather than multiple duplicated custom fields, which then do not transfer the correct information or, possibly, do not transfer any information at all. However, some parts of the code or redundant parts of the code log files are blocked, because they are not used at all and only unnecessarily increase the size of the script. However, parts of the code are unblocked and should be, because they only slow down the script and a pop-up window appears with the Too many faulty attempts to internet connection notification

Below is the attachment.


Is it possible to compile a complete package of scripts? So that an inexperienced user does not have to suffer during the compilation
3
Talk / Re: Donations to Ivek
« Last post by Ivek23 on April 10, 2025, 10:52:36 am »
I have just read it. My sincere condolences. I wish you a lot of strength in this difficult time.

Thank you very much.
4
Talk / Re: Donations to Ivek
« Last post by svenne on April 10, 2025, 07:02:37 am »
I have just read it. My sincere condolences. I wish you a lot of strength in this difficult time.
5
Scripts and Templates / Re: Export template: HTML List (English + German)
« Last post by svenne on April 09, 2025, 10:40:20 pm »
Hello to all of you,

I haven't been here for a long time. Work and especially family have completely taken over. But I'm still using PVD myself and it's nice to see there is still at least some life in here. Big thanks to Ivek23, I think. It is a great pity that Nostra has put PVD on ice. I really hope he is doing well despite all the current upheavals in the world and that his reasons behind his absence are of a similarly positive nature as those for mine...

Some time ago, I've noticed that large parts of the JavaScript in the HTML frames export template no longer work (at least if exported files are local and not hosted on a domain). The reason is the "same origin policy" that became general standard and that browsers may treat all file:/// URIs as unique origins. In this case, JavaScript in iFrames is no longer allowed to directly access parts of their parents and vice versa. In the exported database, this affects filters, the search function and most of the extras added by pimpHTMLframesExport.exe (which can be found in the subfolder \pimpHTMLframesExport after the export). I fixed this, but tested only in Firefox. The new export templates are attached.

All the kindest wishes to those still here!
6
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Ivek23 on April 09, 2025, 12:54:42 pm »
Here is an updated, modified and adapted IMDB_Movies_[EN][Selenium]-v4.psf , where only one custom field is used in certain parts of the code, rather than multiple duplicated custom fields, which then do not transfer the correct information or, possibly, do not transfer any information at all. However, some parts of the code or redundant parts of the code log files are blocked, because they are not used at all and only unnecessarily increase the size of the script. However, parts of the code are unblocked and should be, because they only slow down the script and a pop-up window appears with the Too many faulty attempts to internet connection notification

Below is the attachment.
7
PVD Python Scripts / Re: New IMDb Movie v4 Script Discussion
« Last post by Ivek23 on April 08, 2025, 06:43:07 pm »
Also, new search window introduced, with different types of search and countdown of 10 seconds defaulted to "general" search.

I suggest a fix in the Selenium_Chrome_Search-v4.py script for the search window, namely that the window is open for 15 to 20 seconds when a "general" search is started.

New suggestion for how to make the search options visible.
Quote
    # Add all the new options to the pop-up
    tk.Radiobutton(dialog, text="General", variable=search_type_var, value="General").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="Movie, TV Movie, Video", variable=search_type_var, value="Movie, TV Movie, Video").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="TV Series, TV Mini Series", variable=search_type_var, value="TV Series, TV Mini Series").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="TV Episode", variable=search_type_var, value="TV Episode").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="TV Special, TV Short", variable=search_type_var, value="TV Special, TV Short").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="Music Video", variable=search_type_var, value="Music Video").pack(anchor=tk.W)
    tk.Radiobutton(dialog, text="Misc", variable=search_type_var, value="Misc").pack(anchor=tk.W)

The search options Movie, TV Movie, Video should be together, because some movies also have a Video tag, such as 18-Year-Old Virgin movie.
8
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Ivek23 on March 31, 2025, 11:35:38 am »

Function ParsePage(HTML: String;URL:AnsiString):Cardinal;   //BlockOpen

Minor code correction.

Quote
   
       //Get ~url~
        if (0=Pos(BASE_URL_PRE, StoredURL)) then begin   //Write the url if doesn't exist
            AddFieldValueXML('url', StringReplace(DownloadURL, BASE_URL_PRE_TRUE, BASE_URL_PRE, True, False, False));
            LogMessage('Function ParsePage -      Get result ~url~: ' + StringReplace(DownloadURL, BASE_URL_PRE_TRUE, BASE_URL_PRE, True, False, False) + ' | |');
        end;
      
        //Get ~IMDb Movie Url~ (CF~IMDb.com~) and (CF~WaybackArchive IMDb URLs~)
        Movie_URL := StringReplace(DownloadURL, BASE_URL_PRE_TRUE, BASE_URL_PRE, True, False, False);
      LogMessage('Function ParsePage -      Get result Movie_url: ' + Movie_URL + ' | |');
      
      AddCustomFieldValueByName('IMDb.com', '<link url="' + Movie_URL + '">IMDb.com</link>');
      
      AddCustomFieldValueByName('WaybackArchive IMDb URLs', '<link url="https://web.archive.org/web/*/' + Movie_URL + '*">*IMDb.com*</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'business">Busines</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'combined">Combined</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'fullcredits">Full Cast&Crew</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'awards">Awards</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'releaseinfo">ReleaseDates</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'technical">TechSpecs</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'parentalguide">ParentsGuide</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'keywords">PlotKeywords</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'plotsummary">PlotSummary</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'taglines">Taglines</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'movieconnections">Connections</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'soundtrack">Soundtracks</link>  <link url="https://web.archive.org/web/*/' + Movie_URL + 'externalsites">MiscSites</link>');
            
      Fullinfo1 := '';
      Fullinfo1 := Fullinfo1 + '<link url="http://www.boxofficemojo.com/title/' + MovieID + '">BoxOfficeMojo</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="http://en.wikipedia.org/w/index.php?search=' + GetFieldValue(2) + '">Wikipedia</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dmovies-tv&field-keywords=' + GetFieldValue(2) + '">AmazonSearch</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dmovies-tv&field-keywords=' + GetFieldValue(2) + '%20' + GetFieldValue(5) + '">AmazonSearch1</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.allmovie.com/search/movies/' + GetFieldValue(2) + '">AllMovieSearch</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.themoviedb.org/search?query=' + GetFieldValue(2) + '">TMDBSearch</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.rottentomatoes.com/search/?search=' + GetFieldValue(2) + '">RottenTomatoesSearch</link>  ';
      Fullinfo1 := Fullinfo1 + '<link url="https://www.thetvdb.com/search?query=' + GetFieldValue(2) + '">TVDB Search</link>  ';
      If Fullinfo1 <> '' then Fullinfo1 := Fullinfo1;
      If Fullinfo1 <> '' then AddCustomFieldValueByName('IMDbMovieLinksInfo', Fullinfo1);
            
      AddCustomFieldValueByName('IMDbSearchUrl', '<link url="http://www.imdb.com/find/?s=tt&q=' + StringReplace(GetFieldValueXML('title'), ' ', ' + ', True, True, False) + '">**Search IMDb**</link>  <link url="https://www.imdb.com/search/title?title=' + StringReplace(GetFieldValueXML('title'), ' ', ' + ', True, True, False) + '">Search IMDb</link>  ');
      
      AddCustomFieldValueByName('IMDbMoviesUrl', '<link url="' + Movie_URL + '">IMDb MovieUrl</link>  <link url="https://www.boxofficemojo.com/title/' + MovieID + '/">Box Office Mojo</link>  <link url="http://www.omdbapi.com/">OMDb API info</link>  <link url="http://www.omdbapi.com/apikey.aspx">OMDb API Key</link>');
      
      //AddCustomFieldValueByName('OMDbAPIUrl', '<link url="' + Movie_URL + '">IMDb MovieUrl</link>  <link url="http://www.omdbapi.com/?i=' + MovieID + '&apikey=[yourkey]&plot=short&tomatoes=true">OMDb API info for IMDb</link>  <link url="http://www.omdbapi.com/?i=' + MovieID + '&apikey=[yourkey]&plot=full&tomatoes=true">OMDb API full info for IMDb</link>  <link url="http://www.omdbapi.com/?i=' + MovieID + '&apikey=[yourkey]&plot=full&r=xml&tomatoes=true">OMDb API full xml info for IMDb</link>  <link url="http://www.omdbapi.com/?s=' + GetFieldValueXML('title') + '&apikey=[yourkey]&plot=short&tomatoes=true">OMDb API Search for IMDb</link>');
      //LogMessage('Function ParsePage -      Get result OMDb API info_URL: ' + #13 + '<link url="http://www.omdbapi.com/">OMDb API info</link>  <link url="http://www.omdbapi.com/apikey.aspx">OMDb API Key</link>' + ' | |');
            
      //(*
        Fullinfo := '';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + '">MainPage</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'reference">Reference</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'fullcredits">Full Cast&Crew</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'awards">Awards</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'releaseinfo">ReleaseDates</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'technical">TechSpecs</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'parentalguide">ParentsGuide</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'keywords">PlotKeywords</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'plotsummary">PlotSummary</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'locations">FilmLocations</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'taglines">Taglines</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'companycredits">CompanyCredits</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'movieconnections">Connections</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'soundtrack">Soundtracks</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'externalsites">MiscSites</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'externalsites#photos">MiscPhoto</link>  ';
        Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'mediaindex">PhotoGallery</link>  ';
      Fullinfo := Fullinfo + '<link url="http://www.imdb.com/chart/top">IMDb Top 250</link>  ';
      Fullinfo := Fullinfo + '<link url="http://www.imdb.com/chart/bottom">Lowest Rated</link>  ';
      Fullinfo := Fullinfo + '<link url="http://www.imdb.com/chart/toptv">Top 250 TV</link>  ';
      Fullinfo := Fullinfo + '<link url="https://www.imdb.com/search/title?title=' + StringReplace(GetFieldValueXML('title') + '&title_type=feature&view=simple&count=250', ' ', ' + ', True, True, False) + '">Search IMDb</link>  ';
      Fullinfo := Fullinfo + '<link url="http://www.imdb.com/find?s=tt&q=' + StringReplace(GetFieldValueXML('title'), ' ', ' + ', True, True, False) + '">**Search IMDb**</link>  ';
      If Fullinfo <> '' then IMDB_URL := Fullinfo;
      If IMDB_URL <> '' then AddCustomFieldValueByName('CompE', IMDB_URL);
        If IMDB_URL <> '' then AddCustomFieldValueByName('IMDb_Movies_ Urls', IMDB_URL);
        //LogMessage('Function ParsePage -      Get result Fullinfo-IMDB_URL (CF~CompE~ ): ' + #13 + IMDB_URL + ' | |')
      //*)
Quote
    //Date ~Updated~ (choose simple or verbose version)
        Date := DateToStr(CurrentDateTime);
        //AddFieldValueXML('viewdate', Date); //Only date, don't admit time-. Set Seen value at the same time.
        //AddFieldValueXML('moddate', Date + ' ' + TimeToStr(CurrentDateTime)); //Block the dB saving
        ExplodeString(Date, DateParts, '-');
        Date := DateParts[2] + '.' + DateParts[1] + '.' + DateParts[0];
        Date := CustomStringReplace(Date, ['01.', '02.', '03.', '04.', '05.', '06.', '07.', '08.', '09.'], ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.']);
        //AddCustomFieldValueByName('Updated', Date); // Simple
        //AddCustomFieldValueByName('Updated0', Date + ' at ' + TimeToStr(CurrentDateTime)); // Verbose
        AddCustomFieldValueByName('IUpdated', Date + ' at ' + TimeToStr(CurrentDateTime) + ' • ' + SCRIPT_FILE_NAME + ' ' + SCRIPT_VERSION);  // Annoying
        LogMessage('Function ParsePage -    Provider data info retreived Ok in ' + DateToStr(CurrentDateTime) + ' ' + TimeToStr(CurrentDateTime) + '| (~Updated~)');
        Mode := smFinished;
        LogMessage('Function ParsePage smNormal END====================== |');
        Exit;
    End;
9
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Ivek23 on March 31, 2025, 10:28:16 am »

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
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);


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;
10
PVD Python Scripts / Re: PVD Selenium MOD v4 IMDb Movie Script Confusion
« Last post by Ivek23 on March 31, 2025, 10:08:52 am »

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;
Pages: [1] 2 3 4 5 6 ... 10
anything