(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Alex Iribarren (alexiri@terra.es) Title=TV Tome / StarGate SG-1 Description=StarGate SG-1 TV Tome import Site=http://www.tvtome.com Language=EN Version=04/04/2004 Requires=3.5.0 Comments= Modified version of IMDB batch import License=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. | GetInfo=1 [Options] ***************************************************) program TvTome; //Constants Const AddNotes = true; var EpName, EpNumber: string; MovieName: 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; procedure AnalyzePage(Address: string); var Page: TStringList; LineNr, StartPos: Integer; Line, Season: string; begin Page := TStringList.Create; Page.Text := GetPage(Address); PickTreeClear; PickTreeAdd('Searching for ' + EpName, ''); LineNr := 0; Address := ''; repeat LineNr := FindLine('<', Page, LineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('', Line) + 3; Season := copy(Line, StartPos, pos('', Line) - StartPos); PickTreeAdd(Season + ':', ''); Address := AddEpisodeTitles(Page, LineNr); if (Address <> '') then Break; LineNr := LineNr + 1; end; until (LineNr < 0); if (Address <> '') then begin AnalyzeEpisodePage(Address); end else begin if PickTreeExec(Address) then AnalyzeEpisodePage(Address); end; Page.Free; end; procedure AnalyzeEpisodePage(Address: string); var Line, TempStr: string; BeginPos: Integer; Page: TStringList; LineNr: Integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); // URL SetField(fieldURL, Address); // Episode Number if EpNumber <> '' then SetField(fieldTranslatedTitle, EpNumber); // Original Title LineNr := FindLine('',Line)-1)); // Writer LineNr := FindLine('>Writer<', Page, 0); Line := Page.GetString(LineNr); CutAfter(Line,''); TempStr := copy(Line, 1, pos('
',Line)-1); HTMLRemoveTags(TempStr); SetField(fieldProducer, 'Writer: ' + TempStr); // Director LineNr := FindLine('>Director<', Page, 0); Line := Page.GetString(LineNr); CutAfter(Line,''); TempStr := copy(Line, 1, pos('
',Line)-1); HTMLRemoveTags(TempStr); SetField(fieldDirector, TempStr); // Guest Stars LineNr := FindLine('Guest Stars:', Page, 0) + 1; TempStr := Page.GetString(LineNr-1); repeat Line := Page.GetString(LineNr); TempStr := TempStr + copy(Line, pos('">',Line) + 2, pos('',Line)) + #13#10; LineNr := LineNr + 1; until (pos('', Line) > 0); HTMLRemoveTags(TempStr); SetField(fieldActors, TempStr); // Description LineNr := FindLine('', Page, 0); LineNr := FindLine('', Line) > 0); TempStr := StringReplaceAll(TempStr, '
', #13#10); HTMLRemoveTags(TempStr); // Notes if AddNotes then begin LineNr := FindLine('
', Page, 0); LineNr := FindLine('', Line) > 0); TempStr := StringReplaceAll(TempStr, '
', #13#10); TempStr := StringReplaceAll(TempStr, '
  • ', #13#10#43#32); HTMLRemoveTags(TempStr); end; // Add Description to database SetField(fieldDescription, TempStr); Page.Free; //DisplayResults; end; function AddEpisodeTitles(Page: TStringList; var LineNr: Integer): string; var Line: string; EpTitle, EpAddress, TempNum: string; StartPos: Integer; begin Result := ''; repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); StartPos := pos('
  • ', Line) > 0) or (pos('
    ', Page, 0)+1; Line := Page.GetString(LineNr); CutAfter(Line,'

    '); SetField(fieldOriginalTitle, copy(Line, 1, pos('

    ',Line)-1)); // First Aired LineNr := FindLine('>First Aired<', Page, 0); Line := Page.GetString(LineNr); CutAfter(Line,'First Aired
    '); IF Line <> '' then SetField(fieldMedia,'Production Code: ' + copy(Line, 1, pos('
    ', Page, LineNr) + 1; TempStr := ''; repeat Line := Page.GetString(LineNr); TempStr := TempStr + Line; LineNr := LineNr + 1; until (pos('
    ', Page, LineNr) + 1; TempStr := TempStr + #13#10#13#10; repeat Line := Page.GetString(LineNr); TempStr := TempStr + Line; LineNr := LineNr + 1; until (pos('
    ', Line); //Feature Movie add need it code if StartPos = 0 then Begin StartPos := pos(' ', Line); if StartPos > 0 then StartPos := StartPos + 31 end else StartPos := StartPos + 42; if StartPos > 0 then begin TempNum := copy(Line, StartPos, pos('-', Line) - StartPos); EpNumber := 'S'; If Length(TempNum) < 2 then EpNumber := EpNumber + '0'; EpNumber := EpNumber + TempNum; CutAfter(Line,'-'); TempNum := copy(Line, 1, pos('<', Line) - 1); EpNumber := EpNumber + 'E'; If Length(TempNum) < 2 then EpNumber := EpNumber + '0'; EpNumber := EpNumber + TempNum; CutAfter(Line,'href="'); EpAddress := copy(Line, 1, pos('">', Line) - 1); StartPos := pos('">', Line) + 2; EpTitle := copy(Line, StartPos, pos('', Line) - StartPos); HTMLDecode(EpTitle); if (pos(EpName,EpTitle) > 0) then begin Result := 'http://www.tvtome.com' + EpAddress; Break; end; PickTreeAdd(EpNumber + ': ' + EpTitle, 'http://www.tvtome.com' + EpAddress); end; if Result <> '' then Break; until ((pos('
     
    ', Line) > 0)); end; procedure CutAfter(var Str: string; Pattern: string); begin Str := Copy(str, Pos(Pattern, Str) + Length(Pattern), Length(Str)); end; function StringReplaceAll(S, Old, New: string): string; begin while Pos(Old, S) > 0 do S := StringReplace(S, Old, New); Result := S; end; begin if CheckVersion(3,5,0) then begin if (GetField(fieldURL) <> '') then AnalyzeEpisodePage(GetField(fieldURL)) else begin EpName := GetField(fieldOriginalTitle); if (EpName = '') then EpName := GetField(fieldTranslatedTitle); end; if (EpName = '') then Input('TV Tome Import', 'Enter the title of the episode:', EpName); //AnalyzePage('http://www.tvtome.com/tvtome/servlet/EpisodeGuideServlet/showid-249/'); // Futurama //AnalyzePage('http://www.tvtome.com/Simpsons/eplist.html'); // The Simpsons AnalyzePage('http://www.tvtome.com/StargateSG1/eplist.html'); // Stargate SG-1 //AnalyzePage('http://www.tvtome.com/tvtome/servlet/EpisodeGuideServlet/showid-5382/'); // Garfield end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.