|
#!/usr/bin/env python |
|
# coding=utf-8 |
|
import sys |
|
import os |
|
import requests |
|
from time import sleep |
|
|
|
DEBUG = True |
|
|
|
IMG_SAVED_FOLDER_NAME_PREFIX = 'KiraraDiagnosisImages' |
|
|
|
IMG_FILE_NAME_PREFIX = 'result' |
|
IMG_URL_PREFIX = 'https://c-image.asfes.jp/zR4gfSJw/22/301/media/' |
|
IMG_EXTENSION = 'jpg' |
|
|
|
DOWNLOAD_TIMEOUT = 30 |
|
DONWLOAD_INTERVAL = 30 |
|
|
|
_result_type = None |
|
|
|
def set_result_type(): |
|
global _result_type |
|
|
|
args = sys.argv |
|
|
|
if len(args) != 2: |
|
raise Exception('Unexpected Arguments ' + str(args) + ' : The Argument count must be 2, but it is ' + str(len(args)) + '.') |
|
|
|
if not is_valid_result_type(args[1]): |
|
raise Exception('Unexpected Arguments ' + str(args) + ' : The result type "' + args[1] + '" is invalid.') |
|
|
|
_result_type = args[1] |
|
|
|
def is_valid_result_type(type): |
|
if type == 'a': |
|
return True |
|
elif type == 'b': |
|
return True |
|
elif type == 'c': |
|
return True |
|
else: |
|
return False |
|
|
|
def generate_image_saved_folder_name(): |
|
global _result_type |
|
|
|
return IMG_SAVED_FOLDER_NAME_PREFIX + '_' + _result_type |
|
|
|
def make_image_saved_folder(): |
|
folder_name = generate_image_saved_folder_name() |
|
|
|
if os.path.exists(folder_name): |
|
raise Exception('The folder "' + folder_name + '" already exists. Please delete it before running this script.') |
|
|
|
log('Make folder') |
|
os.mkdir(folder_name) |
|
|
|
def download_image(url): |
|
response = requests.get(url, timeout=DOWNLOAD_TIMEOUT) |
|
|
|
validate_response(response) |
|
|
|
return response.content |
|
|
|
def validate_response(response): |
|
response.raise_for_status() |
|
|
|
content_type = response.headers['content-type'] |
|
if 'image' not in content_type: |
|
raise Exception('Content-Type: ' + content_type) |
|
|
|
def generate_image_file_name(): |
|
global _result_type |
|
|
|
return IMG_FILE_NAME_PREFIX + '_' + _result_type |
|
|
|
def save_image(file_name, image): |
|
with open(generate_image_saved_folder_name() + '/' + file_name, 'wb') as file: |
|
file.write(image) |
|
|
|
def append_number_and_extension_to_text(text, number): |
|
return text + '{0:02d}'.format(number) + '.' + IMG_EXTENSION |
|
|
|
def log(message): |
|
if DEBUG: |
|
print message |
|
|
|
if __name__ == '__main__': |
|
set_result_type() |
|
|
|
make_image_saved_folder() |
|
|
|
image_number = 1 |
|
|
|
log('Start downloading images') |
|
while True: |
|
log('processing image number ' + str(image_number)) |
|
|
|
image_file_name = generate_image_file_name() |
|
|
|
image_url = append_number_and_extension_to_text(IMG_URL_PREFIX + image_file_name, image_number) |
|
image = download_image(image_url) |
|
log('downloaded') |
|
|
|
image_file_full_name = append_number_and_extension_to_text(image_file_name, image_number) |
|
save_image(image_file_full_name, image) |
|
log('saved') |
|
|
|
image_number += 1 |
|
|
|
log('waiting...') |
|
sleep(DONWLOAD_INTERVAL) |
|
|
|
log('End downloading images') |