Cet article vous guidera pas à pas pour installer et faire vos premiers script de bot pour éditer camptocamp. Il n'est pas nécessaire d'avoir de compétences en informatique.
Règles
L'utilisation d'un bot sur le topoguide pour faire des éditions semi-automatiques est autorisée sur camptocamp.org, tant que les règles suivantes sont respectées :
- Le bot doit utiliser un compte camptocamp différent de celui de son dresseur. Le nom du compte du dresseur doit être présent sur la page personnelle du bot, et vice-versa. Pour ne pas nuire à la maintenance et le suivi des modifications, il est formellement interdit de contribuer avec un système automatisé, ou semi automatisé avec son compte principal.
- Le bot doit être déclaré, et toutes ses modifications doivent être annoncées sur le forum, et approuvées par les autres contributeurs.
- Le bot doit être sous la surveillance de son dresseur lorsqu'il édite le topoguide. Son dresseur est pleinement responsable de toutes les contributions faites par son bot. Il ne doit faire des modifications de texte que dans les langues parfaitement maîtrisées par son dresseur (voir à ce sujet la discussion sur le forum).
Liste des robots existants
- CaBot (contributions), dresseur : AntoineM ;
- rabot (contributions), dresseur : CharlesB ;
- robot.topoguide (contributions), dresseur : CharlesB, robot avec les droits de modération, pour effectuer les tâches qui nécessitent ces droits.
- Droit dans ses bot', dresseur : Martin Gerbaux, robot destiné à effectuer (entre autres) des actions d'administration du topoguide sur les aspects réglementaires (affichage d’arrêtés, interdictions, …) ou de communication des gestionnaires d'espaces naturels ou d'activités de pleine nature.
- botopo (contributions), dresseur : bk .
Installation
Python
La librairie de bot est codée en python, un langage connu pour sa facilité d'utilisation pour les débutants. Vous trouverez ici de quoi l'installer sur votre ordinateur : https://www.python.org/
Attention, au début de l'installation, il faut cocher la case Add Python 3.6 to PATH.
Campbot
Campbot
est la libraire de bot pour camptocamp.org. Pour l'installer, tapez cmd
dans la barre de recherche Windows. Dans l'invite de commande, tapez la commande suivante :
pip install campbot -U
L'option -U sert à mettre à jour la librairie, si celle-ci est déjà installée.
Faire tourner son premier bot
Créer un compte bot
Créez simplement un compte camptocamp, et indiquez sur sa page que c'est un bot, ainsi que l'adresse de votre compte. Choisissez également un nom qui contient le mot bot, vous trouverez une bonne source d'inspiration sur Wikipédia.
Indiquez également son existence sur votre page utilisateur. Pour la suite de cette exemple, nous partirons du principe que l'identifiant de votre bot est patate
, que le mot de passe du compte est douce
, et que l'identifiant numérique de ce compte est 66666666
.
Premier bot.
Dans cmd.exe
, exécutez cette ligne (vous pouvez modifier l'URL pour nettoyer d'autres documents) :
campbot clean https://www.camptocamp.org/routes#w=107702 --login=patate --password=douce
Le bot va nettoyer tous les itinéraires rattachés au point de passage 107702. Pour chaque itinéraire, il vous montrera les modifications, et vous demandera confirmation (pressez y
puis entrée
).
Et voilà! Mais lisez avec attention le paragraphe suivant!
Précautions d'usage
Ceci est le paragraphe le plus important de toute cette page!
- Le bot ne fera pas plus d'une requête toutes les 3 secondes. Également, il vous montrera la modification qu'il a faite, et vous demandera confirmation avant toute sauvegarde de document. Néanmoins, cela peut aller très vite, gardez toujours un œil sur la fenêtre d’exécution.
- Gardez également ouvert la page whatsnew : https://www.camptocamp.org/whatsnew#u=6666666
- Et en cas de souci, le moyen le plus simple pour tout arrêter est de fermer la fenêtre d’exécution.
- Et gardez bien à l'esprit que vous êtes responsable de toutes les actions de votre bot.
Bots avancés
La commande précédente ne demande aucune ligne de code. Néanmoins, les fonctionnalités les plus puissantes vous demandent de mettre un peu la main à la pâte. En premier lieu, munissez vous d'un éditeur de texte.
Un éditeur de texte
Les scripts python sont de simples fichiers textes avec l'extension .py
. Vous pouvez utiliser Notepad pour les écrire, mais c'est très vite limité. Un bon compromis est Notepad++, gratuit, simple et efficace.
Ensuite, créez un simple fichier nommé test.py
, puis:
- clic droit sur le fichier dans votre explorateur de fichiers,
- ouvrir avec ,
- choisir le programme par défaut,
- et choisissez Notepad++ en choisissant l'option "toujours ouvrir avec ce programme".
Premier script tout simple
Pour tout vos tests, utilisez le site de demo : https://www.demov6.camptocamp.org (login/password=c2corg). Les exemples qui suivent contiennent l'argument use_demo=True
qui permet de faire pointer le bot sur le site de demo. Une fois vos essais concluant, vous pouvez créer un compte sur le site normal, et ne plus utiliser cet argument.
Pour ce test, nous allons récupérer un itinéraire, et l'afficher. Il est inutile de se créer un compte pour cela.
Créez un répertoire, dans lequel vous créerez deux fichiers :
hello.py :
from campbot import CampBot
bot = CampBot(use_demo=True)
print(bot.wiki.get_route(135496))
run_hello.cmd :
python hello.py
PAUSE
Ensuite, double-cliquez sur run_hello.cmd
, vous devriez obtenir le résultat suivant :
C:\test_folder > python hello.py
{'activities': ['mountain_climbing', 'snow_ice_mixed'], .... (un bon gros paquet de données)
C:\test_folder > PAUSE
Press any key to continue . . .
Et voilà!
Vous trouverez des petits scripts d'exemple dans la documentation.
Messages d'erreur courants
'pip' is not recognized as an internal or external command
Python est mal installé, essayez de le réinstaller, en n'oubliant pas la case à cocher Add Python.... Si cela ne fonctionne toujours pas, entrez ceci dans l'invite de commande, puis demandez de l'aide sur le forum en copiant-collant le résultat :
echo %PATH%
Liens utiles
- Code source : Github. Toute aide est la bienvenue.
- Documentation : ReadTheDocs. Toute aide est également la bienvenue
Commentaires

Normalement, ça coince pas.
OK, je sors.

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

Clic droit > Open with > et une petite fenêtre s’ouvre qui dit : How do you want to open this file - avec la proposition : Keep using Python. Sous More Apps, il n’y a pas Notepad++.
(parmi les options après le clic droit il y a bien : Edit wih Notepad++, mais c’est alors le fichier test.py qui s’ouvre)

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

Microsoft Windows [Version 10.0.16299.431]
© 2017 Microsoft Corporation. All rights reserved.
C:\Users\Borut>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Users\Borut\AppData\Local\Microsoft\WindowsApps;
C:\Users\Borut>

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

Oui.
Je fais maintenant un restart de l’ordi.

C’est tout bon !
Je te remercie. Je continuerai cette expédition ce soir tard après le boulot, ou demain dans la journée.
A+
Borut

Premier test !
J’obtiens ceci :
C:\Users\Borut\Desktop>python hello.py
{'activities': ['mountain_climbing', 'snow_ice_mixed'], .... (un bon gros paquet de données)
C:\Users\Borut\Desktop>PAUSE
Press any key to continue . . .
C’est bon ou j’ai foiré le repertoire ?
EDIT :
Je vois maintenant que le début se transforme (il est entre temps aussi revenu à l’état ci-dessus). En ce moment :
C:\Users\Borut\Desktop>python hello.py
{'exposition_rock_rating': None, 'areas': [{'locales': [{'lang': 'ca', 'title': 'Xina', 'version': 1},
Quid du manque de stabilité ?

Bien que nous soyons sur le forum public, avant de passer à l’étape suivante (créer un compte bot), voir Camptocamp.org, j’aimerai notifier @Association et @Modo_Topo_FR.
GO ?

Pour créer le compte bot, est-il nécessaire d’utiliser une adresse mail différente de celle du dresseur ?

Bonjour !
Quand je passe à la phase :
Faire un premier test d’écriture
J’obtiens ceci :
C:\Users\Borut\Desktop>python test.py
Traceback (most recent call last):
File "test.py", line 4, in <module>
bot.login("botopo", "motdepasse")
File "C:\Users\Borut\AppData\Local\Programs\Python\Python36-32\lib\site-packages\campbot\core.py", line 283, in login
res = self.wiki.post("/users/login", {"username": login, "password": password, "discourse": True})
File "C:\Users\Borut\AppData\Local\Programs\Python\Python36-32\lib\site-packages\campbot\core.py", line 83, in post
res.raise_for_status()
File "C:\Users\Borut\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.camptocamp.org/users/login
C:\Users\Borut\Desktop>PAUSE
Press any key to continue . . .
Je vois « Error » dans le message. Quid ?
D’autre part, dès que je « Press any key », la page disparait, d’un coup (!?).
(ci-dessus j’ai mis « motdepasse » à la place du vrai mot de passe)

Eh non j’ai mis le nom car dans l’article il y a :
« nous partirons du principe que votre bot s’appelle patate, »
L’identifiant est différent; ça doit être la source de l’erreur. J’obtiens maintenant :
C:\Users\Borut\Desktop>python test.py
Traceback (most recent call last):
File "test.py", line 6, in <module>
page = bot.wiki.get_profile(1001061)
AttributeError: 'WikiBot' object has no attribute 'get_profile'
C:\Users\Borut\Desktop>PAUSE
Press any key to continue . . .
Et est-ce normal que la page disparaisse quand j’appuie sur une touche ? Cela fait pareil pour la page Everest (l’essai d’hier).

C:\Users\Borut\Desktop>python test.py
Traceback (most recent call last):
File "test.py", line 8, in <module>
page.save(comment = "First bot test!")
TypeError: save() got an unexpected keyword argument 'comment'
C:\Users\Borut\Desktop>PAUSE
Press any key to continue . . .
Je pars au boulot et je continuerai plus tard.
Merci pour ta patience et ton temps !
A+
Borut

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)

Bonsoir !
Il faut que je reprenne à quelle phase ?

(message supprimé par son auteur, sera supprimé automatiquement dans 100 heures à moins qu’il ne soit signalé)