Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Le-Sphinx
Title=[Game] - Tomb-Raider
Description=Récupération d'information sur les Niveaux de Tomb Raider Online
Site=http://www.tro-online.com
Language=FR
Version=08022005
Requires=3.5.0
Comments=Script crée par Le-Sphinx (Sphinx_Studio@hotmail.com) pour le site " www.tro-online.com " |Information sur les niveaux supplémentaires pour l'éditeur de niveaux qui peuvent être téléchargés sur le site. |Pour rappel, ces données sont accessibles uniquement pour une utilisation personnelle ; en aucun cas elles ne peuvent être utilisées commerciallement ou publiquement !|
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 TombRaider;
const
  BaseURL = 'http://www.tro-online.com';
var
  LevelName: string;
  Line, Lien : string;
//
// Mise du contenu du fichier dans une variable
//
function GetLocalPage(Address: string; CleanTree: Integer): string;
var
  Page: TStringList;
begin
  Page := TStringList.Create;
  Page.LoadFromFile(Address);
  Line := Page.Text;
  Page.Free;
end;
procedure GetNombrePage(Address: string; CleanTree: Integer);
//
// Récupération des numéros de page
// Récupération de l'URL de la page
// dans la liste des Levels disponible
//
var
  LineNr: Integer;
  Tags, Url, Caption: string;
  SubL1, SubL2: string;
  BeginPos, EndPos: Integer;
begin
  // Source de le page HTML
  if Pos('http://www.tro-online.com', Line) > 0 then
  begin
    if CleanTree = 1 then
    begin
      PickTreeClear;
      PickTreeAdd('Page Trouvée :', '');
    end;
    Tags := '<u>Liste de tous les niveaux</u>';
    if Pos(Tags, Line) > 0 then
    begin
      // Page correct
      // Efface le debut des données non utilisées.
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      BeginPos := Pos('<table', Line);
      EndPos := Pos('</table>', Line);
      Line := Copy(Line, BeginPos + 6 , EndPos - BeginPos - 6);
      Caption := 'page 1';
      Url := 'http://www.tro-online.com/niveaux-1-1.html';
      PickTreeAdd(Caption,  Url);
      while Pos('title="page ', Line) > 0 do
      begin
        Tags := '<a href=';
        BeginPos := Pos(Tags, Line);
        Delete(Line, 1, BeginPos + Length(Tags));
        Tags := '.html';
        BeginPos := Pos(Tags, Line);
        Url := Copy(Line, 1, BeginPos + 4);
        Tags := 'title="';
        BeginPos := Pos(Tags, Line);
        Delete(Line, 1, BeginPos + 6 );
        Tags := '" target="_self"';
        BeginPos := Pos(Tags, Line);
        Caption := Copy(Line, 1, BeginPos - 1);
        // Ajout de la page et de son URL dans l'arborescence
        PickTreeAdd(Caption,  Url);
      end;
    end;
    // Affiche la fenetre pour le choix de la page
    if PickTreeExec(Address) then
    begin
      Lien := Address;
    end;
  end;
end;
procedure GetTitreNiveau(Address: string; CleanTree: Integer);
//
// Récupération des titres des niveaux
// dans la page disponible
//
var
  LineNr: Integer;
  Tags, Url, Caption, NumeroNiveau: string;
  SubL1, SubL2: string;
  BeginPos, EndPos: Integer;
begin
  // Source de le page HTML
  if Pos('http://www.tro-online.com', Line) > 0 then
  begin
    if CleanTree = 1 then
    begin
      PickTreeClear;
      PickTreeAdd('Niveau Trouvé :', '');
    end;
    Tags := '<u>Liste de tous les niveaux</u>';
    if Pos(Tags, Line) > 0 then
    begin
      // Page correct
      // Efface le debut des données non utilisées.
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      
      while Pos('<a name="', Line) > 0 do
      begin
      Tags := '<a name="';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      BeginPos := Pos('="', Line);
      EndPos := Pos('"></a>', Line);
      NumeroNiveau := Copy(Line, BeginPos + 2 , EndPos - BeginPos - 2);
      //ShowMessage(Caption);
      Tags := '</font>';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      Tags := '</font>';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      Tags := '<font face="';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      BeginPos := Pos('>', Line);
      EndPos := Pos('</font>', Line);
      Caption := Copy(Line, BeginPos + 1 , EndPos - BeginPos - 1);
      Url := Caption;
      PickTreeAdd(NumeroNiveau + ' - ' + Caption,  NumeroNiveau + ' - ' + Url);
      end;
    end;
    // Affiche la fenetre pour le choix de la page
    if PickTreeExec(Address) then
    begin
      LevelName := Address;
    end;
  end;
end;
procedure GetLevelReferences(Address: string; CleanTree: Integer);
//
// Récupération des titres des Levels
// dans la liste des Levels disponible
//
var
  LineNr: Integer;
  Tags, Url, Caption: string;
  SubL1, SubL2, NumeroNiveau: string;
  BeginPos, EndPos: Integer;
begin
  // Source de le page HTML
  Tags := ' - ';
  EndPos := Pos(Tags, LevelName);
  NumeroNiveau := Copy(LevelName, 0 , EndPos -1);
  Delete(LevelName, 1, EndPos + 2);
  SubL1 := '<a name="' + NumeroNiveau;
  if Pos(SubL1, Line) > 0 then
  begin
    Tags := SubL1;
    if Pos(Tags, Line) > 0 then
    begin
      // Page correct
      // Efface le debut des données non utilisées.
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      // Récupération du Numéro et du Titre du niveau
      Tags := 'name="';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      BeginPos := Pos('="', Line);
      EndPos := Pos('"></a>', Line);
      SubL1 := Copy(Line, BeginPos + 2 , EndPos - BeginPos - 2);
      SetField( fieldOriginalTitle, LevelName);
      SetField( fieldTranslatedTitle, SubL1 + ' - ' + LevelName);
      // Récuperation de l'Url du niveau
      BeginPos := Pos('<a href="', Line);
      EndPos := Pos('" title="', Line);
      SubL1 := Copy(Line, BeginPos + 9 , EndPos - BeginPos - 9);
      SetField( fieldURL, SubL1);
      // Récupération du Nom de l'auteur du niveau
      Tags := 'contacter l';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos + Length(Tags));
      BeginPos := Pos('<u>',Line);
      EndPos := Pos('</u>', Line);
      SubL1 := Copy(Line, BeginPos + 3, EndPos -3);
      EndPos := Pos('</u>', SubL1);
      SubL1 := Copy(SubL1, 1, EndPos - 1);
      SetField( fieldProducer, SubL1);
      // Récupération de l'image
      Tags := '</table>';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos + Length(Tags));
      BeginPos := Pos('<img src="',Line);
      EndPos := Pos('sm.jpg"', Line);
      SubL1 := Copy(Line, BeginPos + 9, EndPos - 9 + 6);
      EndPos := Pos('.jpg"', SubL1);
      SubL1 := Copy(SubL1, 2, EndPos + 2);
      GetPicture(SubL1);
      // Résumé
      BeginPos := Pos('<i>',Line);
      EndPos := Pos('<script language', Line);
      SubL1 := Copy(Line, BeginPos + 3, EndPos - 4);
      EndPos := Pos('<script language', SubL1);
      SubL1 := Copy(SubL1, 1, EndPos - 1);
      SetField( fieldDescription, SubL1);
      // Date de parution
      Tags := 'Télécharger</a></noscript>';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos + Length(Tags));
      BeginPos := Pos('<i>',Line);
      EndPos := Pos('</i>', Line);
      SubL1 := Copy(Line, BeginPos + 3, EndPos - 3);
      EndPos := Pos('</i>', SubL1);
      SubL1 := Copy(SubL1, 1, EndPos - 1);
      SetField( fieldActors, SubL1);
      SubL2 := Copy (SubL1, Length(SubL1) - 3, Length(SubL1));
      SetField( fieldYear, SubL2);
    end;
  end;
end;
//
// Programme principal
//
begin
      Begin
        Line := GetPage('http://www.tro-online.com/niveaux-1-1.html');
        GetNombrePage(Line,1);
        Line := GetPage(Lien);
        GetTitreNiveau(Line,1);
        Line := GetPage(Lien);
        GetLevelReferences(Line,1);
      end;
end.

