new dvd-inside.de/ch - script

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
TheT

new dvd-inside.de/ch - script

Post by TheT »

Hi there,

This is a script for www.dvd-inside.de, www.dvd-inside.ch

Antoine, you can include it in the next release, if you want.

Corrections/Errors/Bug-Reports: in this thread, please.

Have fun.


Download at:
http://www.dev-zero.ch/projects/amc_scr ... e_v0.2.zip

=============================================

Code: Select all

// GETINFO SCRIPTING
// dvd-inside (DE/CH) import

(***************************************************
 *  Movie importation script for:                  *
 *      DVD-Inside (www.dvd-inside.de)             *
 *                                                 *
 *  v0.1 - 2. Week 2005: "From scratch"            *
 *  v0.2 - 16.January 2005: "Rewritten"            *
 *                                                 *
 *  (c) 2004 Tiziano Müller                        *
 *                                                 *
 *  This script is based on the IMDB-script.       *
 *  So, credits go to the authors of the           *
 *  IMDB-script.                                   *
 *                                                 *
 *  For use with Ant Movie Catalog 3.4.3           *
 *  www.antp.be/software/moviecatalog              *
 *                                                 *
 *  This program is free software; you can         *
 *  redistribute it and/or modify it under the     *
 *  terms of the GNU General Public License as     *
 *  published by the Free Software Foundation;     *
 *  either version 2 of the License, or (at your   *
 *  option) any later version.                     *
 ***************************************************)

program dvd_inside;

const
  CRLF = #13#10;

var
  MovieName: string;
  MovieURL: string;

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
  i: Integer;
begin
  result := -1;
  if StartAt < 0 then
    StartAt := 0;
  for i := StartAt to List.Count-1 do
    if Pos(Pattern, List.GetString(i)) <> 0 then
    begin
      result := i;
      Break;
    end;
end;

function MyTrim(str_: string): string;
var
  chars: array of char;
  StrLen, i, LastSpacePos: integer;
begin
  result := '';

  str_ := StringReplace(str_, #9, '');
  str_ := StringReplace(str_, #10, '');
  str_ := StringReplace(str_, #13, '');

  
  while Pos(' ', str_) = 1 do
  begin
    Delete(str_, Pos(' ', str_), 1);
  end;
  
  StrLen := Length(str_);
  SetArrayLength(chars, StrLen);
  for i := 0 to StrLen-1 do
  begin
    chars[i] := Copy(str_,i+1,1);
  end;

  str_ := '';
  LastSpacePos := StrLen - 1;
  if LastSpacePos > -1 then
  begin
    while chars[LastSpacePos] = ' ' do
    begin
      LastSpacePos := LastSpacePos - 1;
    end;
    for i:= 0 to LastSpacePos do
    begin
      str_ := str_ + chars[i];
    end;
  end;
  
  str_ := StringReplace(str_, '  ', ' ');
  while result <> str_ do
  begin
    result := str_;
    str_ := StringReplace(str_, '  ', ' ');
  end;
  result := StringReplace(result, ' ,', ',');
  
end;

procedure CutAfter(var str_: string; Pattern: string);
begin
  str_ := Copy(str_, Pos(Pattern, str_) + Length(Pattern), Length(str_));
end;

procedure CutBefore(var Str: string; Pattern: string);
begin
  Str := Copy(Str, Pos(Pattern, Str), Length(Str));
end;

function GetStringBetween(str_, StartTag, EndTag: string): string;
var
  BeginPos, EndPos: integer;
begin
  result := '';
  if EndTag = '' then
  begin
    EndPos := Length(str_);
  end
  else
    EndPos := Pos(EndTag, str_);

  BeginPos := Pos(StartTag, str_) + Length(StartTag);
  if StartTag = '' then BeginPos := 1;
  if BeginPos > 0 then result := Copy(str_, BeginPos, EndPos - BeginPos);
  
end;

function GetTrimmedStringBetween(str_, StartTag, EndTag: string): string;
begin
  result := MyTrim(GetStringBetween(str_, StartTag, EndTag));
end;

// Extracts single movie detail (like director, genre) from page
function GetStringFromHTML(Page, StartTag, CutTag, EndTag: string): string;
begin
  Result := '';
  // recognition tag - if present, extract detail from page, otherwise assume detail is not present
  if Pos(StartTag, Page) > 0 then begin
    CutBefore(Page, StartTag);
    // optional cut tag helps finding right string in html page
    if Length(CutTag) > 0 then
      CutAfter(Page, CutTag);
    // movie detail copied with html tags up to end string
    Result := Copy(Page, 0, Pos(EndTag, Page) - 1);
    // remove html tags and decode html string
//    HTMLRemoveTags(Result);
    HTMLDecode(Result);
  end;
end;

function StripHTMLTags(str_: string): string;
var
  temp_char : char;
  StrLen, i, CharPos : integer;
  DoCopy : boolean;
begin
  DoCopy := true;
  CharPos := 0;
  result := '';
  StrLen := Length(str_);
  for i := 1 to StrLen do
  begin
    temp_char := Copy(str_,i,1);
    if temp_char = '<' then
    begin
      DoCopy := false;
      continue;
    end
    else if temp_char = '>' then
    begin
      DoCopy := true;
      continue;
    end
    else
    begin
      if DoCopy then
      begin
        result := result + temp_char;
      end;
    end;
  end;

end;

procedure AnalyzeIndexPage(Address, Params: string);
var
  IndexPage: TStringList;
  Page: string;
begin
  IndexPage := TStringList.Create;
  Address := URLEncode(Address);
  Params := URLEncode(Params);
  IndexPage.Text := PostPage(Address,Params);

  PickTreeClear;
  PickTreeAdd('Search results', '');
  AddMoviesTitles(IndexPage);
  if PickTreeExec(Address) then
  begin
    Page := GetPage(Address);
    AnalyzeMoviePage(Page, Address);
  end;
  IndexPage.Free;
end;



procedure AnalyzeMoviePage(Page,Address: string);
var
  StrPosition: Integer;
  StrTemp: string;
  
  OriginalTitle, Country, Year, Genre, Studio, Region, EAN_Number, Distributor, AFK, Duration: string;
  VideoFormat, ScreenFormat, ScreenSystem, Language, AudioFormat, Subtitle, MediaType, Disks: string;
  Comments, Bonusmaterial, Packaging, TranslatedTitle, Director, Cast, Producer, Description: string;
  Music, Screenplay: string;

begin
// Initializing the very important Comments
  Comments := '';
// URL
  SetField(fieldURL, Address);

// Translated title
  TranslatedTitle := MyTrim(GetStringFromHTML(Page,'<b class="ueberschrift">','">','</b>'));
  SetField(fieldTranslatedTitle, TranslatedTitle);

// Original-Title, Country and Year
  StrTemp := MyTrim(GetStringFromHTML(Page, 'Originaltitel:','<td>','</td>'));
  StrTemp := StripHTMLTags(StrTemp);
  OriginalTitle := GetTrimmedStringBetween(StrTemp,'','(');
  StrTemp := GetTrimmedStringBetween(StrTemp,'(',')');
  Country := Copy(StrTemp,1,Length(StrTemp)-4);
  Year := Copy(StrTemp,Length(StrTemp)-4,Length(StrTemp));

  SetField(fieldOriginalTitle, OriginalTitle);
  SetField(fieldCountry, Country);
  SetField(fieldYear, Year);

// EAN-Number

  EAN_Number := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'EAN-Nummer:','<td>', '</td>')));
  Comments := Comments + 'EAN-Nummer: ' + EAN_Number + CRLF;

// Genre
  Genre := '';
  Genre := MyTrim(GetStringFromHTML(Page, 'Genre:', '<td>', '</td>'));
  Genre := MyTrim(StripHTMLTags(Genre));
  setField(fieldCategory, Genre);

// Studio
  Studio := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Studio:','</td>', '</tr>')));
  Comments := Comments + 'Studio: ' + Studio + CRLF;

// Distributor
  Distributor := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Vertrieb:','</td>', '</tr>')));
  Comments := Comments + 'Vertrieb: ' + Distributor + CRLF;
  
// Altersfreigabe
  AFK := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Altersfreigabe:','</td>', '</tr>')));
  Comments := Comments + 'Altersfreigabe: ' + AFK + CRLF;
  
// CountryCode
  Region := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Ländercode:','</td>', '</tr>')));
  VideoFormat := 'DVD Zone '+Region;
  setField(fieldVideoFormat,VideoFormat);

// Duration
  Duration := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Filmlänge:','</td>', '</tr>')));
  Duration := StringReplace(Duration,' min','');
  setField(fieldLength,Duration);

// Description
  Description := GetStringFromHTML(Page, 'Inhalt:','</td>', '</tr>');
  Description := StringReplace(Description, '<br />','*');
  Description := MyTrim(StripHTMLTags(Description));
  Description := StringReplace(Description, '*',CRLF);
  setField(fieldDescription,Description);
  
// Actors
  Cast := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Schauspieler:','</td>', '</tr>')));
  setField(fieldActors,Cast);

// Director
  Director := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Regie:','</td>', '</tr>')));
  setField(fieldDirector,Director);

// Production
  Producer := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Produzent:','</td>', '</tr>')));
  setField(fieldProducer,Producer);

// Music
  Music := '';
  Music := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Music:','</td>', '</tr>')));
  Comments := Comments + 'Musik: ' + Music + CRLF;
  
// Screenplay
  Screenplay := '';
  Screenplay := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Drehbuch:','</td>', '</tr>')));
  Comments := Comments + 'Drehbuch: ' + Screenplay + CRLF;

// Screen format & system
  ScreenFormat := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Format:','</td>', '</tr>')));
  ScreenSystem := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'System:','</td>', '</tr>')));
  setField(fieldResolution,ScreenSystem + ' - ' + ScreenFormat);

// Audioformat/Language
  AudioFormat := '';
  Language := '';
  StrTemp := GetStringFromHTML(Page, 'Tonformate / Sprachen:', '</td>', '</td>');

  StrTemp := StringReplace(StrTemp, '<br />','*') + '*';
  StrTemp := MyTrim(StripHTMLTags(StrTemp));

  while Pos('*',StrTemp) > 0 do
  begin
    AudioFormat := AudioFormat + ', ' + MyTrim(Copy(StrTemp,1,Pos(' in ',StrTemp)));
    Language := Language + ', ' + MyTrim(Copy(StrTemp,Pos(' in ',StrTemp)+4,Pos('*',StrTemp)-(Pos(' in ',StrTemp)+4)));
    CutAfter(StrTemp,'*');
  end;
  AudioFormat := Copy(AudioFormat,3,Length(AudioFormat));
  Language := Copy(Language,3,Length(Language));

  setField(fieldAudioFormat, AudioFormat);
  setField(fieldLanguages, Language);

// Subtitles
  Subtitle := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Untertitel:', '</td>', '</tr>')));
  if Subtitle = 'Keine Untertitel' then Subtitle := '';
  setField(fieldSubtitles, Subtitle);

// Mediatype
  MediaType := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Medientyp:','</td>', '</tr>')));
  setField(fieldMediaType, MediaType);
  
// Disks
  Disks := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Medienanzahl:','</td>', '</tr>')));
  setField(fieldDisks, Disks);

// Package
  Packaging := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Verpackung:', '</td>', '</tr>')));
  Comments := Comments + 'Verpackung: ' + Packaging + CRLF;

// Bonusmaterial
  Bonusmaterial := MyTrim(GetStringFromHTML(Page, 'Bonus-Matrial:', '</td>', '</tr>'));
  Bonusmaterial := StringReplace(Bonusmaterial,'<br />','*');
  Bonusmaterial := MyTrim(StripHTMLTags(Bonusmaterial));
  Bonusmaterial := StringReplace(Bonusmaterial,'*',CRLF);
  Comments := Comments + CRLF + 'Bonusmaterial' + CRLF + '===========' + CRLF + Bonusmaterial + CRLF;



  setField(fieldComments,Comments);
  DisplayResults;
end;

procedure AddMoviesTitles(ResultsPage: TStringList);
var
  Page: string;
  MovieTitle, MovieAddress: String;
begin
  Page := ResultsPage.Text;
  while Pos('details.php', Page) > 0 do
  begin
    CutBefore(Page, 'details.php');
    MovieAddress := 'http://www.dvd-inside.de/db/' + GetStringFromHTML(Page, 'details.php', '', '"');
    MovieTitle := MyTrim(GetStringFromHTML(Page, 'details.php', '">', '</tr>'));
    MovieTitle := StringReplace(MovieTitle, '</td>', ' | ');
    MovieTitle := MyTrim(StripHTMLTags(MovieTitle));
    CutAfter(Page, '</tr>');
    PickTreeAdd(MovieTitle, MovieAddress);
  end;
end;

begin
  if CheckVersion(3,4,3) then
  begin
    MovieName := GetField(fieldOriginalTitle);
    if MovieName = '' then
      MovieName := GetField(fieldTranslatedTitle);
    if Input('dvd-inside import', 'Enter the title of the movie:', MovieName) then
    begin
      AnalyzeIndexPage('http://www.dvd-inside.de/db/search.php', 'action=new&title='+MovieName+'&suchen=Suchen');
    end;
  end
  else
    ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.3)');
end.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks ;)

PS: I added the "

Code: Select all

" tags around your script in your post
Guest

Post by Guest »

thx for the skript, its very usefull for german movies.

but there is a problem. it didnt work.
DaVe

Post by DaVe »

Hey, it worked, so there's nothing wrong :grinking:

Wouldn't it be nice to have the pictures caught aswell?? Could you include that in the next version of your script?

Viele Grüße & klasse Arbeit! - Many greeting & good job you made!
Guest

[DE] neue Adresse http://www.dvd-inside.de

Post by Guest »

"http://www.dvd-inside.de" hat neue Adresse "http://www.cinefacts.de" gibt es schon ein neues Script? :angry:
Guest

Post by Guest »

Bitte schön...

Code: Select all


[...]

:) :)
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

The comments block at the top is missing. You have to open the file with notepad to copy the whole contents.
(in AMC 3.5.1 I'll add a "copy script to clipboard" icon)
Guest

Post by Guest »

Code: Select all

 

[...]

antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Thanks ;)
(I deleted the previous one to make the page a little cleaner)
NooP

Post by NooP »

Special Thx 4 the code ^^ =)
ml

Post by ml »

Thanks for the script.

To get a greater Pic to print a cover, you must change the line

Code: Select all

srcPic := 'http://www.cinefacts.de/bild.php?id=' + MovieID + '&type=ds&studio=' + StringReplace(Studio,' ','');
type=ds

to

Code: Select all

srcPic := 'http://www.cinefacts.de/bild.php?id=' + MovieID + '&type=db&studio=' + StringReplace(Studio,' ','');
type=db

Best regards

ml
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Nice info :)
It would be interesting to add an option to the script to let the user select if he wants a big picture or not.
Guest

Post by Guest »

thx ml for the info -> db = Big Picture

in the script options "BigPicture" you have now the choice to import
0=small Pic
1=Big Pic
(@antp is that what you meant?)

done some bugfixes
-Now, import all titles (when more then 50 titles found 1..n pages)
-comments import looks better


Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=OL
Title=Cinefacts.de
Description=cinfacts.de import incl. Big/small Picture
Site=www.cinefacts.de
Language=DE
Version=v0.1.2 -  11.05.2005
Requires=3.5.0
Comments=based on dvd-inside script by Tiziano Müller||Script Option "BigPicture"  for loading Big / Small Picture |0 = load small picture|1= load big picture|| 
License=
GetInfo=1

[Options]
BigPicture=1|1|0=import small picture|1=import big picture

***************************************************)

program CineFactsDE;

const
  CRLF = #13#10;

var
  MovieName: string;
  MovieURL: string;

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
  i: Integer;
begin
  result := -1;
  if StartAt < 0 then
    StartAt := 0;
  for i := StartAt to List.Count-1 do
    if Pos(Pattern, List.GetString(i)) <> 0 then
    begin
      result := i;
      Break;
    end;
end;

function MyTrim(str_: string): string;
var
  chars: array of char;
  StrLen, i, LastSpacePos: integer;
begin
  result := '';

  str_ := StringReplace(str_, #9, '');
  str_ := StringReplace(str_, #10, '');
  str_ := StringReplace(str_, #13, '');

  while Pos(' ', str_) = 1 do
  begin
    Delete(str_, Pos(' ', str_), 1);
  end;

  StrLen := Length(str_);
  SetArrayLength(chars, StrLen);
  for i := 0 to StrLen-1 do
  begin
    chars[i] := Copy(str_,i+1,1);
  end;

  str_ := '';
  LastSpacePos := StrLen - 1;
  if LastSpacePos > -1 then
  begin
    while chars[LastSpacePos] = ' ' do
    begin
      LastSpacePos := LastSpacePos - 1;
    end;
    for i:= 0 to LastSpacePos do
    begin
      str_ := str_ + chars[i];
    end;
  end;

  str_ := StringReplace(str_, '  ', ' ');
  while result <> str_ do
  begin
    result := str_;
    str_ := StringReplace(str_, '  ', ' ');
  end;
  result := StringReplace(result, ' ,', ',');

end;

procedure CutAfter(var str_: string; Pattern: string);
begin
  str_ := Copy(str_, Pos(Pattern, str_) + Length(Pattern), Length(str_));
end;

procedure CutBefore(var Str: string; Pattern: string);
begin
  Str := Copy(Str, Pos(Pattern, Str), Length(Str));
end;

function GetStringBetween(str_, StartTag, EndTag: string): string;
var
  BeginPos, EndPos: integer;
begin
  result := '';
  if EndTag = '' then
  begin
    EndPos := Length(str_);
  end
  else
    EndPos := Pos(EndTag, str_);

  BeginPos := Pos(StartTag, str_) + Length(StartTag);
  if StartTag = '' then BeginPos := 1;
  if BeginPos > 0 then result := Copy(str_, BeginPos, EndPos - BeginPos);

end;

function GetTrimmedStringBetween(str_, StartTag, EndTag: string): string;
begin
  result := MyTrim(GetStringBetween(str_, StartTag, EndTag));
end;

// Extracts single movie detail (like director, genre) from page
function GetStringFromHTML(Page, StartTag, CutTag, EndTag: string): string;
begin
  Result := '';
  Page := StringReplace(Page, 'ß','ß');
  // recognition tag - if present, extract detail from page, otherwise assume detail is not present
  if Pos(StartTag, Page) > 0 then begin
    CutBefore(Page, StartTag);
    // optional cut tag helps finding right string in html page
    if Length(CutTag) > 0 then
      CutAfter(Page, CutTag);
    // movie detail copied with html tags up to end string
    Result := Copy(Page, 0, Pos(EndTag, Page) - 1);
    // remove html tags and decode html string
//    HTMLRemoveTags(Result);
    HTMLDecode(Result);
  end;
end;

function StripHTMLTags(str_: string): string;
var
  temp_char : char;
  StrLen, i, CharPos : integer;
  DoCopy : boolean;
begin
  DoCopy := true;
  CharPos := 0;
  result := '';
  StrLen := Length(str_);
  for i := 1 to StrLen do
  begin
    temp_char := Copy(str_,i,1);
    if temp_char = '<' then
    begin
      DoCopy := false;
      continue;
    end
    else if temp_char = '>' then
    begin
      DoCopy := true;
      continue;
    end
    else
    begin
      if DoCopy then
      begin
        result := result + temp_char;
      end;
    end;
  end;

end;

procedure AnalyzeIndexPage(Address: string);
var
  IndexPage: TStringList;
  Page : String;
begin
  IndexPage := TStringList.Create;
  Address := URLEncode(Address);
  IndexPage.Text := GetPage(Address);

  PickTreeClear;
  PickTreeAdd('Search results', '');
  AddMoviesTitles(IndexPage);

  if PickTreeExec(Address) then
  begin
    Page := GetPage(Address);
    AnalyzeMoviePage(Page, Address);
  end;
  IndexPage.Free;
end;



procedure AnalyzeMoviePage(Page, Address :String);
var
  TomString, Line, Temp, Value: string;
  LineNr, IntValue: Integer;
  BeginPos, EndPos: Integer;

  StrPosition: Integer;
  StrTemp,srcPic, MovieID: string;

  OriginalTitle, Country, Year, Genre, Studio, Region, EAN_Number, Distributor, AFK, Duration: string;
  VideoFormat, ScreenFormat, ScreenSystem, Language, AudioFormat, Subtitle, MediaType, Disks: string;
  Comments, Bonusmaterial, Packaging, TranslatedTitle, Director, Cast, Producer, Description: string;
  Music, Screenplay: string;

begin
// Initializing the very important Comments
  Comments := '';
// URL
  SetField(fieldURL, Address);

// Translated title
  TranslatedTitle := MyTrim(GetStringFromHTML(Page,'span class="headline">','">','<br>'));
  SetField(fieldTranslatedTitle, TranslatedTitle);

// Original-Title, Country and Year
  OriginalTitle := MyTrim(GetStringFromHTML(Page, 'Originaltitel:','"first">','(<a href="'));
  StrTemp := MyTrim(GetStringFromHTML(Page, '"land_list.php?name=','">','</dd>'));
  StrTemp := StripHTMLTags(StrTemp);
  StrTemp := GetTrimmedStringBetween(StrTemp,'(',')');
  Country := Copy(StrTemp,1,Length(StrTemp)-4);
  Year := Copy(StrTemp,Length(StrTemp)-4,Length(StrTemp));

  SetField(fieldOriginalTitle, OriginalTitle);
  SetField(fieldCountry, Country);
  SetField(fieldYear, Year);

// EAN-Number

  EAN_Number := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">EAN-Nummer:','', '</dd>')));
  EAN_Number := StringReplace(EAN_Number,'EAN-Nummer:','');
  Comments := Comments + 'EAN-Nummer: ' + EAN_Number + CRLF;

// Genre
  Genre := '';
  Genre := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Genre:', '', '</dd>')));
  Genre := StringReplace(Genre,'Genre: ','');
  setField(fieldCategory, Genre);

// Studio
  Studio := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Studio:','', '</dd>')));
  Studio := StringReplace(Studio,'Studio: ','');
  Comments := Comments + 'Studio: ' + Studio + CRLF;

// Distributor
  Distributor := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Vertrieb:','', '</dd>')));
  Distributor := StringReplace(Distributor,'Vertrieb: ','');
  Comments := Comments + 'Vertrieb: ' + Distributor + CRLF;

// Altersfreigabe
  AFK := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">FSK:','', '</dd>')));
  AFK := StringReplace(AFK,'FSK: ','');
  Comments := Comments + 'Altersfreigabe: ' + AFK + CRLF;

// CountryCode
  Region := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Ländercode:','', '</dd>')));
  Region := StringReplace(Region,'Ländercode: ','');
  VideoFormat := 'DVD Zone '+Region;
  setField(fieldVideoFormat,VideoFormat);

// Duration
  Duration := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Länge:','', '</dd>')));
  Duration := StringReplace(Duration,'Länge: ','');
  Duration := StringReplace(Duration,' Minuten','');
  setField(fieldLength,Duration);

// Description
  Description := GetStringFromHTML(Page, '<li class="text c1">','', '</li>');
  Description := StringReplace(Description, '<br />','*');
  Description := MyTrim(StripHTMLTags(Description));
  Description := StringReplace(Description, '*',CRLF);
  setField(fieldDescription,Description);

// Actors
  Cast := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Schauspieler:','', '</dd>')));
  Cast := StringReplace(Cast,'Schauspieler: ','');
  setField(fieldActors,Cast);

// Director
  Director := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Regie:','', '</dd>')));
  Director := StringReplace(Director,'Regie: ','');
  setField(fieldDirector,Director);

// Production
  Producer := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Produzent:','', '</dd>')));
  Producer := StringReplace(Producer,'Produzent: ','');
  setField(fieldProducer,Producer);

// Music
  Music := '';
  Music := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Musik:','', '</dd>')));
  Music := StringReplace(Music,'Musik:','');
  Music := StringReplace(Music,' Minuten','');
  Comments := Comments + 'Musik:' + Music + CRLF;

// Screenplay
  Screenplay := '';
  Screenplay := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Drehbuch:','', '</dd>')));
  Screenplay := StringReplace(Screenplay,'Drehbuch: ','');
  Comments := Comments + 'Drehbuch: ' + Screenplay + CRLF;

// Screen format & system
  ScreenFormat := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Format:','', '</dd>')));
  ScreenFormat := StringReplace(ScreenFormat,'Format: ','');
  ScreenSystem := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">System:','', '</dd>')));
  ScreenSystem := StringReplace(ScreenSystem,'System: ','');
  setField(fieldResolution,ScreenSystem + ' - ' + ScreenFormat);

// Audioformat/Language
  AudioFormat := '';
  Language := '';
  StrTemp := GetStringFromHTML(Page, '<dt class="c1">Tonformat:', '', '<dt class="c1">Untertitel:');

  StrTemp := StringReplace(StrTemp, '</dd>','*');
  StrTemp := MyTrim(StripHTMLTags(StrTemp));
  StrTemp := StringReplace(StrTemp,'Tonformat: ','');
  
  while Pos('*',StrTemp) > 0 do
  begin
    AudioFormat := AudioFormat + ', ' + MyTrim(Copy(StrTemp,1,Pos(' in ',StrTemp)));
    Language := Language + ', ' + MyTrim(Copy(StrTemp,Pos(' in ',StrTemp)+4,Pos('*',StrTemp)-(Pos(' in ',StrTemp)+4)));
    CutAfter(StrTemp,'*');
  end;
  AudioFormat := Copy(AudioFormat,3,Length(AudioFormat));
  Language := Copy(Language,3,Length(Language));

  setField(fieldAudioFormat, AudioFormat);
  setField(fieldLanguages, Language);

// Subtitles
  Subtitle := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Untertitel:', '', '</dd>')));
  Subtitle := StringReplace(Subtitle,'Untertitel: ','');
  if Subtitle = 'Keine Untertitel' then Subtitle := '';
  setField(fieldSubtitles, Subtitle);

// Mediatype
  MediaType := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Medientyp:','', '</dd>')));
  MediaType := StringReplace(MediaType,'Medientyp: ','');
  setField(fieldMediaType, MediaType);

// Disks
  Disks := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Medienanzahl:','', '</dd>')));
  Disks := StringReplace(Disks,'Medienanzahl: ','');
  setField(fieldDisks, Disks);

// Package
  Packaging := MyTrim(StripHTMLTags(GetStringFromHTML(Page, '<dt class="c1">Verpackung:', '', '</dd>')));
  Packaging := StringReplace(Packaging,'Verpackung:','');
  Comments := Comments + 'Verpackung: ' + Packaging + CRLF;

// Bonusmaterial
  Bonusmaterial := MyTrim(GetStringFromHTML(Page, ' BONUS-MATRIAL </li>', '', '</ul>'));
  Bonusmaterial := StringReplace(Bonusmaterial,'</span>','*');
  Bonusmaterial := StringReplace(Bonusmaterial,'<li>','-');
  Bonusmaterial := MyTrim(StripHTMLTags(Bonusmaterial));
  Bonusmaterial := StringReplace(Bonusmaterial,'BONUS-MATRIAL','');
  Bonusmaterial := StringReplace(Bonusmaterial,'*',CRLF);
  Comments := Comments + CRLF + 'Bonusmaterial' + CRLF + '===========' + CRLF + Bonusmaterial + CRLF;
  setField(fieldComments,Comments);
  if CanSetPicture then
  begin
    MovieID := Copy(Address,Pos('?id=',Address)+4,Length(Address));
    if GetOption('BigPicture') = 1 then
      srcPic := 'http://www.cinefacts.de/bild.php?id=' + MovieID + '&type=db&studio=' + StringReplace(Studio,' ','')
    else
      srcPic := 'http://www.cinefacts.de/bild.php?id=' + MovieID + '&type=ds&studio=' + StringReplace(Studio,' ','');
    GetPicture(srcPic);
  end;
  //DisplayResults;
end;

procedure AddMoviesTitles(ResultsPage: TStringList);
var
  Page,str_: string;
  sNr,pNr,aPage : Integer;
  MovieTitle, MovieAddress: String;
begin
  Page := ResultsPage.Text;
  snr := 0;
  str_ := MyTrim(StripHTMLTags(GetStringFromHTML(Page, 'Anzahl Ergebnisse gesamt:', '', '</li>')));
  str_ := StringReplace(str_,'Anzahl Ergebnisse gesamt: ','');
  pNr := StrToInt(StringReplace(str_,')',''),1);
  aPage := 1;
  while sNr < pNr do
  begin
    while Pos('details.php?id=', Page) > 0 do
    begin
      CutBefore(Page, 'details.php?id=');
      MovieAddress := 'http://www.cinefacts.de/dvd/db/' + GetStringFromHTML(Page, 'details.php?id=', '', '"');
      MovieTitle := MyTrim(GetStringFromHTML(Page, 'details.php?id=', '">', '</tr>'));
      MovieTitle := StringReplace(MovieTitle, '</td>', ' | ');
      MovieTitle := MyTrim(StripHTMLTags(MovieTitle));
      CutAfter(Page, '</tr>');
      PickTreeAdd(MovieTitle, MovieAddress);
    end;
    sNr := sNr + 50;
    aPage := aPage + 1;
    if sNr < pNr then
    Page := GetPage(URLEncode('http://www.cinefacts.de/dvd/suche.php?akseite='+IntToStr(aPage)+'&startwert='+IntToStr(sNr)+'&name='+MovieName));
  end;
end;

begin
  if CheckVersion(3,5,0) then
  begin
    MovieName := GetField(fieldTranslatedTitle);
    if MovieName = '' then
      MovieName := GetField(fieldOriginalTitle);
    if Input('cinefacts.de Import', 'Filmtitel eingeben:', MovieName) then
    begin
      AnalyzeIndexPage('http://www.cinefacts.de/dvd/suche.php?name='+MovieName+'&go.x=0&go.y=0');
    end;
  end
  else
  ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.
[/code] :grinking:
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Anonymous wrote: in the script options "BigPicture" you have now the choice to import
0=small Pic
1=Big Pic
(@antp is that what you meant?)
yes ;)
Post Reply