Programmation questions
Programmation questions
This topic is for those that are making scripts and want to quickly ask a technical question, beginners or not.
e.g. "how do I convert a text to number", "is there a function that does...", etc.
Ce sujet est pour ceux qui font des scripts et veulent poser une question technique rapide, débutants ou non.
par ex. "comment convertir du texte en nombre", "est-ce qu'il y a une fonction qui...", etc.
e.g. "how do I convert a text to number", "is there a function that does...", etc.
Ce sujet est pour ceux qui font des scripts et veulent poser une question technique rapide, débutants ou non.
par ex. "comment convertir du texte en nombre", "est-ce qu'il y a une fonction qui...", etc.
-
- Posts: 191
- Joined: 2005-08-11 19:27:15
- Location: Toulouse (31), France
Ce qui est dans l'aide est relativement explicite, non ?
Pour le format des paramètres, c'est comme pour GetPage : variable1=valeur1&variable2=valeur2&etc...
mais il faut encoder la chaîne avec UrlEncode avant de la passer à la fonction
Sur quel point faut-il plus d'infos ?Télécharge une page HTML (ou autre fichier texte) via la méthode POST et la retourne sous forme de chaîne. Les paramètres doivent être encodés par la fonction URLEncode.Code: Select all
function PostPage(address: string; params: string): string;
Idem que PostPage, mais permet de spécifier en plus le content-type (au lieu de 'application/x-www-form-urlencoded'), donner une adresse de "referer", forcer l'utilisation de HTTP 1.1 (au lieu de 1.0) et demander à la fonction d'encoder elle-même les paramètres.Code: Select all
function PostPage2(address: string; params: string; content: string; referer: string; forceHTTP11: Boolean; forceEncodeParams: Boolean): string;
Pour le format des paramètres, c'est comme pour GetPage : variable1=valeur1&variable2=valeur2&etc...
mais il faut encoder la chaîne avec UrlEncode avant de la passer à la fonction
Code: Select all
page := PostPage('http://www.site.com/', UrlEncode('variable1=valeur1&variable2=valeur2'));
-
- Posts: 191
- Joined: 2005-08-11 19:27:15
- Location: Toulouse (31), France
Ben "params" avec comme description : "Les paramètres doivent être encodés par la fonction URLEncode", ça ne renseigne pas exactement sur la nature des paramètres ; mais avec l'exemple on comprends mieux.
Moi je testais des trucs du genre :
Forcément ça marchait pas.
En tout cas merci pour l'exemple !!!
Sinon, comment savoir si il vaut mieux utiliser la méthode Post ou la méthode Get pour une page donnée ?
Et sinon, tu aurais un exemple d'utilisation du PostPage2 ? (avec content et referer notament ?)
Perso, je ne connais rien au protocole HTTP donc ces notions ne me "parlent" pas !
Moi je testais des trucs du genre :
Code: Select all
page := PostPage('http://www.site.com/index.php?variable1=valeur1&variable2=valeur2', UrlEncode('monparametre ??'));
En tout cas merci pour l'exemple !!!
Sinon, comment savoir si il vaut mieux utiliser la méthode Post ou la méthode Get pour une page donnée ?
Et sinon, tu aurais un exemple d'utilisation du PostPage2 ? (avec content et referer notament ?)
Perso, je ne connais rien au protocole HTTP donc ces notions ne me "parlent" pas !
A priori il n'y a pas de "il vaut mieux" : c'est l'un ou l'autre, on n'a pas le choix.
Ça dépend de comment a été fait le site. Il y a un <form... method="AAA"> sur la page de recherche du site, le AAA étant soit POST soit GET.
Le referer c'est juste l'URL de la page de recherche, pour que le site croie que la recherche vient de chez lui.
Les paramètres de postpage2 c'est vraiment pour quand on doit aller dans le détail, si un site n'accepte pas le postpage à cause d'une configuration un peu particulière.
Content c'est la description du contenu mais je ne sais pas vraiment ce qu'on peut vouloir mettre d'autre. Comme dit dans l'aide par défaut c'est "application/x-www-form-urlencoded", je suppose que dans certains cas extrèmes des sites auraient besoin d'autre chose
ForceHTTP11 c'est pour utiliser la version 1.1 du protocole pour faire le POST, vu qu'en général c'est la 1.0 qui est utilisée pour ça semle-t-il (alors que la 1.1 sert pour le reste).
ForceEncodeParams mis à True c'est pour ne pas devoir faire l'UrlEncode avant.
Ces trucs n'ont pas spécialement d'intérêt, j'avais juste rajouté la fonction avec tous les paramètres possibles, parce qu'un jour on rencontré un site un peu récalcitrant.
Ça dépend de comment a été fait le site. Il y a un <form... method="AAA"> sur la page de recherche du site, le AAA étant soit POST soit GET.
Le referer c'est juste l'URL de la page de recherche, pour que le site croie que la recherche vient de chez lui.
Les paramètres de postpage2 c'est vraiment pour quand on doit aller dans le détail, si un site n'accepte pas le postpage à cause d'une configuration un peu particulière.
Content c'est la description du contenu mais je ne sais pas vraiment ce qu'on peut vouloir mettre d'autre. Comme dit dans l'aide par défaut c'est "application/x-www-form-urlencoded", je suppose que dans certains cas extrèmes des sites auraient besoin d'autre chose
ForceHTTP11 c'est pour utiliser la version 1.1 du protocole pour faire le POST, vu qu'en général c'est la 1.0 qui est utilisée pour ça semle-t-il (alors que la 1.1 sert pour le reste).
ForceEncodeParams mis à True c'est pour ne pas devoir faire l'UrlEncode avant.
Ces trucs n'ont pas spécialement d'intérêt, j'avais juste rajouté la fonction avec tous les paramètres possibles, parce qu'un jour on rencontré un site un peu récalcitrant.
-
- Posts: 191
- Joined: 2005-08-11 19:27:15
- Location: Toulouse (31), France
ça c'est une info importante !!!antp wrote:A priori il n'y a pas de "il vaut mieux" : c'est l'un ou l'autre, on n'a pas le choix.
Ça dépend de comment a été fait le site. Il y a un <form... method="AAA"> sur la page de recherche du site, le AAA étant soit POST soit GET.
ça evite de galerer avec la mauvaise méthode !
As far as I know it is not possible to add multiple movies at once.Zoynels wrote:I have question. How can I ADD new Movie by script? Is it possible? I want to create fully automatic script, which should get all movies from page.
But there might be a trick: It should be possible to import all movie data from this page to a text file, that follows amcs' XML file format. So you should be able to import all films to your catalog, but you would need to import cover pictures in a second step then (that could be done automatically if you have a given URL for every film).
It might be even simplier if you only save title and URL to XML file and fetch all other data later .. eventually you could use or modify an existing script for this then.
-
- Posts: 191
- Joined: 2005-08-11 19:27:15
- Location: Toulouse (31), France
Bonjour Antoine.
Depuis peu j'ai migré sur Linux et bien évidemment je me suis étonné du peu d'avancement des différents projets de portage d'AMC vers cet OS (xAMC, MovieFly...).
Le principal problème semble venir du moteur de script.
Peux-tu nous expliquer dans quelle mesure il serait possible de réutiliser le moteur de script existant sur un autre système (linux) ou dans un autre langage de programmation (je pense à une importation dans une appli en Ruby par exemple).
Au pire, est-ce qu'il serait facile de le ré-écrire en totalité ?
Bref, raconte-nous comme tu as créé ce moteur que tout le monde t'envie !!
Depuis peu j'ai migré sur Linux et bien évidemment je me suis étonné du peu d'avancement des différents projets de portage d'AMC vers cet OS (xAMC, MovieFly...).
Le principal problème semble venir du moteur de script.
Peux-tu nous expliquer dans quelle mesure il serait possible de réutiliser le moteur de script existant sur un autre système (linux) ou dans un autre langage de programmation (je pense à une importation dans une appli en Ruby par exemple).
Au pire, est-ce qu'il serait facile de le ré-écrire en totalité ?
Bref, raconte-nous comme tu as créé ce moteur que tout le monde t'envie !!
Le moteur de script ce n'est pas moi qui l'ai fait, j'ai utilisé un truc tout fait
A priori ça n'est pas facile à réutiliser du fait que ce soit fait en Delphi et non en C. Une solution c'est de tenter de compiler le moteur de script dans un programme/module fait avec Kylix ou FreePascal/Lazarus pour ensuite l'utiliser dans un projet fait avec un langage quelconque. L'autre solution étant de réécrire un moteur de script, mais bon, c'est du boulot.
A priori ça n'est pas facile à réutiliser du fait que ce soit fait en Delphi et non en C. Une solution c'est de tenter de compiler le moteur de script dans un programme/module fait avec Kylix ou FreePascal/Lazarus pour ensuite l'utiliser dans un projet fait avec un langage quelconque. L'autre solution étant de réécrire un moteur de script, mais bon, c'est du boulot.
Le gros problème de ces ports (xAMC et MovieFly) c'est que apparentement ils utilisent un autre langage : Python.
Mais on peut faire le port sans changer presque le code, en compilant avec Lazarus dans la place de Delphi. Il y à déjà des moteurs d'script pour Lazarus en Linux.
http://wiki.lazarus.freepascal.org/inde ... cal_Script
Il faut seulement changer les controls qui ne soient pas présents dans Lazarus (basiquement les third-party controls) pour des standard Delphi/Lazarus controls.
Mais on peut faire le port sans changer presque le code, en compilant avec Lazarus dans la place de Delphi. Il y à déjà des moteurs d'script pour Lazarus en Linux.
http://wiki.lazarus.freepascal.org/inde ... cal_Script
Il faut seulement changer les controls qui ne soient pas présents dans Lazarus (basiquement les third-party controls) pour des standard Delphi/Lazarus controls.
-
- Posts: 863
- Joined: 2006-08-31 23:58:18
supprimer des "espaces"
j'ai un problème
Je récupère une valeur entre 2 balises comme par exemple :
Jusque là pas de soucis, sauf que je me retrouve dans l'impossibilité de supprimer ce qui semble être des espaces, tabulations ou retour à la ligne, mais qui n'en sont pas. Ce qui fait que je me retrouve, après nettoyage des balises, avec une valeur string de type :
(les traits sont là pour montrer ce que je récupère dans le champ d'AMC)
J'ai tout essayé pour supprimer ces "espaces". StringReplace de plusieurs Caractères spéciaux, Fonction Trim etc ... Rien n'y fait. Donc impossible de formater le texte comme je veux.
Dans l'éditeur de script lorsqu'on visualise la chaine, ces "espaces" apparaissent sous la forme de carrés.
Une idée pour supprimer ces "trucs" ?
Je récupère une valeur entre 2 balises comme par exemple :
Code: Select all
<td colspan="3">
Academy of Motion Picture Arts and Sciences (Oscars) </td>
Code: Select all
|
Academy of Motion Picture Arts and Sciences (Oscars) |
J'ai tout essayé pour supprimer ces "espaces". StringReplace de plusieurs Caractères spéciaux, Fonction Trim etc ... Rien n'y fait. Donc impossible de formater le texte comme je veux.
Dans l'éditeur de script lorsqu'on visualise la chaine, ces "espaces" apparaissent sous la forme de carrés.
Une idée pour supprimer ces "trucs" ?
I guess you are talking about allmovie.com
I did a short test using
and it works for me. But maybe it's different for other movies, so please give an example movie if it still does not work using these StringReplace settings. Take care that you have latest StringUtils1 version, as there was a minor update on FullTrim function last month, although still named v.6
I did a short test using
Code: Select all
program NewScript;
uses
stringutils1;
var
page, value: string;
begin
page := GetPage('http://www.allmovie.com/work/transformers-322407/awards');
value := textbetween(page, '<td colspan="3">', '</td>');
value := StringReplace(value, #9, '');
value := StringReplace(value, #10, '');
value := StringReplace(value, #13, '');
value := FullTrim(value);
setfield(fielddescription, value);
end.
-
- Posts: 863
- Joined: 2006-08-31 23:58:18
Hello bad4u
You guess right about allmovie !!
This FullTrim function is amazing
I didn't know, there was such "awesome" function ... shame on me.
Now i know how to delete each one of these characteres ... I learn everyday.
It's going to be very helpful to debug the "award" part of the All Movie Guide script.
Thanks a lot bad4u You are good4us
I made the updating of StringUtils1.pas ... thanks for that too.
You guess right about allmovie !!
This FullTrim function is amazing
I didn't know, there was such "awesome" function ... shame on me.
Now i know how to delete each one of these characteres ... I learn everyday.
It's going to be very helpful to debug the "award" part of the All Movie Guide script.
Thanks a lot bad4u You are good4us
I made the updating of StringUtils1.pas ... thanks for that too.
Utilisation d'un tsearchrec
Bonjour,
Est il possible d'utiliser dans les scripts un tsearchrec ?
Il ne le reconnait pas et je ne trouve pas de doc sur les fonctions disponibles dans le moteur de script.
A+
FB
Est il possible d'utiliser dans les scripts un tsearchrec ?
Il ne le reconnait pas et je ne trouve pas de doc sur les fonctions disponibles dans le moteur de script.
A+
FB