Outil mapillary_download pour récupérer ses photos depuis Mapillary

Bonjour tout le monde,

J’ai le plaisir de vous présenter un script qui permet de récupérer les photos qu’on aurait envoyées sur Mapillary, pour pouvoir ensuite les verser sur Panoramax.

Les photos récupérées sont de même résolution que les originaux, avec une compression un peu plus forte, et floutées.
Ces photos sont géolocalisées, orientées, et horodatées, mais une partie des informations n’est plus disponible, comme par exemple le modèle et le fabricant de la caméra.

Ce dont le script a besoin en entrée, c’est un (ou des) identifiant de séquence, ou de photo, et ensuite l’intégralité des photos de la séquence est téléchargée.

Voici un exemple de séquences que j’ai récupérées et transférées dans Panoramax :
Caméra avant 2020-10-23

Installation :

Pour faciliter l’utilisation du script, j’ai créé des versions directement exécutables.

Ceux qui souhaitent utiliser les versions non compilées peuvent le faire en clonant le dépot GitHub - Stefal/mapillary_download: simple code to download images in a mapillary sequence

Utilisation :

mapillary_download 'mon-token-mapillary' --sequence_ids xxxxxx

Créer un token Mapillary :

Le préalable à toute récupération est de se créer un “token” (jeton en français). Pour ce faire :

Récupérer un identifiant de séquence :

  • Aller sur la carte https://mapillary.com/app
  • Cliquer sur une des photos de la séquence qui nous intéresse
  • Cliquer sur le bouton “Image option” en bas à droite
  • Cliquer sur le bouton “advanced”
  • Un clic sur la valeur de “Sequence Key” va copier cet identifiant dans le presse-papier

Maintenant, je peux exécuter le script de cette façon :
mapillary_download 'MLY|12345678912345|52fgg6221er14563segdfa123cf99' --sequence_ids cahibnfwjkch0o9xk2ucki 14cjcbisy4br2w7cjbuzcm
(ce token n’existe pas, mais les séquences oui)

Pour aller plus loin

Le script propose d’autres options, comme le choix du dossier de destination, un nombre maximal de photo à télécharger, etc… Pour ça, faites mapillary_download --help ou rendez vous sur le readme pour en savoir plus.

Recommandations

  • Ce script permet de récupérer n’importe quelle séquence. Si le but est de transférer les photos sur Panoramax, limitez-vous aux photos dont vous êtes l’auteur.
  • Puisque ce script permet potentiellement de récupérer toutes les photos disponibles sur Mapillary, je pense qu’il est préférable de ne pas en faire trop de publicité pour le moment. Il utilise quelques appels qui ne sont pas documentés dans l’Api et ce serait dommage que Meta les bloque.
4 Likes

Je le remet en gras car c’est très important !

2 Likes

Je viens de faire un premier essai. Je suis parvenu à récupérer une première séquence. :sweat_smile:

Je fais comment pour retrouver l’identifiant de toutes mes séquences sur une période donnée? Autrement qu’en me baladant sur le site web et en trouvant chaque séquence manuellement?

J’ai trouvé un script qui permets de faire cela à l’échelle d’un carré et des coordonnées… mais pas de filtre par utilisateur.

Bonjour, et merci pour ce script.
Je l’ai utilisé et il permet bien de récupérer ses photos, mais malheureusement mes photos de GoPro Max de 2022 ne sont pas réutilisables ainsi car elle sont ‘mise à plat’ après leur passage chez Mapillary et la réinjection telle quelles dans panoramax fait voir un format 360 dans un cadre format 4/3. j’ai du les supprimer après tests. Le reste des données exif est pourtant bien correct.

Dommage :unamused:

A par si vous connaissez une moulinette pour leur redonner leur bon format, celles ci resterons inexploitables. je les mets de coté sur un disque en attendant mieux …

.

Normalement les photos 360 sont gérées. Tu peux m’indiquer de quelle séquence il s’agit pour que je teste de mon côté ?

Bonjour,
j’ai laissé (temporairement) celles du 9 juillet 2023 en ligne ici pour analyse:
respectivement 429,500 et 281 images…

les liens panoramax du résultat après upload:
https://panoramax.openstreetmap.fr/sequence/4f69e57f-549b-405f-bf7f-6b6760d14e71#focus=map&map=20/47.9245744/1.9200868&pic=0e0ab78e-c2fb-4ca4-aae7-0827a081138e&speed=250&xyz=207.00/0.00/30

https://panoramax.openstreetmap.fr/sequence/a4d81289-55f0-41b6-aa3a-32f183eb54f8#focus=map&map=20/47.9008041/1.8882112&pic=98fa500f-b914-480f-b42b-b097501f7042&speed=250&xyz=159.00/0.00/30

https://panoramax.openstreetmap.fr/sequence/10f50b81-44e4-4e6d-9e10-e3fdc4fcc804#focus=map&map=20/47.8989382/1.9041253&pic=210f15ea-9b91-482d-9a93-cfca6bd7dc19&speed=250&xyz=0.00/0.00/30

les clefs des séquences ‘originales’ de mapillary sont dans l’ordre :

Wl1CaJxy9XmwOpMZtiVekU
0AZlwISQLTdqjhxseRzN1y
l6XqDpfNtdMvA2bGWPJnki

Voilà.

Merci pour les identifiants de séquence, ça m’a permis de voir que j’avais oublié d’ajouter les tags correspondant à une image 360° lorsque c’était nécessaire. J’ai fait les corrections nécessaires :

Version 1.1

  • Correction des tags manquants pour les images 360°
1 Like

Autre point : Sur la première séquence (Wl1CaJxy9XmwOpMZtiVekU) ta caméra devait être inversée, il faut que tu modifies l’orientation des photos par exemple dans Josm avant de les envoyer sur Mapillary.
Pour ça,

  • clic droit sur le calque image → Editer la séquence

La, tu fais pointer vers l’image suivante, avec un offset de 180°.
Un fois que c’est appliqué, tu peux vérifier que lorsque tu tournes dans l’image, la flèche pointe dans la bonne direction. Ensuite tu enregistres cette nouvelle direction avec

  • clic droite sur la calque → Ecrire les métadonnées
1 Like

Bonjour, merci pour le correctif.
ça fonctionne:
voici le lien correspondant à la nouvelle séquence correspondant à : l6XqDpfNtdMvA2bGWPJnki

https://panoramax.openstreetmap.fr/sequence/2e87f258-bd74-445c-bc0f-961f499ecda6#focus=map&map=1.03/12.5/31.7&pic=2c211287-3e55-434e-a597-8ab39b6a0d20&speed=250&xyz=359.81/8.96/30

Je refais mes imports dès que possible avec cette version 1.1.

Edit du 9 oct : ce matin un total de 2407 images 360° de la journée du 4 juin 2022 récupérées et transférées sans problèmes avec cette version 1.1 via chrome et son interface graphique en un peu plus d’une demi-heure ‘à la main’ :ok_hand:

c’est parti , je remonte le fil au fur et a mesure… #opérationmigration :wink:

2 Likes

Bon, concernant ce point, je reste perplexe.

Je m’explique: il s’agit de la même journée de capture et d’un même trajet pour les 3 séquences.
Il est donc impossible que la caméra se ‘retourne’ en cours de route physiquement, ni même qu’un réglage quelquonque s’il existait se modifie dans l’application GoPro puisque la seul manipulation effectuée pendant le trajet est start/stop …

Donc c’est soit tout à l’envers, sois tout dans le bon sens.
Mais je prend soin de vérifier a chaque départ de trajet que la vue affichée est bien en face.
Donc normalement ça devrais être bon.
Sauf cas inexplicable que l’on rencontre souvent en informatique :crazy_face:

Si je prends comme exemple la séquence https://panoramax.openstreetmap.fr/sequence/2e87f258-bd74-445c-bc0f-961f499ecda6#focus=map&map=1.03/10/31.7&pic=2c211287-3e55-434e-a597-8ab39b6a0d20&speed=250&xyz=359.81/8.96/30
L’orientation des photos est à 180° de la réalité : Sur la première photo, on aperçoit, droit devant, un pont. Ce pont “Gorges V” est situé au Sud de ta position, alors que la photo pointe vers le Nord.

1 Like

Oui, c’est exact. Donc ce doit être l’ensemble de la journée alors. On va voir pour les deux autres séquences…
Edit: bon la deuxième séquence est aussi à 180°, c’est logique donc.

Ce qui l’est moins, logique, c’est que la caméra est positionnée mécaniquement toujours dans le même sens puisque que ce soit en vélo ou en véhicule, l’entrée usb-c qui me permet d’alimenter la caméra pour augmenter l’autonomie en capture se trouve toujours à droite dans le sens de la marche, pour la bonne et simple raison que les deux fils sont à demeure sur leur support respectif et qu’il est impossible de les faire arriver de l’autre coté car le câble se trouverais alors trop court pour être raccordé. J’ai fait en sorte lors de la réalisation des support que ce soit impossible de positionner autrement la caméra justement pour éviter le problème.

Et donc je ne comprend toujours pas comment ces trois séquences se retrouvent inversées.
Je ne garde pas les image originales de la GoPro, bien dommage, mais pas assez de place.

L’idéal serai de pouvoir effectuer une rotation à postériori dans un mode édition dans ‘mes photos’ sur panoramax, ce genre de problème doit être fréquent.

On peut changer le sens dans la Gopro.
Je ne détaille pas plus, on est de plus en plus hors sujet, et c’est de ma faute :blush:

1 Like

Ok, je vais rechercher, je me suis jamais posé la question en fait.
Ceci dit, la caméra GoPro Max semblant être là plus appropriée à ce jour pour faire de la capture au niveau amateur, le sujet va forcément intéresser…
Merci encore pour ton travail, j’ai plus qu’à …:grin:

Merci Stephane pour ce super script ! :+1:

Néanmoins, je suis une telle bille en ce domaine que je ne saisis pas comment exécuter le script que j’ai préparé comme demandé, avec le token Mapillary et le numéro de séquence.
L’exécutable Windows se ferme automatiquement au bout de 10 secondes sans rien faire. J’ai beau essayer de coller le texte, rien à faire !
Un message apparait en bas :
mapillary_download.exe: error: the following arguments are required: access_token

Je me doute bien que je ne fais pas ce qu’il faut ! :sweat_smile:

J’imagine que tu utilises Windows. Si tu double cliques sur Mapillary_download.exe depuis l’interface graphique, c’est normal qu’il se ferme aussitôt, car il manque les arguments/paramètres/options (appelle ça comme tu veux).

  1. Ouvre un terminal. Si tu n’as rien installé de particulier, ouvre le menu “windows” et tape “powershell”
  2. Déplace toi là ou tu veux stocker les photos, avec la commande cd. Dans l’exemple ci-dessous j’ai fait cd d:\Mapillary_takeout. (use et abuse de la touche ‘tabulation’ pour t’aider à entrer le nom des dossiers.
  3. Execute le script en indiquant son chemin d’accès, et ses arguments. Tu peux t’appuyer sur l’exemple ci-dessous.

Ça marche ! :+1: C’est une première pour moi, j’ai utilisé un terminal !
Merci infiniment pour l’explication pas à pas !

4 Likes

Pour info:

Avec le script v1.1 ce matin, j’ai eu plusieurs fois de suite cette erreur, qui à disparue lorsque que j’ai fermé puis relancé la fenetre du shell ou j’avais lancé ce script.

[…]
downloading… this process will take a while. please wait
Traceback (most recent call last):
File “mapillary_download.py”, line 148, in
File “os.py”, line 215, in makedirs
File “os.py”, line 225, in makedirs
OSError: [Errno 5] Input/output error: ‘data’
[28073] Failed to execute script ‘mapillary_download’ due to unhandled exception!

L’erreur est apparue suite à une demande de 21 séquences , c’était la première fois que je dépassait les 20.
J’ai donc pensé que c’était trop, mais l’erreur à persisté quand j’ai retiré quelques séquences d’ids …
J’ai aussi pensé à une problème de place disque, mais c’est loin d’être le cas puisqu’il y avait 4.5 To de libre.
Ni même un problème de droit de création de dossiers, j’ai créé et supprimé dans le shell ouvert d’autre dossiers tests et je m’étais servie de cette même fenêtre pour le même script quleques temps au paravent.

donc je ne vois pas ce qui a pu se passer. :no_mouth:

Salut !

Effectivement ça semble lié à la création des dossiers de destination, mais si ça s’est remis à fonctionner après fermeture/réouverture du terminal, alors là… je ne comprends pas.
Peux-tu créer un ticket afin de garder une trace ?

edit : j’ai déjà récupéré plus de 30 séquences en une seule fois.

1 Like