up mapillary scripts
This commit is contained in:
parent
444b63ba16
commit
b7a7ae13c9
23
mapillary_sequences_userscript/README.md
Normal file
23
mapillary_sequences_userscript/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Export en masse de photos de Mapillary vers panoramax
|
||||||
|
|
||||||
|
* avoir un token développeur mapillary
|
||||||
|
* se rendre sur la page mapillary d'un utilisateur dont on souhaite obtenir les identifiants de séquences de photos pour exporter les contenus des séquences photos, exemple: https://www.mapillary.com/app/user/gendy54
|
||||||
|
* copier secret_variables_examples.sh et remplir avec un token de développeur Mapillary (ça demande d'avoir toujours un compte Mapillary fonctionnel ou de demander à quelqu'un qui en a un)
|
||||||
|
* cp secret_variables_examples.sh secret_variables.sh
|
||||||
|
* editor secret_variables.sh
|
||||||
|
* Le pseudo d'utilisateur mapillary et son numéro d'ID sont trouvables en allant sur leur page, dans la requete graphql latestActivity.
|
||||||
|
* Recopiez la requete en tant que cURL et collez là en remplacement de celle dans curl_land.sh
|
||||||
|
* Notez l'ID de l'utilisateur.
|
||||||
|
* Lancez la récupération des identifiants de séquence.
|
||||||
|
* `bash get_user.sh boblennon 10123456`
|
||||||
|
* Vous obtenez un script bash selon le nom d'utilisateur demandé (script_bash_get_sequences_for_user_boblennon.sh ) à lancer dans le dossier de mapillary_download.py du dépot https://github.com/Stefal/mapillary_download.git .
|
||||||
|
* Pour ce faire, clonez le dépot mapillary_download et déplacez dedans les scripts bash générés par cet exportateur.
|
||||||
|
* Si vous avez les libs (suivez les instructions d'installation de mapillary_download) vous devriez pouvoir récupérer vos séquences de photos mapillary. Et si votre connexion internet plante vous pourrez relancer ce script, ça n'ira pas retélécharger les photos déjà trouvées.
|
||||||
|
* Vous pourrez profiter de vos photos dans le dossier data, elles sont rangées par utilisateur et par séquence.
|
||||||
|
|
||||||
|
# Envoi vers Panoramax en masse
|
||||||
|
* Pour envoyer en masse les séquences téléchargées, utilisez le script batch_geovisio_avec_token.sh , il faut le copier dans un dossier qui contient plusieurs séquences et avoir installé geovisio_cli avec python pip.
|
||||||
|
* bash batch_geovisio_avec_token.sh
|
||||||
|
* Si vous avez bien rempli le fichier secrets_variables.sh ça devrait envoyer vers panoramax, sur l'instance osm fr.
|
||||||
|
* Au premier lancement du script il faudra vous identifier avec votre compte Panoramax, qui sur l'instance osm fr est relié à un compte osm.
|
||||||
|
* Enjaillez!
|
15
mapillary_sequences_userscript/curl_land.sh
Normal file
15
mapillary_sequences_userscript/curl_land.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# se rendre sur la page de l'utilisateur concerné avec firefox
|
||||||
|
# trouver la requête graphql qui fait le fetch latest activity
|
||||||
|
# copier la valeur curl de la requete dans les devtool firefox
|
||||||
|
# remplacer la valeur 10000 qui limite le nombre de séquences par disons 10000
|
||||||
|
# lancer la commande : bash curl_land.sh > out.json
|
||||||
|
source secrets_variables.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
curl 'https://graph.mapillary.com/graphql?doc=query%20getLatestActivity(%24id%3A%20ID!%2C%20%24first%3A%20Int%2C%20%24after%3A%20ID%2C%20%24hide_after%3A%20Int)%20%7B%0A%20%20%20%20%20%20fetch__User(id%3A%20%24id)%20%7B%0A%20%20%20%20%20%20%20%20id%0A%20%20%20%20%20%20%20%20feed(first%3A%20%24first%2C%20after%3A%20%24after%2C%20hide_failed_sequences_after_days%3A%20%24hide_after)%20%7B%0A%20%20%20%20%20%20%20%20%20%20page_info%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20start_cursor%0A%20%20%20%20%20%20%20%20%20%20%20%20end_cursor%0A%20%20%20%20%20%20%20%20%20%20%20%20has_next_page%0A%20%20%20%20%20%20%20%20%20%20%20%20has_previous_page%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20nodes%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cluster_id%20type%20created_at_seconds%20captured_at_seconds%20thumb_url%20item_count%20image_id%20status%20initial_processing_status%20anonymization_status%20tiler_status%20error_code%20timezone%0A%20%20%20%20%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D&query=query%20getLatestActivity(%24id%3A%20ID!%2C%20%24first%3A%20Int%2C%20%24after%3A%20ID%2C%20%24hide_after%3A%20Int)%20%7B%0A%20%20fetch__User(id%3A%20%24id)%20%7B%0A%20%20%20%20id%0A%20%20%20%20feed(%0A%20%20%20%20%20%20first%3A%20%24first%0A%20%20%20%20%20%20after%3A%20%24after%0A%20%20%20%20%20%20hide_failed_sequences_after_days%3A%20%24hide_after%0A%20%20%20%20)%20%7B%0A%20%20%20%20%20%20page_info%20%7B%0A%20%20%20%20%20%20%20%20start_cursor%0A%20%20%20%20%20%20%20%20end_cursor%0A%20%20%20%20%20%20%20%20has_next_page%0A%20%20%20%20%20%20%20%20has_previous_page%0A%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20nodes%20%7B%0A%20%20%20%20%20%20%20%20cluster_id%0A%20%20%20%20%20%20%20%20type%0A%20%20%20%20%20%20%20%20created_at_seconds%0A%20%20%20%20%20%20%20%20captured_at_seconds%0A%20%20%20%20%20%20%20%20thumb_url%0A%20%20%20%20%20%20%20%20item_count%0A%20%20%20%20%20%20%20%20image_id%0A%20%20%20%20%20%20%20%20status%0A%20%20%20%20%20%20%20%20initial_processing_status%0A%20%20%20%20%20%20%20%20anonymization_status%0A%20%20%20%20%20%20%20%20tiler_status%0A%20%20%20%20%20%20%20%20error_code%0A%20%20%20%20%20%20%20%20timezone%0A%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D%0A%20%20%20%20__typename%0A%20%20%7D%0A%20%20__typename%0A%7D&operationName=getLatestActivity&variables=%7B%22id%22%3A%22100515188859784%22%2C%22first%22%3A200%2C%22after%22%3Anull%2C%22hide_after%22%3A14%7D' --compressed -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0' -H 'Accept: */*' -H 'Accept-Language: fr,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Referer: https://www.mapillary.com/' -H 'content-type: application/json' -H 'authorization: OAuth EEEEEEEEEEEEEEEEEEEEEEEEEE' -H 'Origin: https://www.mapillary.com' -H 'Connection: keep-alive' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: same-site' -H 'Sec-GPC: 1' -H 'Priority: u=4' -H 'TE: trailers'
|
87
mapillary_sequences_userscript/get_sequences_of_username.py
Normal file
87
mapillary_sequences_userscript/get_sequences_of_username.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
import json
|
||||||
|
import requests
|
||||||
|
# lit un json listant les id de photo de chaque séquence et va
|
||||||
|
# chercher la séquence par API.
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def parse_args(argv =None):
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('--username', type=str, help='Username to get the sequences id of')
|
||||||
|
parser.add_argument('--dev_token', type=str, help='Your mapillary developer token')
|
||||||
|
parser.add_argument('--max_sequence', type=str, help='Username to get the sequences id of')
|
||||||
|
|
||||||
|
global args
|
||||||
|
args = parser.parse_args(argv)
|
||||||
|
print(args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Initialisation de la liste pour stocker les réponses
|
||||||
|
responses = []
|
||||||
|
sequences = []
|
||||||
|
|
||||||
|
def get_image_data_from_sequences():
|
||||||
|
username = args.username
|
||||||
|
input_file = "out_"+username+".json"
|
||||||
|
|
||||||
|
|
||||||
|
# Chargement du fichier JSON d'entrée
|
||||||
|
with open(input_file, "r") as file:
|
||||||
|
input_data = json.load(file)
|
||||||
|
|
||||||
|
# Itération sur les noeuds pour collectionner les image_ids
|
||||||
|
nodelist = input_data["data"]["fetch__User"]["feed"]["nodes"]
|
||||||
|
print( 'séquences : ', len(nodelist))
|
||||||
|
image_ids = [node["image_id"] for node in nodelist]
|
||||||
|
print(image_ids)
|
||||||
|
|
||||||
|
dev_token = args.dev_token
|
||||||
|
|
||||||
|
# Préparation de la tête d'autorisation pour toutes les futures requêtes
|
||||||
|
header = {"Access-Token": dev_token}
|
||||||
|
|
||||||
|
ii=0
|
||||||
|
limit_requests = 1000000000
|
||||||
|
# limit_requests = 5 # pour tester
|
||||||
|
# Boucle sur chaque image_id pour interroger l'API Mapillary
|
||||||
|
for image_id in image_ids:
|
||||||
|
ii+=1
|
||||||
|
if limit_requests >= ii and image_id:
|
||||||
|
params = {"id": image_id, "fields": "id,sequence"}
|
||||||
|
request_url = "https://graph.mapillary.com/" + str(image_id)+"?access_token="+dev_token+"&fields=id,sequence"
|
||||||
|
response = requests.get(request_url)
|
||||||
|
|
||||||
|
# Analyse de la réponse
|
||||||
|
parsed_response = {}
|
||||||
|
if response.ok and response.status_code == 200:
|
||||||
|
raw_response = response.json()
|
||||||
|
|
||||||
|
parsed_response["id"] = raw_response["id"]
|
||||||
|
parsed_response["sequence"] = raw_response["sequence"]
|
||||||
|
sequences.append(parsed_response["sequence"])
|
||||||
|
|
||||||
|
print("séquence trouvée: "+str(ii)+"/"+args.max_sequence+" : "+raw_response["sequence"])
|
||||||
|
else:
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
responses.append(parsed_response)
|
||||||
|
|
||||||
|
def persist_files():
|
||||||
|
# Sauvegarde des nouveaux résultats dans le fichier output.json
|
||||||
|
output_file = "sequences_"+args.username+".json"
|
||||||
|
|
||||||
|
with open(output_file, "w") as file:
|
||||||
|
json.dump(responses, file)
|
||||||
|
|
||||||
|
sequence_filename = "sequences_"+args.username+".txt"
|
||||||
|
with open(sequence_filename, "w") as file:
|
||||||
|
json.dump(sequences, file)
|
||||||
|
print('fichier sauvegardé: '+sequence_filename)
|
||||||
|
|
||||||
|
|
||||||
|
parse_args()
|
||||||
|
get_image_data_from_sequences()
|
||||||
|
persist_files()
|
||||||
|
|
||||||
|
# si la requete donne moins du max de noeuds on prévoit d'en relancer une nouvelle pour avoir la suite
|
27
mapillary_sequences_userscript/get_user.sh
Normal file
27
mapillary_sequences_userscript/get_user.sh
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# lancement de la récupération des identifiants de séquences
|
||||||
|
# exemple:
|
||||||
|
# bash get_user.sh binerf 102718865306727
|
||||||
|
|
||||||
|
source secrets_variables.sh
|
||||||
|
|
||||||
|
export username=$1
|
||||||
|
export num_user=$2
|
||||||
|
echo "télécharger la séquence pour l'utilisateur $username, $num_user"
|
||||||
|
bash curl_land.sh "$username" "$num_user" > "out_${username}.json"
|
||||||
|
|
||||||
|
echo "séquences récupérées:"
|
||||||
|
num_sequences=$(grep -o -w 'image_id' "out_${username}.json" | wc -l)
|
||||||
|
#
|
||||||
|
if (( num_sequences > 0 ))
|
||||||
|
then
|
||||||
|
echo "Séquences trouvées: (${num_sequences}). Noice."
|
||||||
|
python3 get_sequences_of_username.py --username="$username" --max_sequence="$num_sequences" --dev_token="$MAPILLARY_DEV_TOKEN"
|
||||||
|
python3 text_array_to_download_script.py --username="$username" --dev_token="$MAPILLARY_DEV_TOKEN"
|
||||||
|
##
|
||||||
|
else
|
||||||
|
echo "Aucune séquence trouvée (${num_sequences}) ! Pas d'autres actions à entreprendre."
|
||||||
|
cat "out_${username}.json"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
303
mapillary_sequences_userscript/requirements.txt
Normal file
303
mapillary_sequences_userscript/requirements.txt
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
addok==1.1.2
|
||||||
|
addok-csv==1.1.0
|
||||||
|
addok-fr==1.0.1
|
||||||
|
addok-france==1.1.3
|
||||||
|
ansible==7.7.0
|
||||||
|
ansible-core==2.14.9
|
||||||
|
anyio==4.3.0
|
||||||
|
apache-libcloud==3.4.1
|
||||||
|
appdirs==1.4.4
|
||||||
|
appendfilename==2022.1.4.1
|
||||||
|
apsw==3.42.0.1
|
||||||
|
argcomplete==2.0.0
|
||||||
|
argon2-cffi==23.1.0
|
||||||
|
argon2-cffi-bindings==21.2.0
|
||||||
|
args==0.1.0
|
||||||
|
arrow==1.3.0
|
||||||
|
asttokens==2.2.1
|
||||||
|
async-lru==2.0.4
|
||||||
|
async-timeout==4.0.2
|
||||||
|
attrs==23.2.0
|
||||||
|
Babel==2.10.3
|
||||||
|
backcall==0.2.0
|
||||||
|
beautifulsoup4==4.12.2
|
||||||
|
beniget==0.4.1
|
||||||
|
bleach==6.1.0
|
||||||
|
blinker==1.6.2
|
||||||
|
Brlapi==0.8.4
|
||||||
|
Brotli==1.0.9
|
||||||
|
certifi==2022.9.24
|
||||||
|
cffi==1.16.0
|
||||||
|
chardet==5.1.0
|
||||||
|
charset-normalizer==3.3.2
|
||||||
|
click==8.1.6
|
||||||
|
clint==0.5.1
|
||||||
|
cloud-init==24.1.3
|
||||||
|
colorama==0.4.6
|
||||||
|
comm==0.2.2
|
||||||
|
command-not-found==0.3
|
||||||
|
configobj==5.0.8
|
||||||
|
contourpy==1.0.7
|
||||||
|
cryptography==38.0.4
|
||||||
|
css-parser==1.0.9
|
||||||
|
cssselect==1.2.0
|
||||||
|
cups-of-caffeine==2.9.12
|
||||||
|
cupshelpers==1.0
|
||||||
|
cycler==0.11.0
|
||||||
|
date2name==2024.3.10.1
|
||||||
|
dbus-python==1.3.2
|
||||||
|
debugpy==1.8.1
|
||||||
|
decorator==5.1.1
|
||||||
|
defer==1.0.6
|
||||||
|
defusedxml==0.7.1
|
||||||
|
distlib==0.3.8
|
||||||
|
distro==1.8.0
|
||||||
|
distro-info==1.5+ubuntu0.23.10.1
|
||||||
|
dnspython==2.4.1
|
||||||
|
docker==5.0.3
|
||||||
|
docker-compose==1.29.2
|
||||||
|
dockerpty==0.4.1
|
||||||
|
docopt==0.6.2
|
||||||
|
editdistance==0.6.2
|
||||||
|
ewmh==0.1.6
|
||||||
|
executing==1.2.0
|
||||||
|
fail2ban==1.0.2
|
||||||
|
falcon==3.1.1
|
||||||
|
fastjsonschema==2.19.1
|
||||||
|
feedparser==6.0.10
|
||||||
|
filelock==3.14.0
|
||||||
|
filetags==2024.2.12.1
|
||||||
|
fonttools==4.38.0
|
||||||
|
fqdn==1.5.1
|
||||||
|
fs==2.4.16
|
||||||
|
fuse-python==1.0.5
|
||||||
|
fuzzywuzzy==0.18.0
|
||||||
|
gast==0.5.2
|
||||||
|
geckodriver==0.0.1
|
||||||
|
geopic-tag-reader==1.0.5
|
||||||
|
geovisio_cli==0.3.9
|
||||||
|
gnureadline==8.1.2
|
||||||
|
gpg==1.18.0
|
||||||
|
graphql-core==3.2.3
|
||||||
|
graphqlclient==0.2.4
|
||||||
|
guessfilename==2023.2.5.2
|
||||||
|
h11==0.14.0
|
||||||
|
h3==3.7.7
|
||||||
|
hashids==1.3.1
|
||||||
|
haversine==2.8.1
|
||||||
|
hiredis==2.2.2
|
||||||
|
html2text==2020.1.16
|
||||||
|
html5-parser==0.4.11
|
||||||
|
html5lib==1.1
|
||||||
|
httpcore==1.0.5
|
||||||
|
httpie==3.2.2
|
||||||
|
httplib2==0.20.4
|
||||||
|
httpx==0.27.0
|
||||||
|
idna==3.3
|
||||||
|
ifaddr==0.2.0
|
||||||
|
importlib-metadata==4.12.0
|
||||||
|
iniconfig==2.0.0
|
||||||
|
ipykernel==6.29.4
|
||||||
|
ipython==8.14.0
|
||||||
|
ipywidgets==8.1.2
|
||||||
|
isoduration==20.11.0
|
||||||
|
jaraco.classes==3.2.1
|
||||||
|
jedi==0.18.2
|
||||||
|
jeepney==0.8.0
|
||||||
|
Jinja2==3.1.2
|
||||||
|
jmespath==1.0.1
|
||||||
|
jq==1.7.0
|
||||||
|
json5==0.9.25
|
||||||
|
jsonpatch==1.32
|
||||||
|
jsonpointer==2.0
|
||||||
|
jsonschema==4.22.0
|
||||||
|
jsonschema-specifications==2023.12.1
|
||||||
|
jupyter==1.0.0
|
||||||
|
jupyter-console==6.6.3
|
||||||
|
jupyter-events==0.10.0
|
||||||
|
jupyter-lsp==2.2.5
|
||||||
|
jupyter_client==8.6.1
|
||||||
|
jupyter_core==5.7.2
|
||||||
|
jupyter_server==2.14.0
|
||||||
|
jupyter_server_terminals==0.5.3
|
||||||
|
jupyterlab==4.1.8
|
||||||
|
jupyterlab_pygments==0.3.0
|
||||||
|
jupyterlab_server==2.27.1
|
||||||
|
jupyterlab_widgets==3.0.10
|
||||||
|
keyring==24.2.0
|
||||||
|
kiwisolver==0.0.0
|
||||||
|
language-selector==0.1
|
||||||
|
launchpadlib==1.11.0
|
||||||
|
lazr.restfulclient==0.14.5
|
||||||
|
lazr.uri==1.0.6
|
||||||
|
Levenshtein==0.25.0
|
||||||
|
lockfile==0.12.2
|
||||||
|
louis==3.26.0
|
||||||
|
lxml==4.9.3
|
||||||
|
lz4==4.0.2+dfsg
|
||||||
|
Mako==1.2.4.dev0
|
||||||
|
Markdown==3.4.4
|
||||||
|
markdown-it-py==3.0.0
|
||||||
|
MarkupSafe==2.1.3
|
||||||
|
matplotlib==3.6.3
|
||||||
|
matplotlib-inline==0.1.6
|
||||||
|
mdurl==0.1.2
|
||||||
|
mechanize==0.4.8
|
||||||
|
mistune==3.0.2
|
||||||
|
more-itertools==10.1.0
|
||||||
|
move2archive==2023.7.15.1
|
||||||
|
mpmath==0.0.0
|
||||||
|
msgpack==1.0.3
|
||||||
|
multidict==6.0.5
|
||||||
|
mutagen==1.47.0
|
||||||
|
nbclient==0.10.0
|
||||||
|
nbconvert==7.16.4
|
||||||
|
nbformat==5.10.4
|
||||||
|
nest-asyncio==1.6.0
|
||||||
|
netaddr==0.8.0
|
||||||
|
netifaces==0.11.0
|
||||||
|
ngram==4.0.3
|
||||||
|
notebook==7.1.3
|
||||||
|
notebook_shim==0.2.4
|
||||||
|
ntlm-auth==1.4.0
|
||||||
|
numpy==1.24.2
|
||||||
|
oauthlib==3.2.2
|
||||||
|
olefile==0.46
|
||||||
|
outcome==1.3.0.post0
|
||||||
|
overrides==7.7.0
|
||||||
|
packaging==23.1
|
||||||
|
pandas==2.2.1
|
||||||
|
pandocfilters==1.5.1
|
||||||
|
parso==0.8.3
|
||||||
|
passlib==1.7.4
|
||||||
|
pexpect==4.8.0
|
||||||
|
pickleshare==0.7.5
|
||||||
|
Pillow==10.0.0
|
||||||
|
platformdirs==4.2.1
|
||||||
|
pluggy==1.4.0
|
||||||
|
ply==3.11
|
||||||
|
progressist==0.1.0
|
||||||
|
prometheus_client==0.20.0
|
||||||
|
prompt-toolkit==3.0.39
|
||||||
|
psutil==5.9.4
|
||||||
|
ptyprocess==0.7.0
|
||||||
|
pure-eval==0.0.0
|
||||||
|
py7zr==0.11.3+dfsg
|
||||||
|
pycairo==1.24.0
|
||||||
|
pychm==0.8.6
|
||||||
|
pycparser==2.21
|
||||||
|
pycryptodomex==3.11.0
|
||||||
|
pycups==2.0.1
|
||||||
|
PyExifTool==0.5.6
|
||||||
|
pyexiv2==2.8.3
|
||||||
|
Pygments==2.15.1
|
||||||
|
PyGObject==3.46.0
|
||||||
|
pyinotify==0.9.6
|
||||||
|
PyJWT==2.7.0
|
||||||
|
pykerberos==1.1.14
|
||||||
|
pylibacl==0.7.0
|
||||||
|
pyparsing==3.1.0
|
||||||
|
pypdf==4.1.0
|
||||||
|
PyPDF2==3.0.1
|
||||||
|
pypng==0.20220715.0
|
||||||
|
PyQt5==5.15.9
|
||||||
|
PyQt5-sip==12.12.2
|
||||||
|
PyQt6==6.5.2
|
||||||
|
PyQt6-sip==13.5.2
|
||||||
|
PyQt6-WebEngine==6.5.0
|
||||||
|
pyreadline==2.1
|
||||||
|
pyreadline3==3.4.1
|
||||||
|
pyrsistent==0.18.1
|
||||||
|
pyserial==3.5
|
||||||
|
PySocks==1.7.1
|
||||||
|
pytest==8.1.1
|
||||||
|
python-apt==2.6.0+ubuntu1
|
||||||
|
python-dateutil==2.8.2
|
||||||
|
python-debian==0.1.49+ubuntu2
|
||||||
|
python-dotenv==1.0.1
|
||||||
|
python-geohash==0.8.5
|
||||||
|
python-json-logger==2.0.7
|
||||||
|
python-Levenshtein==0.25.0
|
||||||
|
python-xlib==0.33
|
||||||
|
pythran==0.11.0
|
||||||
|
pytz==2023.3
|
||||||
|
pywinrm==0.3.0
|
||||||
|
pyxattr==0.8.1
|
||||||
|
pyxdg==0.28
|
||||||
|
PyYAML==6.0.1
|
||||||
|
pyzmq==26.0.3
|
||||||
|
qrcode==7.4.2
|
||||||
|
qtconsole==5.5.2
|
||||||
|
QtPy==2.4.1
|
||||||
|
rapidfuzz==3.6.2
|
||||||
|
redis==4.5.4
|
||||||
|
referencing==0.35.1
|
||||||
|
regex==2022.10.31
|
||||||
|
repoze.lru==0.7
|
||||||
|
requests==2.31.0
|
||||||
|
requests-kerberos==0.12.0
|
||||||
|
requests-ntlm==1.1.0
|
||||||
|
requests-toolbelt==1.0.0
|
||||||
|
resolvelib==1.0.1
|
||||||
|
rfc3339-validator==0.1.4
|
||||||
|
rfc3986-validator==0.1.1
|
||||||
|
rich==13.7.1
|
||||||
|
Routes==2.5.1
|
||||||
|
rpds-py==0.18.1
|
||||||
|
scipy==1.10.1
|
||||||
|
screen-resolution-extra==0.0.0
|
||||||
|
SecretStorage==3.3.3
|
||||||
|
selenium==4.18.1
|
||||||
|
selinux @ file:///build/libselinux-YCoZMU/libselinux-3.5/src
|
||||||
|
Send2Trash==1.8.3
|
||||||
|
sgmllib3k==1.0.0
|
||||||
|
simplejson==3.19.1
|
||||||
|
six==1.16.0
|
||||||
|
sniffio==1.3.1
|
||||||
|
sortedcontainers==2.4.0
|
||||||
|
soupsieve==2.4.1
|
||||||
|
ssh-import-id==5.11
|
||||||
|
stack-data==0.6.2
|
||||||
|
sympy==1.12
|
||||||
|
systemd-python==235
|
||||||
|
terminado==0.18.1
|
||||||
|
terminator==2.1.3
|
||||||
|
texttable==1.6.7
|
||||||
|
timezonefinder==6.5.0
|
||||||
|
tinycss2==1.3.0
|
||||||
|
tomli==2.0.1
|
||||||
|
tomli_w==1.0.0
|
||||||
|
torbrowser-launcher==0.3.6
|
||||||
|
tornado==6.3.2
|
||||||
|
traitlets==5.14.3
|
||||||
|
trio==0.25.0
|
||||||
|
trio-websocket==0.11.1
|
||||||
|
typer==0.9.0
|
||||||
|
types-python-dateutil==2.9.0.20240316
|
||||||
|
typing_extensions==4.10.0
|
||||||
|
tzdata==2024.1
|
||||||
|
ubuntu-drivers-common==0.0.0
|
||||||
|
ubuntu-pro-client==8001
|
||||||
|
ufoLib2==0.14.0
|
||||||
|
ufw==0.36.2
|
||||||
|
unattended-upgrades==0.1
|
||||||
|
Unidecode==1.3.6
|
||||||
|
uri-template==1.3.0
|
||||||
|
urllib3==2.2.1
|
||||||
|
virtualenv==20.26.1
|
||||||
|
wadllib==1.3.6
|
||||||
|
wcwidth==0.2.5
|
||||||
|
webcolors==1.13
|
||||||
|
webdriver-manager==4.0.1
|
||||||
|
webencodings==0.5.1
|
||||||
|
WebOb==1.8.6
|
||||||
|
websocket-client==1.8.0
|
||||||
|
websockets==12.0
|
||||||
|
widgetsnbextension==4.0.10
|
||||||
|
wsproto==1.2.0
|
||||||
|
xdg==5
|
||||||
|
xkit==0.0.0
|
||||||
|
xmltodict==0.13.0
|
||||||
|
yt-dlp==2024.3.10
|
||||||
|
zeroconf==0.76.0
|
||||||
|
zipp==1.0.0
|
@ -0,0 +1,9 @@
|
|||||||
|
# scripts common shared variables
|
||||||
|
# this is to copy as a file named "secrets_variables.sh" which is ignored in this git repo
|
||||||
|
|
||||||
|
export OAUTH_TOKEN="MLYabcdeeeeeeeeeeeeee_replace_it"
|
||||||
|
export MAPILLARY_DEV_TOKEN="MLY|blahblah_replace_it"
|
||||||
|
export USER_ID_MAPILLARY="123456789_replace_it"
|
||||||
|
export GEOVISIO_TOKEN="_replace_it"
|
||||||
|
# you can keep it
|
||||||
|
export SEQUENCES_COUNT="10000"
|
@ -1,8 +1,11 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
input_file = 'input_file'
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
def parse_args(argv =None):
|
def parse_args(argv =None):
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
# parser.add_argument('--access_token', type=str, help='Your mapillary access token')
|
parser.add_argument('--dev_token', type=str, help='Your mapillary access token')
|
||||||
parser.add_argument('--username', type=str, help='Username to get the sequences id of')
|
parser.add_argument('--username', type=str, help='Username to get the sequences id of')
|
||||||
|
|
||||||
global args
|
global args
|
||||||
@ -11,14 +14,28 @@ def parse_args(argv =None):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
print("Construction du script bash de récupération des images de chaque séquences pour Mapillary_download (https://github.com/Stefal/mapillary_download.git)")
|
||||||
|
|
||||||
parse_args()
|
parse_args()
|
||||||
|
|
||||||
username=args.username
|
username=args.username
|
||||||
input_file = f"sequences_{username}.txt"
|
input_file = f"sequences_{username}.txt"
|
||||||
|
|
||||||
|
if not args.dev_token:
|
||||||
|
print(f"Erreur : Le token de développeur de mapillary manque, vérifiez le fichier de variables secretes. Arrêt du script.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
if not os.path.exists(input_file) or not os.path.isfile(input_file):
|
||||||
|
print(f"Erreur : Le fichier '{input_file}' n'a pas été trouvé. Arrêt du script.")
|
||||||
|
exit(1)
|
||||||
|
else:
|
||||||
|
print(f"Fichier '{input_file}' trouvé.")
|
||||||
|
|
||||||
|
|
||||||
output_file = f"script_bash_get_sequences_for_user_{username}.sh"
|
output_file = f"script_bash_get_sequences_for_user_{username}.sh"
|
||||||
|
|
||||||
access_token = "--access_token=\"mly_token_A_REMPLACERRRRRRRRRRRR\" "
|
access_token = "--access_token="+args.dev_token+" "
|
||||||
format_string = "python download.py {} --sequence_id={}\n"
|
format_string = "/usr/bin/python3 mapillary_download.py {} --sequence_id={}\n"
|
||||||
|
|
||||||
|
|
||||||
with open(output_file, "w") as output:
|
with open(output_file, "w") as output:
|
||||||
@ -26,9 +43,11 @@ if __name__ == '__main__':
|
|||||||
content = input_handle.read()
|
content = input_handle.read()
|
||||||
sequences = eval(content)
|
sequences = eval(content)
|
||||||
for seq in sequences:
|
for seq in sequences:
|
||||||
full_cmd = f"python download.py {access_token} --sequence_id={seq} --username={username}\n"
|
full_cmd = f"/usr/bin/python3 mapillary_download.py {access_token} --sequence_id={seq} --username={username}\n"
|
||||||
output.write(full_cmd)
|
output.write(full_cmd)
|
||||||
|
|
||||||
print(f"Script Bash généré : {output_file}")
|
|
||||||
|
|
||||||
print(output_file)
|
print(output_file)
|
||||||
|
|
||||||
|
print(f"\n Script Bash généré avec succès.")
|
||||||
|
print(f"Lancez le pour récupérer les photos de l'utilisateur {username}: \n bash {output_file}")
|
||||||
|
|
||||||
|
0
mapillary_sequences_userscript/text_curl.sh
Normal file
0
mapillary_sequences_userscript/text_curl.sh
Normal file
Loading…
Reference in New Issue
Block a user