I'm having a problem with the IMDB script (version: 3.37)
It seems that the "User rating" field is no longer imported/found since recently.
I checked AMC, the Rating field is still set to modifiable so that's not it.
When I check the "Shows results window" and run the script, it properly retreives values for all fields I asked, except for the Rating.
Is anyone else experiecing this problem?
Here's the IMDB script (v3.37) that I'm using.
Code: Select all
program IMDB;
uses
StringUtils1;
// ***** Manually set UserCountry to your required Classification Country below *****
const
//UserCountry = '';
{ Delete the line above and remove the "//" in front of one the
following lines, or add your country if it is not listed }
UserCountry = 'USA';
//UserCountry = 'Canada';
//UserCountry = 'Mexico';
//UserCountry = 'Brazil';
//UserCountry = 'Argentina';
//UserCountry = 'Australia';
//UserCountry = 'India';
//UserCountry = 'Italy';
//UserCountry = 'Spain';
//UserCountry = 'Portugal';
//UserCountry = 'France';
//UserCountry = 'Germany';
//UserCountry = 'Netherlands';
//UserCountry = 'UK';
//UserCountry = 'Ireland';
//UserCountry = 'Finland';
//UserCountry = 'Norway';
//UserCountry = 'Sweden';
//UserCountry = 'Switzerland';
var
MovieName: string;
MovieURL: string;
MovieNumber: string;
// ***** analyzes IMDB's results page that asks to select a movie from a list *****
procedure AnalyzeResultsPage(Address: string);
var
PageText: string;
Value: string;
begin
PageText := GetPage(Address);
if pos('<title>IMDb', PageText) = 0 then
begin
AnalyzeMoviePage(PageText)
end else
begin
if Pos('<b>No Matches.</b>', PageText) > 0 then
begin
if GetOption('BatchMode') = 0 then
ShowMessage('No movie found for this search.');
Exit;
end;
if GetOption('BatchMode') = 0 then
begin
PickTreeClear;
repeat
Value := TextBefore(PageText, '</b> (Displaying', '<p><b>');
if Value <> '' then
begin
HTMLRemoveTags(Value);
HTMLDecode(Value);
PickTreeAdd(Value, '');
end;
Value := TextBetween(PageText, '<table><tr>', '</table>');
PageText := RemainingText;
until not AddMovieTitles(Value);
Value := TextBefore(PageText, '"><b>more titles</b></a>', '<a href="');
if Value <> '' then
PickTreeMoreLink('http://us.imdb.com' + Value);
if PickTreeExec(Address) then
AnalyzeResultsPage(Address);
end
else
begin
Value := TextBetween(PageText, '.</td><td valign="top">', '</a>');
if Value <> '' then
AnalyzeResultsPage(TextBetween(Value, '<a href="', '">'));
end;
end;
end;
// ***** analyzes Google's results page that asks to select a movie from a list *****
procedure AnalyzeGooglesResultsPage(GoogleAddress: string);
var
PageText: string;
Value: string;
Address: string;
begin
PageText := GetPage(GoogleAddress);
Address := '';
if Pos('did not match any documents', PageText) > 0 then
begin
if GetOption('BatchMode') = 0 then
ShowMessage('No movie found for this search');
Exit;
end;
if GetOption('BatchMode') = 0 then
begin
PickTreeClear;
PickTreeAdd('Google`s search results for "' + MovieName + '" on IMDB', '');
repeat
Value := TextBetween(PageText, '<h2 class=r>', '</a>');
PageText := RemainingText;
Address := TextBetween(Value, '<a href="', 'maindetails"');
if (GetOption('AllActors') = 1) or (GetOption('Producer') = 1) then
Address := Address + 'combined';
HTMLRemoveTags(Value);
HTMLDecode(Value);
if (Pos(') - ', Value) = 0) and (Value <> '') then
PickTreeAdd(Value, Address);
until Value = '';
if PickTreeExec(GoogleAddress) then
AnalyzeResultsPage(GoogleAddress);
end
else
begin
Value := TextBetween(PageText, '<h2 class=r>', '</a>');
if Value <> '' then
AnalyzeResultsPage(TextBetween(Value, '<a href="', 'maindetails"'));
end;
end;
// ***** adds the movie titles found on IMDB's results page *****
function AddMovieTitles(List: string): Boolean;
var
Value: string;
Address: string;
begin
Result := False;
if GetOption('HideAkaTitles') = 1 then
Value := TextBetween(List, '.</td><td valign="top">', ')<')
else
begin
Value := TextBetween(List, '.</td><td valign="top">', '</td>');
Value := StringReplace(Value, 'aka', ' | aka');
end;
List := RemainingText;
while Value <> '' do
begin
Address := TextBetween(Value, '<a href="/title/tt', '/');
if (GetOption('AllActors') = 1) or (GetOption('Producer') = 1) then
Address := Address + '/combined'
else
Address := Address + '/';
HTMLRemoveTags(Value);
HTMLDecode(Value);
if GetOption('HideAkaTitles') = 1 then
Value := Value + ')';
PickTreeAdd(Value, 'http://us.imdb.com/title/tt' + Address);
Result := True;
if GetOption('HideAkaTitles') = 1 then
Value := TextBetween(List, '.</td><td valign="top">', ')<')
else
begin
Value := TextBetween(List, '.</td><td valign="top">', '</td>');
Value := StringReplace(Value, 'aka', ' | aka');
end;
List := RemainingText;
end;
end;
// ***** analyzes the page containing movie information *****
procedure AnalyzeMoviePage(PageText: string);
var
Value, Value2, Value3, FullValue: string;
p, Count: Integer;
begin
MovieNumber := TextBetween(PageText, '<input type="hidden" name="auto" value="legacy/title/tt', '/"><input');
if MovieNumber = '' then
MovieNumber := TextBetween(PageText, '<input type="hidden" name="auto" value="legacy/title/tt', '/combined"><input');
if ((GetOption('AllActors') = 1) or (GetOption('Producer') = 1)) and (Pos('<div id="tn15" class="maindetails">', PageText) > 0) then
PageText := GetPage('http://us.imdb.com/title/tt' + MovieNumber + '/combined');
MovieURL := 'http://imdb.com/title/tt' + MovieNumber;
// URL
if CanSetField(fieldURL) then
SetField(fieldURL, MovieURL);
// OriginalTitle & Year
if CanSetField(fieldOriginalTitle) or CanSetField(fieldYear) then
begin
Value := TextBetween(PageText, '<title>', '</title>');
Value2 := TextBefore(Value, ' (', '');
Value := RemainingText;
HTMLDecode(Value2);
if CanSetField(fieldOriginalTitle) then
SetField(fieldOriginalTitle, Value2);
if Pos('/', Value) > 0 then
Value2 := TextBefore(Value, '/', '')
else
Value2 := TextBefore(Value, ')', '');
if CanSetField(fieldYear) then
SetField(fieldYear, Value2);
end;
// Rating
if CanSetField(fieldRating) then
begin
// (Remove the "//" of the next two lines beginning with "Value" and add "//"
// to the following two lines if you would like to import arithmetic ratings
// instead of IMDB's user ratings)
// Value := GetPage(MovieURL + '/ratings');
// Value := TextBetween(Value, 'Arithmetic mean = ', '. ');
Value := TextBetween(PageText, '<b>User Rating:</b>', '<br/>');
Value := TextBetween(Value, '<b>', '/');
if Value <> '' then
SetField(fieldRating, Value);
end;
// Picture
if CanSetPicture then
begin
case GetOption('ImageKind') of
4: if not ImportMerchandisingPicture then
if not ImportDvdDetailsPicture then
ImportSmallPicture(PageText);
5: if not ImportDvdDetailsPicture then
if not ImportMerchandisingPicture then
ImportSmallPicture(PageText);
else
ImportSmallPicture(PageText);
end;
end;
// Director
if CanSetField(fieldDirector) then
begin
Value := TextBetween(PageText, '<h5>Director', '</div>');
Value := StringReplace(TextBetween(Value, #13#10, #13#10), '<br/><a', ', <a');
HTMLRemoveTags(Value);
HTMLDecode(Value);
Value := StringReplace(Value, ', more', '');
Value := StringReplace(Value, ', (more)', '');
SetField(fieldDirector, Value);
end;
// Actors
if CanSetField(fieldActors) then
begin
Value := Trim(TextBetween(PageText, '<table class="cast">', '</table>'));
if Value <> '' then
begin
FullValue := '';
Count := 0;
case GetOption('ActorsLayout') of
0, 1:
while Pos('<tr', Value) > 0 do
begin
Value2 := TextBetween(Value, '<tr', '</tr>');
Value := RemainingText;
if Pos('rest of cast', Value2) > 0 then
Continue;
if FullValue <> '' then
FullValue := FullValue + #13#10;
TextBefore(Value2, '</td>', '');
Value2 := Trim(TextBetween(RemainingText, '/">', '</a>'));
if Value2 <> '' then
begin
FullValue := FullValue + Value2;
Count := Count + 1;
end;
if (Count = 10) and (GetOption('AllActors') = 2) then
Break;
end;
2, 3:
while Pos('<tr', Value) > 0 do
begin
Value2 := TextBetween(Value, '<tr', '</tr>');
Value := RemainingText;
if Pos('rest of cast', Value2) > 0 then
Continue;
if FullValue <> '' then
FullValue := FullValue + #13#10;
TextBefore(Value2, '</td>', '');
Value2 := Trim(TextBetween(RemainingText, '/">', '</a>'));
if Value2 <> '' then
begin
FullValue := FullValue + Value2;
Value2 := Trim(TextBetween(RemainingText, '"char">', '</td>'));
if Value2 <> '' then
FullValue := FullValue + ' (as ' + Value2 + ')';
Count := Count + 1;
if (Count = 10) and (GetOption('AllActors') = 2) then
Break;
end;
end;
4:
begin
FullValue := Value;
FullValue := StringReplace(FullValue, ' <tr><td align="center" colspan="4"><small>rest of cast listed alphabetically:</small></td></tr>', '');
FullValue := StringReplace(FullValue, '</tr>', #13#10);
end;
end;
HTMLRemoveTags(FullValue);
HTMLDecode(FullValue);
case GetOption('ActorsLayout') of
0, 2:
FullValue := StringReplace(FullValue, #13#10, ', ');
end;
SetField(fieldActors, FullValue);
end;
end;
//Country
if CanSetField(fieldCountry) then
begin
SetField(fieldCountry, ImportList(PageText, GetOption('MultipleValuesCountry'), '/Countries/'));
end;
//Category
if CanSetField(fieldCategory) then
begin
SetField(fieldCategory, ImportList(PageText, GetOption('MultipleValuesCategory'), '/Genres/'));
end;
// Language
if CanSetField(fieldLanguages) then
begin
SetField(fieldLanguages, ImportList(PageText, GetOption('MultipleValuesLanguages'), '/Languages/'));
end;
// Audio Format
if CanSetField(fieldAudioFormat) then
begin
SetField(fieldAudioFormat, ImportList(PageText, GetOption('MultipleValuesAudioFormat'), '/List?sound-mix'));
end;
// Aspect Ratio
begin
Value := '';
Value := TextBetween(PageText, '<h5>Aspect Ratio:</h5>', '</div>');
Value := StringReplace(TextBetween(Value, #13#10, #13#10), '<br/><a', ', <a');
HTMLRemoveTags(Value);
HTMLDecode(Value);
Value := StringReplace(Value, ', more', '');
Value := StringReplace(Value, ', (more)', '');
Value := StringReplace(Value, ' more', '');
if (CanSetField(fieldVideoFormat)) and (GetOption('AspectRatio') = 1) then
SetField(fieldVideoFormat, Value);
if (CanSetField(fieldResolution)) and (GetOption('AspectRatio') = 2) then
SetField(fieldResolution, Value);
end;
// Description
if CanSetField(fieldDescription) then
begin
Value := TextBetween(PageText, '<h5>Plot:</h5>', '</div>');
if Value = '' then
Value := TextBetween(PageText, '<h5>Plot Summary:</h5>', '</div>');
Value := StringReplace(Value, Textbetween(Value, '<a class="tn15more inline" href="synopsis">', '</a>'), '');
Value := StringReplace(Value, '<a class="tn15more inline" href="synopsis"></a>', '');
if Value = #13#10 + #13#10 then
Value := '';
if (GetOption('DescriptionSelection') = 0) and (Pos('<a class="tn15more inline"', Value) > 0) then
Value := TextBetween(PageText, '<h5>Plot:</h5>', '<a class="tn15more inline"');
Value := TextAfter(Value, #13#10);
if Value <> '' then
SetField(fieldDescription, ImportSummary(Value));
end;
// Length
if CanSetField(fieldLength) then
begin
Value := TextBetween(PageText, '<h5>Runtime:</h5>' + #13#10, ' ');
if Value <> '' then
begin
if Pos(':', Value) > 0 then
SetField(fieldLength, TextAfter(Value, ':'))
else
SetField(fieldLength, Value);
end;
end;
// Writer (Producer Field)
if CanSetField(fieldProducer) then
begin
if GetOption('Producer') = 1 then
begin
Value := TextBetween(PageText, 'Produced by</a></h5>', '</table>');
FullValue := '';
Value2 := TextBetween(Value, '<a href="/name/', '</a>');
while Value2 <> '' do
begin
Value := RemainingText;
Value2 := TextAfter(Value2, '">');
if FullValue <> '' then
FullValue := FullValue + ', ';
FullValue := FullValue + Value2;
Value2 := TextBetween(Value, '<a href="/name/', '</a>');
end;
HTMLDecode(FullValue);
SetField(fieldProducer, FullValue);
end
else
begin
Value := TextBetween(PageText, '<h5>Writer', '</div>');
Value := StringReplace(TextBetween(Value, #13#10, #13#10), '<br/>', ', ');
HTMLRemoveTags(Value);
HTMLDecode(Value);
if Value <> '' then
begin
Value := StringReplace(Value, '..., more', '');
Value := StringReplace(Value, ', more', '');
Value := Trim(StringReplace(Value, ' and, ', ', '));
while StrGet(Value, Length(Value)) = ',' do
begin
Delete(Value, Length(Value), 1);
Value := Trim(Value);
end;
SetField(fieldProducer, Value);
end;
end;
end;
// AKA Name
if CanSetField(fieldTranslatedTitle) then
begin
Value := TextBetween(PageText, '<h5>Also Known As:</h5>', #13);
if Value <> '' then
begin
Value := Trim(StringReplace(Value, ' <br>', ', '));
if StrGet(Value, Length(Value)) = ',' then
Delete(Value, Length(Value), 1);
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldTranslatedTitle, Value)
end;
end;
// Comments
if CanSetField(fieldComments) then
begin
if (GetOption('CommentType') = 1) then
begin
Value := TextAfter(PageText,'<a href="usercomments">');
if (Value <> '') or (Pos('a href="usercomments" class="link"', PageText) > 0) then
begin
Value2 := '';
FullValue := GetPage(MovieURL+'/usercomments');
FullValue := TextAfter(FullValue, 'comment useful :-</small><br>');
while FullValue <> '' do
begin
Value := TextBetween(FullValue, '<b>', '<div');
Value2 := Value2 + #13#10 + #13#10 + TextBefore(Value, '</b>', '');
Value := RemainingText;
Value2 := Value2 + #13#10 + 'Date: ' + TextBetween(Value, '<small>', '</small>');
Value := RemainingText;
Value := 'Author: ' + TextBetween(Value, 'comments">', '<br>');
HtmlRemoveTags(Value);
Value2 := Value2 + #13#10 + Value;
Value := RemainingText;
Value := TextBetween(Value, '<p>' + #13#10, #13#10 + '</p>');
Value := StringReplace(Value, #13#10, ' ');
Value := StringReplace(Value, '<br><br>', #13#10);
Value := StringReplace(Value, '<br>', #13#10);
HtmlDecode(Value);
Value2 := Value2 + #13#10 + #13#10 + Trim(Value);
FullValue := TextAfter(FullValue, 'comment useful :-</small><br>');
end;
HTMLRemoveTags(Value2);
HTMLDecode(Value2);
SetField(fieldComments, 'USER COMMENTS:' + Value2 + #13#10);
end;
end
else
if (GetOption('CommentType') = 0) then
begin
Value := TextAfter(PageText, '/comments">');
if Value <> '' then
begin
Value := TextBetween(Value, '<p>', '</p>');
Value := StringReplace(Value, #13#10, ' ');
Value := StringReplace(Value, '<br>', #13#10);
HTMLRemoveTags(Value);
HTMLDecode(Value);
Value := Trim(Value);
while Pos(' ', Value) > 0 do
Value := StringReplace(Value, ' ', ' ');
while Pos(#13#10, Value) = 1 do
Delete(Value, 1, 2);
SetField(fieldComments, Value + #13#10);
end;
end
else
if (GetOption('CommentType') = 2) then
SetField(fieldComments, '');
end;
// TagLine
if GetOption('GetTagline') > 0 then
begin
Value := TextBetween(PageText, '<h5>Tagline:</h5>' + #13#10, #13);
if Pos('<a', Value) > 0 then
Value := TextBefore(Value, '<a', '');
HTMLRemoveTags(Value);
HTMLDecode(Value);
Value := Trim(Value);
if Value <> '' then
begin
if StrGet(Value, 1) <> '"' then
Value := '"' + Value + '"';
case GetOption('GetTagline') of
1:
begin
if GetField(fieldDescription) <> '' then
Value := Value + #13#10 + #13#10 + GetField(fieldDescription);
SetField(fieldDescription, Value);
end;
2:
begin
if GetField(fieldComments) <> '' then
Value := Value + #13#10 + #13#10 + GetField(fieldComments);
SetField(fieldComments, Value);
end;
end;
end;
end;
// Trivia
if GetOption('Trivia') > 0 then
begin
sleep(50);
Value := MovieUrl;
FullValue := GetPage(Value+'/trivia');
Value := TextBetween(FullValue, '<ul class="trivia">', #13#10 + '</ul>' + #13#10);
if Value <> '' then
begin
Value := StringReplace(Value, #13#10, '');
while Pos(' ', Value) > 0 do
Value := StringReplace(Value, ' ', '');
while Pos('<li> ', Value) > 0 do
Value := StringReplace(Value, '<li> ', '<li>');
Value := StringReplace(Value, '<li>', #13#10 + '- ');
HTMLRemoveTags(Value);
HTMLDecode(Value);
case GetOption('Trivia') of
1:
begin
if GetField(fieldDescription) <> '' then
Value := GetField(fieldDescription) + #13#10 + #13#10 + 'IMDB TRIVIA: ' + Value
else
Value := 'IMDB TRIVIA: ' + Value;
SetField(fieldDescription, Value);
end;
2:
begin
if GetField(fieldComments) <> '' then
Value := GetField(fieldComments) + #13#10 + #13#10 + 'IMDB TRIVIA: ' + Value
else
Value := 'IMDB TRIVIA: ' + Value;
SetField(fieldComments, Value);
end;
end;
end;
end;
// Awards
if (GetOption('Awards') > 0) then
begin
ImportAwards();
end;
// Classification
if GetOption('Classification') > 0 then
begin
if UserCountry = '' then
ShowMessage('Country not set for classification selection - Click "Editor" tab in the scripting window, then select your country by modifying the required line as explained in the first lines of the code')
else
begin
Value := TextBetween(PageText, '<a href="/List?certificates=' + UserCountry + ':' , '&&heading=14');
if Value <> '' then
begin
if GetOption('Classification') = 1 then
SetField(fieldMediaType, Value)
else
SetField(fieldComments, GetField(fieldComments) + #13#10 + #13#10 + 'Classification: ' + Value);
end;
end;
end;
// MPAA rating
if (GetOption('MPAA') > 0) then
begin
Value := Trim(TextBetween(PageText, '<h5><a href="/mpaa">MPAA</a>:</h5> ' + #13#10 , #13));
if Value <> '' then
begin
if GetOption('MPAA') = 1 then
SetField(fieldMediaType, TextBetween(Value, 'Rated ', ' '))
else
SetField(fieldComments, GetField(fieldComments) + #13#10 + #13#10 + Value);
end;
end;
end;
// ***** Imports lists like Genre, Country, etc. depending of the selected option *****
function ImportList(PageText: string; MultipleValues: Integer; StartTag: string): string;
var
Value, Value2: string;
begin
if MultipleValues = 0 then
begin
Value := TextBetween(PageText, StartTag, '</a>');
Value2 := TextAfter(Value, '">');
end
else
begin
Value := TextBetween(PageText, StartTag, '</div>');
Value2 := TextBefore(Value, '<a class="tn15more inline"', '');
if Value2 = '' then
Value2 := Value;
Value2 := TextAfter(Value2, '">');
HTMLRemoveTags(Value2);
if MultipleValues = 1 then
Value2 := StringReplace(Value2, ' | ', ', ');
if MultipleValues = 2 then
Value2 := StringReplace(Value2, ' | ', ' / ');
if MultipleValues = 3 then
Value2 := '';
end;
Value2 := StringReplace(Value2, #13#10, '');
Value2 := StringReplace(Value2, ' , ', ', ');
HTMLDecode(Value2);
Result := Trim(Value2);
end;
// ***** functions to import the different pictures kinds, depending of the option selected by user *****
function ImportSmallPicture(PageText: string): Boolean;
var
Value: string;
begin
Result := False;
Value := TextBetween(PageText, '<div class="photo">', '</div>');
if (Value <> '') and (Pos('"Poster Not Submitted"', Value) = 0) then
begin
Value := TextBetween(Value, 'src="', '"');
if Value <> '' then
begin
GetPicture(Value);
Result := True;
end;
end;
end;
//Image from DVD Details Page
function ImportDvdDetailsPicture: Boolean;
var
Value, PageText: string;
begin
Result := False;
PageText := GetPage(MovieUrl+'/dvd');
Value := TextBefore(PageText, '.jpg alt="', '<table class="dvd_section" cellpadding="10"><tr>');
if Value <> '' then
begin
Value := TextBetween(Value, '<a href="', '">');
if Value <> '' then
Result := ImportFromAmazonRedirect('http://us.imdb.com' + Value);
end;
end;
//Image from Merchandising Links (/sales) Page
function ImportMerchandisingPicture: Boolean;
var
Value, PageText: string;
begin
Result := False;
PageText := GetPage(MovieUrl+'/sales');
Value := TextBefore(PageText, '.jpg" width=', '<td class=w_rowtable_colcover><a href="');
if Value <> '' then
begin
Value := TextBefore(Value, '"><img', '');
if Value <> '' then
Result := ImportFromAmazonRedirect('http://us.imdb.com' + Value);
end;
end;
function ImportFromAmazonRedirect(Url: string): Boolean;
var
Value, PageText: string;
begin
Result := False;
PageText := GetPage(Url);
Value := TextBetween(PageText, '<td id="prodImageCell"', '" id="prodImage"');
Value := StringReplace(TextAfter(Value, ' src="'), '_AA240', '');
if Value <> '' then
begin
GetPicture(Value);
Result := True;
end;
end;
// ***** Gets summaries for the movie, based on the plot outline given in parameter (that contains the URL to more summaries) *****
function ImportSummary(PlotText: string): string;
var
Address, Value, Value2, Value3, Value4, PageText, Longest: string;
begin
Address := TextBetween(PlotText, 'href="', '" ');
if (Address = '') or (GetOption('DescriptionSelection') = 0) or (GetOption('DescriptionSelection') = 3) then
begin
Value3 := Trim(TextBefore(PlotText, '<a ', ''));
if Value3 = '' then
Value3 := Trim(PlotText);
HTMLRemoveTags(Value3);
HTMLDecode(Value3);
end;
if (Address <> '') and (GetOption('DescriptionSelection') > 0) then
begin
PageText := GetPage('http://us.imdb.com' + Address);
PickListClear;
Longest := '';
Value := TextBetween(PageText, '<p class="plotpar">', '</p>');
PageText := RemainingText;
while Value <> '' do
begin
Value := TextBefore(Value, '<i>', '');
Value := Trim(StringReplace(Value, #13#10, ' '));
Value := StringReplace(Value, '<br>', #13#10);
HTMLRemoveTags(Value);
HTMLDecode(Value);
while Pos(' ', Value) > 0 do
Value := StringReplace(Value, ' ', ' ');
if Length(Value) > Length(Longest) then
Longest := Value;
PickListAdd(Trim(Value));
Value := TextBetween(PageText, '<p class="plotpar">', '</p>');
PageText := RemainingText;
end;
if (GetOption('BatchMode') > 0) or (GetOption('DescriptionSelection') = 2) then
Value4 := Longest
else
begin
if not PickListExec('Select a description for "' + GetField(fieldOriginalTitle) + '"', Value4) then
Value4 := '';
end;
end;
if Value3 <> '' then
begin
if Value4 <> '' then
begin
Result := Value3 + #13#10 + #13#10 + Value4;
end
else
begin
Result := Value3;
end;
end
else
begin
Result := Value4;
end;
end;
// Import awards
procedure ImportAwards;
var
PageText, FullValue, Block, Value, Row: string;
Year, Result, Award, Category: string;
begin
sleep(50);
Value := MovieUrl;
PageText := GetPage(Value+'/awards');
PageText := TextBetween(PageText, '<table style=', '</table>');
FullValue := '';
while PageText <> '' do
begin
Block := TextBetween(PageText, '<big>', '<big>');
if Block = '' then
begin
Block := PageText;
PageText := '';
end
else
begin
Block := '<big>' + Block;
PageText := '<big>' + RemainingText;
end;
Value := TextBetween(Block, '<big>', '</tr>');
Block := RemainingText;
HTMLRemoveTags(Value);
HTMLDecode(Value);
FullValue := FullValue + #13#10 + '- ' + Value;
Year := '';
Result := '';
repeat
Award := '';
Category := '';
Row := TextBetween(Block, '<tr>', '</tr>');
Block := RemainingText;
if (Row <> '<th>Year</th><th>Result</th><th>Award</th><th>Category/Recipient(s)</th>')
and (Row <> '<td colspan="4"> </td>') then
begin
if Pos('<a href="/Sections/Awards', Row) > 0 then
begin
Year := TextBetween(Row, '<a href="/Sections/Awards', '</a></td>');
Row := RemainingText;
Year := Trim(TextAfter(Year, '>'));
end;
if Pos('valign="center"><b>', Row) > 0 then
begin
Result := TextBetween(Row, 'valign="center"><b>', '</b></td>');
HTMLDecode(Result);
Row := RemainingText;
end;
if Pos('valign="center">', Row) > 0 then
begin
Award := TextBetween(Row, 'valign="center">', '</td>');
HTMLDecode(Award);
Row := RemainingText;
end;
if Award <> '' then
FullValue := FullValue + #13#10 + ' ' + Year + ' ' + Result + ' "' + Award + '"';
Category := TextBetween(Row, '<td valign="top"> ' + #13#10, '<br>');
HTMLDecode(Category);
Row := StringReplace(StringReplace(RemainingText, #13#10, ''), '<br>', ', ');
HTMLRemoveTags(Row);
HTMLDecode(Row);
Row := Trim(Row);
if Row = ',' then
Row := '';
if (Row <> '') or (Category <> '') then
begin
FullValue := FullValue + #13#10 + ' ' + Category;
if Row <> '' then
begin
while StrGet(Row, Length(Row)) = ',' do
begin
Delete(Row, Length(Row), 1);
Row := Trim(Row);
end;
if Category = '' then
FullValue := FullValue + Row
else
FullValue := FullValue + ': ' + Row;
end;
end;
end;
until Pos('</tr>', Block) = 0;
end;
if FullValue <> '' then
case GetOption('Awards') of
1:
begin
if GetField(fieldDescription) <> '' then
Value := GetField(fieldDescription) + #13#10 + #13#10 + 'AWARDS: ' + FullValue
else
Value := 'AWARDS: ' + FullValue;
SetField(fieldDescription, Value);
end;
2:
begin
if GetField(fieldComments) <> '' then
Value := GetField(fieldComments) + #13#10 + #13#10 + 'AWARDS: ' + FullValue
else
Value := 'AWARDS: ' + FullValue;
SetField(fieldComments, Value);
end;
end;
end;
// ***** beginning of the program *****
begin
if CheckVersion(3,5,0) then
begin
MovieName := '';
if GetOption('BatchMode') = 2 then
begin
MovieName := GetField(fieldURL);
if Pos('imdb.com', MovieName) = 0 then
MovieName := '';
end;
if MovieName = '' then
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if GetOption('BatchMode') = 0 then
begin
if not Input('IMDB Import', 'Enter the title or the IMDB URL of the movie:', MovieName) then
Exit;
end
else
Sleep(500);
if MovieName <> '' then
begin
if Pos('imdb.com', MovieName) > 0 then
AnalyzeResultsPage(MovieName)
else
begin
MovieName := StringReplace(MovieName, '&', 'and');
if GetOption('GoogleSearch') = 1 then
AnalyzeGooglesResultsPage('http://www.google.com/search?num=30&q=site:www.imdb.com/title/+' + UrlEncode(MovieName) + '+/maindetails')
else
if GetOption('GoogleSearch') = 2 then
AnalyzeGooglesResultsPage('http://www.google.com/search?num=30&q=site:www.imdb.com/title/+%22' + UrlEncode(MovieName) + '%22+/maindetails')
else
begin
if (GetOption('BatchMode') > 0) or (GetOption('PopularSearches') = 1) then
AnalyzeResultsPage('http://us.imdb.com/find?tt=1;q=' + UrlEncode(MovieName))
else
AnalyzeResultsPage('http://us.imdb.com/find?more=tt;q=' + UrlEncode(MovieName));
end;
end;
end;
end
else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.