[FR] Niveaux TR - TRO-Online.com [Le-Sphinx]
Posted: 2005-11-27 10:12:02
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.