mapillary_download/download.py
2023-01-20 11:19:37 +08:00

70 lines
2.1 KiB
Python

import requests
import json
import os
import asyncio
import argparse
def parse_args(argv =None):
parser = argparse.ArgumentParser()
parser.add_argument('--sequence_id', type=str, help='The mapillary sequence id to download')
parser.add_argument('--access_token', type=str, help='Your mapillary access token')
global args
args = parser.parse_args(argv)
def background(f):
def wrapped(*args, **kwargs):
return asyncio.get_event_loop().run_in_executor(None, f, *args, **kwargs)
return wrapped
@background
def download(url, fn):
r = requests.get(url, stream=True)
with open(str(fn), "wb") as f:
f.write(r.content)
if __name__ == '__main__':
parse_args()
if args.sequence_id == None:
print('please provide the sequence_id')
exit()
if args.access_token == None:
print('please provide the access_token')
exit()
sequence_id= args.sequence_id
access_token = args.access_token
# create the data folder
if not os.path.exists('data'):
os.makedirs('data')
# create a folder for each unique sequence ID to group images by sequence
if not os.path.exists('data/{}'.format(sequence_id)):
os.makedirs('data/{}'.format(sequence_id))
# header = {'Authorization' : 'OAuth {}'.format(access_token)}
# url = 'https://graph.mapillary.com/image_ids?sequence_id={}'.format(sequence_id)
# r = requests.get(url, headers=header)
# data = r.json()
# image_ids = data['data']
# img_num = len(image_ids)
# urls = []
# print(img_num)
# print('getting urls')
# for x in range(0, img_num):
# image_id = image_ids[x]['id']
# req_url = 'https://graph.mapillary.com/{}?fields=thumb_2048_url'.format(image_id)
# r = requests.get(req_url, headers=header)
# data = r.json()
# print('getting url {} of {}'.format(x, img_num))
# urls.append(data['thumb_2048_url'])
# print('downloading.. this process will take a while. please wait')
# for i,url in enumerate(urls):
# path = 'data/{}/{}.jpg'.format(sequence_id, i)
# download(url,path)