[FR] problème avec GetPage

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
bobo
Posts: 11
Joined: 2005-01-15 19:25:48

[FR] problème avec GetPage

Post 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: )
bobo
Posts: 11
Joined: 2005-01-15 19:25:48

Post 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;
Last edited by bobo on 2005-01-15 21:19:58, edited 1 time in total.
bobo
Posts: 11
Joined: 2005-01-15 19:25:48

Post 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')
antp
Site Admin
Posts: 9639
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post 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.
bobo
Posts: 11
Joined: 2005-01-15 19:25:48

Post by bobo »

en gros, jsuis obligé de laisser le Launch ? ya pas moyen de faire un kill juste après le Launch ?
antp
Site Admin
Posts: 9639
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post 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.
Post Reply