From a87699a57c30c7ac0b2f325919a1492fcec5995b Mon Sep 17 00:00:00 2001 From: billmanongga Date: Fri, 20 Jan 2023 11:19:37 +0800 Subject: [PATCH] commit code --- .gitignore | 1 + README.md | 8 ++++++- download.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 download.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..60baa9c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +data/* diff --git a/README.md b/README.md index 9b467eb..31a910c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # mapillary_download -simple code to download images in a mapillary sequence +Simple code to download images in a mapillary sequence + +## How to use +change the access token with your access token and the sequence id with the id of the sequence you want to dowload +```Shell +python download.py --access_token "MLY|xxxx|xxxxxxx" --sequence_id xxxxxxxxxxx +``` diff --git a/download.py b/download.py new file mode 100644 index 0000000..6beacd1 --- /dev/null +++ b/download.py @@ -0,0 +1,69 @@ +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)