1
Talk / Re: Donations to Ivek
« on: December 13, 2025, 07:39:28 am »Belated, but my sincere condolences.
aimhere
Thanks.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Belated, but my sincere condolences.
aimhere
Hey, Ivek. Thanks. Can you please post examples or imdb links where those matters and my code doesn't work? I just can't grasp just by looking at the code. Thanks.
<link url="https://www.imdb.com/title/tt0147800/parentalguide/#contentRating">Content Ratings Summary: </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#contentRating">Content rating (5) • </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#nudity">Sex & Nudity (10) • </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#violence">Violence & Gore (7) • </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#profanity">Profanity (and after• </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#alcohol">Alcohol, Drugs & Smoking (5) • </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#frightening">Frightening & Intense Scenes (1) • </link><link url="https://www.imdb.com/title/tt0147800/parentalguide/#certificates">Certifications (49)</link>
<link url="https://www.imdb.com/title/tt0147800/movieconnections/">Connections:</link> • <link url="https://www.imdb.com/title/tt0147800/movieconnections/#featured_in">Featured in (134)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#features">Features (1)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#followed_by">Followed by (2)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#referenced_in">Referenced in (59)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#references">References (</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#spin_off">Spin-off (1)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#spoofed_in">Spoofed in (2)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#spoofs">Spoofs (1)</link> <link url="https://www.imdb.com/title/tt0147800/movieconnections/#version_of">Version of (58)</link>
<link url="https://www.imdb.com/title/tt0147800/movieconnections/">Connections: </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#featured_in">Featured in (134) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#features">Features (1) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#followed_by">Followed by (2) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#referenced_in">Referenced in (59) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#references">References (and after• </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#spin_off">Spin-off (1) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#spoofed_in">Spoofed in (2) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#spoofs">Spoofs (1) • </link><link url="https://www.imdb.com/title/tt0147800/movieconnections/#version_of">Version of (58)</link>
<link url="https://www.imdb.com/title/tt0147800/parentalguide/#contentRating">Content Ratings Summary:</link> <link url="https://www.imdb.com/title/tt0147800/parentalguide/#contentRating">Content rating (5)</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#nudity">Sex & Nudity (10)</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#violence">Violence & Gore (7)</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#profanity">Profanity (</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#alcohol">Alcohol, Drugs & Smoking (5)</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#frightening">Frightening & Intense Scenes (1)</link> • <link url="https://www.imdb.com/title/tt0147800/parentalguide/#certificates">Certifications (49)</link> •
AddCustomFieldValueByName('LDDbSearch', '<link url="https://www.lddb.com/search/IMDb/' + MovieID1 + '">LaserDiscDbSearch</link> ' + '<link url="http://www.soundtrack.net/search/?q=' + GetFieldValue(2) + '">Soundtrack.NetSearch</link> ' + '<link url="https://store.intrada.com/s.nl?sc=16&category=&search=' + GetFieldValue(2) + '">Intrada</link> ' + '<link url="https://www.aveleyman.com/?Film.aspx/' + GetFieldValue(2) + '">Aveleyman</link> ' + '<link url="https://www.bing.com/Search?q=' + GetFieldValue(2) + '%20site%3Awww.aveleyman.com/">BingAvSearch</link> ' + '<link url="https://www.google.com/search?q=' + GetFieldValue(2) + '%20site%3Awww.aveleyman.com/">GoogleAvSearch</link> ' + '<link url="https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dmovies-tv&field-keywords=' + GetFieldValue(2) + '">AmazonSearch</link> ' + '<link url="http://www.impawards.com/cgi-bin/htsearch?method=or&words=' + GetFieldValue(2) + '">IMPawards/cgi-bin</link> ' + '<link url="http://www.impawards.com/search.php/' + GetFieldValue(2) + '">impawards.com</link>'); //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);
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>');
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 + 'technical">TechSpecs</link> <link url="https://web.archive.org/web/*/' + Movie_URL + 'dvd">DVD</link> <link url="https://web.archive.org/web/*/' + Movie_URL + 'laserdisc">Laserdisc</link>'); //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);
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>'); 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+'externalsites/#misc">MiscSites</link> ';
Fullinfo := Fullinfo + '<link url="' + Movie_URL + 'externalsites#photo">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>';
If Fullinfo <> '' then IMDB_URL := Fullinfo;
If IMDB_URL <> '' then AddCustomFieldValueByName('IMDb Url', IMDB_URL);
If IMDB_URL <> '' then AddCustomFieldValueByName('IMDb Movie Url', IMDB_URL);
LogMessage('Function ParsePage - Get result Fullinfo-IMDB_URL (CF~IMDb Movie Url~ ): ' + #13 + IMDB_URL + '| |'); AddCustomFieldValueByName('IMDbExternalSitesUrl', '<link url="' + Movie_URL + 'releaseinfo">ReleaseDates</link> <link url="' + Movie_URL + 'plotsummary">PlotSummary</link> <link url="' + Movie_URL + 'companycredits">CompanyCredits</link> <link url="' + Movie_URL + 'movieconnections">Connections</link> <link url="' + Movie_URL + 'externalsites/#misc">MiscSites</link> <link url="' + Movie_URL + 'externalsites#photos">MiscPhoto</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.movieposterdb.com/search?category=title&q='+MovieID+'">MoviePosterDB Info</link> ';
Fullinfo1:=Fullinfo1+'<link url="https://www.dvdsreleasedates.com/search/?searchStr='+GetFieldValue(2)+'">DVDs ReleaseDates</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> ';
Fullinfo1:=Fullinfo1+'<link url="https://www.soundtrackcollector.com/catalog/search.php?searchon=all&searchtext='+GetFieldValue(2)+'">SoundCollSearch</link> ';
Fullinfo1:=Fullinfo1+'<link url="https://www.blu-ray.com/search/?quicksearch=1&quicksearch_country=all&quicksearch_keyword='+MovieID+'§ion=theatrical">BR.comSearch</link> ';
Fullinfo1:=Fullinfo1+'<link url="https://www.lddb.com/search/IMDb/'+MovieID1+'">LaserDiscDb Search</link> ';
Fullinfo1:=Fullinfo1+'<link url="http://cse.google.com/cse?cx=004917987473580823572:eonwdtnjfi8&cof=forid%3a9&q='+GetFieldValue(2)+'">IMPawards-cse</link> ';
Fullinfo1:=Fullinfo1+'<link url="http:///www.impawards.com/cgi-bin/htsearch?method=or&words='+GetFieldValue(2)+'">impawards.com/cgi-bin</link> ';
If Fullinfo1 <> '' then Fullinfo1 := Fullinfo1;
If Fullinfo1 <> '' then AddCustomFieldValueByName('IMDbMovieLinksInfo', Fullinfo1);
// Get (CF~Connections~) info
If Pos('>Connections<', HTML) > 0 Then
Begin
LogMessage('===Function ParsePage_IMDBMovieCONNECTIONS - Starting Connections Parsing ===');
curPos := Pos('>Connections<', HTML);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - curPos for "Connections" section found at: ' + IntToStr(curPos));
If Pos('It looks like we don'+Chr(39)+'t have any Connections for this title yet.', HTML) > 0 Then
Begin
Category1 := 'No Connections';
Category3 := '';
AddCustomFieldValueByName('Connections', Category1);
AddCustomFieldValueByName('Connect', Category3);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - No Connections found for this title');
End Else Begin
// Extract the relevant section for categories
If PosFrom('<span class="ipc-simple-select__container" data-testid="jumpTo">', HTML, curPos) > 0 Then Begin
curPos := PosFrom('<span class="ipc-simple-select__container" data-testid="jumpTo">', HTML, curPos);
endPos := PosFrom('</select></span></span>', HTML, curPos);
Category2 := Copy(HTML, curPos, endPos - curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted Category2 section: ' + Category2);
// Parse the options and category names
curPos := 1;
Category1 := '';
While PosFrom('<option', Category2, curPos) > 0 Do
Begin
curPos := PosFrom('<option', Category2, curPos) + Length('<option');
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - curPos at option tag: ' + IntToStr(curPos));
optionValue := TextBetween(Category2, 'value="', '">', False, curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted optionValue: ' + optionValue);
categoryName := TextBetween(Category2, '">', '</option>', False, curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted categoryName: ' + categoryName);
// 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
AddCustomFieldValueByName('Connections', Category1);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Stored result in (CF~Connections~)');
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Final Category1 stored: ' + Category1);
LogMessage('===Function ParsePage_IMDBMovieCONNECTIONS - Finished (CF~Connections~) Parsing ===');
End; // Get (CF~Connections~) info
If Pos('>Connections<', HTML) > 0 Then
Begin
LogMessage('===Function ParsePage_IMDBMovieCONNECTIONS - Starting Connections Parsing ===');
curPos := Pos('>Connections<', HTML);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - curPos for "Connections" section found at: ' + IntToStr(curPos));
If Pos('It looks like we don'+Chr(39)+'t have any Connections for this title yet.', HTML) > 0 Then
Begin
Category1 := 'No Connections';
Category3 := '';
AddCustomFieldValueByName('Connections', Category1);
AddCustomFieldValueByName('Connect', Category3);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - No Connections found for this title');
End Else Begin
// Extract the relevant section for categories
If PosFrom('<span class="ipc-simple-select__container" data-testid="jumpTo">', HTML, curPos) > 0 Then Begin
curPos := PosFrom('<span class="ipc-simple-select__container" data-testid="jumpTo">', HTML, curPos);
endPos := PosFrom('</select></span></span>', HTML, curPos);
Category2 := Copy(HTML, curPos, endPos - curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted Category2 section: ' + Category2);
// Parse the options and category names
curPos := 1;
Category1 := '';
While PosFrom('<option', Category2, curPos) > 0 Do
Begin
curPos := PosFrom('<option', Category2, curPos) + Length('<option');
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - curPos at option tag: ' + IntToStr(curPos));
optionValue := TextBetween(Category2, 'value="', '">', False, curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted optionValue: ' + optionValue);
categoryName := TextBetween(Category2, '">', '</option>', False, curPos);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Extracted categoryName: ' + categoryName);
// Format the category link
//Category1 := Category1 + '<link url="' + MovieURL + optionValue + '">' + categoryName + ' • </link>';
// Category1 := Category1 + '<link url="' + MovieURL + optionValue + '">' + categoryName + '</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;
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);
// Store the result in the custom field
AddCustomFieldValueByName('Connections', Category1);
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Stored result in (CF~Connections~)');
LogMessage('Function ParsePage_IMDBMovieCONNECTIONS - Final Category1 stored: ' + Category1);
LogMessage('===Function ParsePage_IMDBMovieCONNECTIONS - Finished (CF~Connections~) Parsing ===');
End; // Get (CF~IMDbmpaaSummary~)
curPos := Pos('<select id="jump-to"', HTML);
If curPos > 0 Then
Begin
// Extract the relevant section for categories
curPos := PosFrom('<option', HTML, curPos);
endPos := PosFrom('</select>', HTML, curPos);
mpaaSection := Copy(HTML, curPos, endPos - curPos);
LogMessage('Function ParsePage_IMDBMovieMPAA - Extracted Category section for (CF~IMDbmpaaSummary~): ' + mpaaSection);
// Parse the options and category names
curPos := 1;
mpaaContent := '';
While PosFrom('<option', mpaaSection, curPos) > 0 Do
Begin
curPos := PosFrom('<option', mpaaSection, curPos) + Length('<option');
optionValue := TextBetween(mpaaSection, 'value="', '">', False, curPos);
categoryName := TextBetween(mpaaSection, '">', '</option>', False, curPos);
// Format the category link
mpaaContent := mpaaContent + '<link url="' + MovieURL + optionValue + '">' + categoryName + ' • </link>';
// Move to the next position
curPos := PosFrom('</option>', mpaaSection, curPos) + Length('</option>');
End;
// Remove the trailing " • " if it exists and keep the last </link> intact
If Copy(mpaaContent, Length(mpaaContent) - 13, 7) = ' • ' Then
Begin
mpaaContent := Copy(mpaaContent, 1, Length(mpaaContent) - 14) + '</link>';
End;
// Combine and format the final result
mpaaContent := '<link url="' + MovieURL + '#contentRating' + '">Content Ratings Summary: </link>' + mpaaContent;
// Store the result in the custom field
AddCustomFieldValueByName('IMDbmpaaSummary', mpaaContent);
LogMessage('Function ParsePage_IMDBMovieMPAA - Stored result for (CF~IMDbmpaaSummary~)');
End
Else
Begin
LogMessage('Function ParsePage_IMDBMovieMPAA - Content Rating section for (CF~IMDbmpaaSummary~) not found');
//Result := prError; // Set to error if content rating section is not found
End; // Get (CF~IMDbmpaaSummary~)
curPos := Pos('<select id="jump-to"', HTML);
If curPos > 0 Then
Begin
// Extract the relevant section for categories
curPos := PosFrom('<option', HTML, curPos);
endPos := PosFrom('</select>', HTML, curPos);
mpaaSection := Copy(HTML, curPos, endPos - curPos);
LogMessage('Function ParsePage_IMDBMovieMPAA - Extracted Category section for (CF~IMDbmpaaSummary~): ' + mpaaSection);
// Parse the options and category names
curPos := 1;
mpaaContent := '';
While PosFrom('<option', mpaaSection, curPos) > 0 Do
Begin
curPos := PosFrom('<option', mpaaSection, curPos) + Length('<option');
optionValue := TextBetween(mpaaSection, 'value="', '">', False, curPos);
categoryName := TextBetween(mpaaSection, '">', '</option>', False, curPos);
// Format the category link
// mpaaContent := mpaaContent + '<link url="' + MovieURL + optionValue + '">' + categoryName + ' • </link>';
mpaaContent := mpaaContent + '<link url="' + MovieURL + optionValue + '">' + categoryName + '</link> • ';
// Move to the next position
curPos := PosFrom('</option>', mpaaSection, curPos) + Length('</option>');
End;
// Remove the trailing " • " if it exists and keep the last </link> intact
If Copy(mpaaContent, Length(mpaaContent) - 13, 7) = ' • ' Then
Begin
mpaaContent := Copy(mpaaContent, 1, Length(mpaaContent) - 14) + '</link>';
End;
// Combine and format the final result
//mpaaContent := '<link url="' + MovieURL + '#contentRating' + '">Content Ratings Summary: </link>' + mpaaContent;
mpaaContent := '<link url="' + MovieURL + '#contentRating' + '">Content Ratings Summary:</link> ' + mpaaContent;
// Store the result in the custom field
AddCustomFieldValueByName('IMDbmpaaSummary', mpaaContent);
LogMessage('Function ParsePage_IMDBMovieMPAA - Stored result for (CF~IMDbmpaaSummary~)');
End
Else
Begin
LogMessage('Function ParsePage_IMDBMovieMPAA - Content Rating section for (CF~IMDbmpaaSummary~) not found');
//Result := prError; // Set to error if content rating section is not found
End;Oh, and please remind me to upload purge_tmp_files.vbs if I forget, because I changed it by adding to delete fake UserData folders now too
I have completed FullCredits function, so now all the data can be imported again to PVD. Before I publish it I want to check 2 things:
1. What to do with Reference page code, and should I exclude its options from Script Configurator, since now it is completely not needed.
2. To check People script and if I can fix it quickly, then I will publish all the scripts and files again in one, final package for this IMDb html layout change.
After that please check the scripts and let me know what doesn't work
I have optimized Selenium_Chrome_Base_page_v4.py script so now downloading of the IMDb main page should be dramatically faster - around 18 seconds on my computer.
The Selenium_Chrome_Base_page_v4.py script works fine. However, it doesn't work at all with Firefox and Geckodriver options.
Oh, sorry to hear. I even didn't know it worked earlier and how it could work since I never published geckodriver version??? Probably I don't understand the context of your message.
I have optimized Selenium_Chrome_Base_page_v4.py script so now downloading of the IMDb main page should be dramatically faster - around 18 seconds on my computer.
The Selenium_Chrome_Base_page_v4.py script works fine. However, it doesn't work at all with Firefox and Geckodriver options.
I have optimized Selenium_Chrome_Base_page_v4.py script so now downloading of the IMDb main page should be dramatically faster - around 18 seconds on my computer.
For the Episode List page, it would be necessary and even better if a script was made specifically for it.
Episode list works totally fine for me, even now. It would be probably impossible for me to create new script. We can look at it like this: Episode list has it's own script: it's Selenium script "Selenium_Chrome_IMDB_Episode_List_page_v4.py" which produces txt file with all episodes, and .psf script just scrapes that txt file, so I am not sure what we could achieve with additional psf script whose purpose would be only to scrape txt file.
GET_FULL_CONNECTIONS = False ; //To call Function ParsePage_IMDBMovieCONNECTIONS. Not used for parsing, since it is enough to choose both SIMPLE and COMPLEX connections. --> to "True". If GET_FULL_CONNECTIONS Then
Begin GET_FULL_CONNECTIONS = False ; //To call Function ParsePage_IMDBMovieCONNECTIONS. Not used for parsing, since it is enough to choose both SIMPLE and COMPLEX connections. --> to "True".[code] If GET_FULL_CONNECTIONS Then
Begin[/code] If GET_FULL_CONNECTIONS = False ;//(*
function CustomStringReplace(const Source: string; const OldPattern: array of string; const NewPattern: array of string): string;
var
i: Integer;
ResultString: string;
begin
ResultString := Source;
for i := Low(OldPattern) to High(OldPattern) do
begin
ResultString := StringReplace(ResultString, OldPattern[i], NewPattern[i], True, False, True);
end;
Result := ResultString;
end;
//*) ItemValue := CustomStringReplace(ItemValue, ['0</', '1</', '2</', '3</', '4</', '5</', '6</', '7</', '8</', '9</'], [',0', ',1', ',2', ',3', ',4', ',5', ',6', ',7', ',8', ',9']);
//ItemValue := StringReplace(ItemValue, '0</', '.0', True, False, True);
//ItemValue := StringReplace(ItemValue, '1</', '.1', True, False, True);
//ItemValue := StringReplace(ItemValue, '2</', '.2', True, False, True);
//ItemValue := StringReplace(ItemValue, '3</', '.3', True, False, True);
//ItemValue := StringReplace(ItemValue, '4</', '.4', True, False, True);
//ItemValue := StringReplace(ItemValue, '5</', '.5', True, False, True);
//ItemValue := StringReplace(ItemValue, '6</', '.6', True, False, True);
//ItemValue := StringReplace(ItemValue, '7</', '.7', True, False, True);
//ItemValue := StringReplace(ItemValue, '8</', '.8', True, False, True);
//ItemValue := StringReplace(ItemValue, '9</', '.9', True, False, True); //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.']);
// 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); // (Left for FA Script)
//AddCustomFieldValueByName('Updated0', Date + ' at ' + TimeToStr(CurrentDateTime)); // Saved for RottenTomatoes
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;
Python (+Selenium) scripts and PVD Selenium MOD IMDb Movie, People and FilmAffinity Scripts.
PVD Selenium MOD IMDb Movie, People and FilmAffinity Scripts only when or if an Afrocuban user comes back and updates them and they can be used again.
The Afrocuban user will probably not return. A few days ago I sent an email to his email address, which is listed in his profile, but so far I have not received any response that the message was received at his email. We will see what happens.
Python (+Selenium) scripts and PVD Selenium MOD IMDb Movie, People and FilmAffinity Scripts.
PVD Selenium MOD IMDb Movie, People and FilmAffinity Scripts only when or if an Afrocuban user comes back and updates them and they can be used again.
Yikes, that's terrible news. What would you recommend as the next best option for getting cast and other information?
I don't know what the next best option would be for getting the cast and other information.
Hmm, okay, how about just other options in general?
Yikes, that's terrible news. What would you recommend as the next best option for getting cast and other information?
Is there a newer version of the IMDB script than IMDB_[EN][HTTPS]_TEST_2c.psf? For the past few months this one hasn't been pulling much information at all for me.