Page 1 of 1

[FR] problème avec GetPage

Posted: 2005-01-15 21:05:35
by bobo
alors voilà le problème :

lorsque que je fais GatPage sur une adresse assez space d'un site (ya un sid par exemple) la page qui est lu n'est pas la bonne. Il s'agit à tous les coups de la page d'accueil du site.

Mais lorsque j'ouvre cette même page avec le browser (avec Launch) juste avant de faire le GetPage alors là ça marche...

je vais mettre un exemple de script dans le prochain message (attention il s'agit d'un site x pour changer :hihi: )

Posted: 2005-01-15 21:10:50
by bobo

Code: Select all

// GETINFO SCRIPTING
// cyberdvdx (FR) - Recherche de films - by Bobo

program CyberDvdX;

ConfirmTitre = 1;
    { 1: Demande le titre avant de lancer le script
      2: Ne demande pas le titre avant de lancer le script, 0 : Ne demande aucune comfirmation, 3 : Aucune Confirmation Premier Film si multiples resultats}
  // Pour récupérer ou non un champs
  TitreTraduitConst = False;
  TitreOrignalConst = True;
  CategorieConst = True;
  AdresseWebConst = True;
  SynopsisConst = True;
  
var
  url_recherche, MovieName, Adresse, AdressePlus, La_liste, LaAllocine_FR, LaPremiereGrandeImage, Reponse, AdresseSuivant, AdressePrecedent, LePremierFilmAdresse, strTemp, aucunAmazon : string;
  numPage, numPageG, numPageR, grandeTaille, premiereTaille, compteur, premiereExecution, numTemp : Integer;

//------------------------------------------------------------------------------
// ANALYSE DE LA PAGE D'ACCUEIL
//------------------------------------------------------------------------------
function AnalyzePageAccueil(url_accueil : String) : string;
var
  debut, fin : Integer;
  Page: TStringList;
  temp, Line, Line2 : String;

begin
  Page := TStringList.Create;
  Page.Text := GetPage(url_accueil);

  debut := pos('<FORM method="GET" action="/GSWeb/microcom.gswa', Page.Text)+10;
  Line := copy(Page.Text,debut,length(Page.Text)-debut+1);
  
  debut := pos('<FORM method="GET" action="/GSWeb/microcom.gswa', Line)+10;
  Line := copy(Line,debut,length(Line)-debut+1);
  
  debut := pos('<FORM method="GET" action="/GSWeb/microcom.gswa', Line);
  Line := copy(Line,debut,400);

  debut := pos('/', Line);
  fin := pos('">', Line);
  Line := copy(Line,debut,fin-debut);
  result := 'http://www.cyberdvdx.com'+Line+'?1.1.3.3.11.7.1.1='+MovieName+'&SearchType=title&1.1.3.3.11.7.1.14.x=51&1.1.3.3.11.7.1.14.y=12';
end;


procedure AnalyzePage(Address: string);
var
  Page: TStringList;
  LineNr: Integer;
  Line: string;
  BeginPos, EndPos : Integer;
begin

  Page := TStringList.Create;

  Launch(Address, ''); // si on enlève ça, ça ne marche plus :(
  Page.Text := GetPage(Address);

  // 1) pas de résultat
  if (pos('<b>Résultat de la recherche</b>',Page.Text) <> 0) and (pos('<!-- Small film -->', Page.Text) = 0) then
  begin
  if (ConfirmTitre = 1) or (ConfirmTitre = 2) then
  begin
    showmessage('Aucun film trouvé pour : '+MovieName);
    exit;
  end else
  begin
    SetField(fieldURL, 'cyberdvdx : aucun résultat');
    exit;
  end;
  end;

  // 2) résultat unique et donc la page de résulat est celle du film
  if pos('<b>Résultat de la recherche</b>',Page.Text) = 0 then
  begin
    showmessage('résultat unique');
  exit;
  end;
  
  // 3) sinon
  showmessage('résultat multiple');
  exit;

end;

//------------------------------------------------------------------------------
// NETTOIE LE TITRE DU FICHIER POUR AVOIR LE TITRE DE FILM
//------------------------------------------------------------------------------

function cleanTitle(title : String) : string;
var
  i,j, fin : Integer;
  temp : String;

begin
  title := AnsiUpperCase(title);

  if title <> '' then
  begin
// Nettoie les tags fichiers, merci Atmosfear pour les tags
  i:=pos('.DVD',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.DIVX',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.FREN',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.GERM',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.INT',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.LIM',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.PROP',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.REPACK',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.SUBB',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.UNSUB',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.WS',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.XVID',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.AC3',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;
  i:=pos('.UNRAT',title);
  if i <> 0 then
  begin
    title := copy(title,1,i-1);
  end;

   title := StringReplace(title, '.', ' ');
   title := StringReplace(title, ',', ' ');
   title := StringReplace(title, ':', '');
   title := StringReplace(title, '-', '');
   title := StringReplace(title, '  ', ' ');

   i := 0;
// Nettoie les tags de team
   if (pos('(',title) <> 0) then
   begin
     i := pos('(',title);
     temp := copy(title,0,i-1);
     j := pos(')',title);
     fin := Length(title);
     title := temp + copy(title,j+1,fin);
   end;

   if (pos('[',title) <> 0) then
   begin
     i := pos('[',title);
     temp := copy(title,1,i-1);
     j := pos(']',title);
     fin := Length(title);
     title := temp + copy(title,j+1,fin);
   end;

   title := AnsiLowerCase(title);
   title := AnsiUpFirstLetter(title);
   title := AnsiMixedCase(title,' -');
  end;
   result := title;
end;


//------------------------------------------------------------------------------
// PROGRAMME PRINCIPAL
//------------------------------------------------------------------------------
begin
  if CheckVersion(3,4,0) then
  begin
    numPageR := 1;
    MovieName := GetField(fieldTranslatedTitle);
    if MovieName = '' then
      MovieName := GetField(fieldOriginalTitle);
    MovieName := cleanTitle(MovieName);
    if (ConfirmTitre = 1) then
    begin
      if Input('DVD Maxxx', 'Entrez le titre du film :', MovieName) then
      begin
        url_recherche := AnalyzePageAccueil('http://www.cyberdvdx.com/GSWeb/microcom.gswa');
        AnalyzePage(url_recherche);
      end;
    end;
  end;
end;

Posted: 2005-01-15 21:18:04
by bobo
exemple d'execution du script :

avee la titre 'blondes' on doit obtenir un message 'résultats multiples' alors que si on supprime la ligne Launch(Address, ''); alors ça bug (on a le message 'résultat unique')

Posted: 2005-01-15 23:00:26
by antp
C'est très étrange...
À première vue je ne sais pas ce qui cause ça. Et je n'ai même pas une idée de pourquoi ça arrive.
Les URL de ce site sont vraiment bizarres.

Posted: 2005-01-15 23:03:12
by bobo
en gros, jsuis obligé de laisser le Launch ? ya pas moyen de faire un kill juste après le Launch ?

Posted: 2005-01-15 23:33:38
by antp
Pour le moment, non, pas le choix.
Dans le futur j'essaierai d'ajouter la possibilité de passer par IE (sans l'afficher, juste pour passer les proxy et les serveurs étranges) pour downloader les pages, ça permettra peut-être de résoudre ce genre de cas.