Page 1 of 1

[FR] Niveaux TR - TRO-Online.com [Le-Sphinx]

Posted: 2005-11-27 10:12:02
by Le-Sphinx
Voici un script maison qui recipère, sur le site de www.TRO-Online.com, les Information sur les niveaux supplémentaires pour l'éditeur de niveaux qui peuvent être téléchargés sur le site. Ceci afin d'avoir une base de donnée complete sur les niveaux de Tomb Raider.

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.



Posted: 2005-11-27 11:06:52
by antp
Ça aurait plutôt sa place sur la section "mods", non ? (je peux le déplacer s'il le faut)

Posted: 2005-11-27 12:46:15
by Le-Sphinx
comme tu veux, j'avais mis ça ici comme c'est une base de donner.

mais si ça a plus sa place ailleurs, pas de probleme ^^

Posted: 2005-11-27 14:07:37
by antp
Ce qui concerne des choses autres que les films sont sur la section "mods" ;)

Posted: 2006-08-22 08:24:24
by PsyKos
Bonjour, ce script est vraiment très bien mais une chose dommage c'est qu'on ne puisse pas récupérer les informations pour les aventures complètes ! Une petite mise à jour ? ;) Merci en tout les cas.

Posted: 2006-08-22 09:26:46
by Le-Sphinx
c'est prévu aussi, je mettrais ceci prochainement ^^

Posted: 2006-08-27 14:53:38
by PsyKos
OK, je l'attends alors avec impatience. Merci en tout les cas.

Re: [FR] Niveaux TR - TRO-Online.com [Le-Sphinx]

Posted: 2006-10-15 08:21:51
by Le-Sphinx
Voici un script maison qui récupère, sur le site de www.TRO-Online.com, les Information sur les Aventures Complête pour l'éditeur de niveaux qui peuvent être téléchargées sur le site. Ceci afin d'avoir une base de donnée complete sur les Aventures de Tomb Raider.

Code: Select all


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

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

[Infos]
Authors=Le-Sphinx
Title=[Game] - Tomb-Raider Aventure
Description=Récupération d'information sur les Aventures de Tomb Raider Online
Site=http://www.tro-online.com
Language=FR
Version=15102006
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 aventures 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
  UrlAventure: 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;

function HTMLRemove(Value: String): String;
begin
HTMLDecode(Value);
HTMLRemoveTags(Value);
Value := Trim(Value);
result := Value;
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('Les Aventures :', '');
    end;
    Tags := 'Aventures inédites';
    if Pos(Tags, Line) > 0 then
    begin
      // Page correct
      // Efface le debut des données non utilisées.
      Tags := 'Choisissez ce qui vous intéresse :';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos-1 );

      while Pos('french.jpg', Line) > 0 do
      begin
      Tags := 'french.jpg';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos-250 );
      BeginPos := Pos('<u>', Line);
      EndPos := Pos(')', Line);
      NumeroNiveau := Copy(Line, BeginPos + 3 , EndPos - BeginPos - 3);

      BeginPos := Pos(')', Line);
      EndPos := Pos('</u>', Line);
      Caption := Copy(Line, BeginPos + 1 , EndPos - BeginPos - 1);

      Tags := 'french.jpg';
      BeginPos := Pos(Tags, Line);
      Delete(Line, 1, BeginPos );
      BeginPos := Pos('<a href="', Line);
      EndPos := Pos('.html"', Line);
      Url := Copy(Line, BeginPos + 9 , EndPos - BeginPos - 4);

      //ShowMessage(Caption);
      PickTreeAdd(NumeroNiveau + ' - ' + Caption,  NumeroNiveau + ' - ' + Url);
      end;
    end;

    // Affiche la fenetre pour le choix de la page
    if PickTreeExec(Address) then
    begin
      UrlAventure := Address;
      Tags := 'http://';
      BeginPos := Pos(Tags, UrlAventure);
      Delete(UrlAventure, 1, BeginPos-1 );

    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

  // Efface le debut des données non utilisées.
  Tags := '<!-- TEXTE DE LA PAGE  -->';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos-1 );
  // Récupération du Titre de l'Aventure
  BeginPos := Pos('<i>', Line);
  EndPos := Pos('</i>', Line);
  SubL1 := Copy(Line, BeginPos + 3 , EndPos - BeginPos - 3);
  SetField( fieldOriginalTitle, SubL1);
  SetField( fieldTranslatedTitle, SubL1);

  // URL de l'Aventure
  SetField( fieldURL, UrlAventure);

  // Récupération de l'image
  Tags := '</i>';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos-1 );
  BeginPos := Pos('src="', Line);
  EndPos := Pos('.jpg"', Line);
  SubL1 := Copy(Line, BeginPos + 5 , EndPos - BeginPos - 1);
  GetPicture(SubL1);

  // Résumé
  Tags := '.jpg';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos );
  Tags := 'Verda';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos-4 );
  BeginPos := Pos('.jpg"', Line);
  EndPos := Pos('</table>', Line);
  SubL1 := Copy(Line, 1 , EndPos);
  while Pos('"Verdana"', SubL1) > 0 do
  begin
    Tags := '"Verdana"';
    BeginPos := Pos(Tags, SubL1);
    Delete(SubL1, 1, BeginPos+7 );
    BeginPos := Pos('"><b>', SubL1);
    EndPos := Pos('</b>', SubL1);
    SubL2 := Copy(SubL1, BeginPos + 5 , EndPos - BeginPos - 5);
  end;
  StringReplace(SubL2, '<br>', 'fr');
  SubL2 := HTMLRemove(SubL2);
  SetField( fieldDescription, SubL2);

  // Récupération du Nom de l'auteur du niveau
  Tags := 'propriété intégrale de leur auteur';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos + Length(Tags));
  Tags := '"face="Verda';
  BeginPos := Pos(Tags, Line);
  Delete(Line, 1, BeginPos + Length(Tags));
  BeginPos := Pos('na"><b>', Line);
  EndPos := Pos('</b>', Line);
  SubL1 := Copy(Line, BeginPos + 7 , EndPos - BeginPos - 7);
  //HTMLDecode(SubL1);
  StringReplace(SubL1, '<br>', '');
  UTF8Encode(SubL1);

  SetField( fieldProducer, SubL1);

end;




//
// Programme principal
//
begin
      Begin
        Line := GetPage('http://www.tro-online.com/aventures.html');
        GetTitreNiveau(Line,1);
        Line := GetPage(UrlAventure);
        GetLevelReferences(Line,1);
      end;
end.



Posted: 2006-10-18 17:46:08
by PsyKos
Merci à toi. Bon boulot. Je l'attendais avec impatience. :grinking: