Skip to content

Instantly share code, notes, and snippets.

@mosaicer
Last active March 22, 2018 07:10
Show Gist options
  • Save mosaicer/b7601add0ffa6ddc41e5cfe1214b6a6d to your computer and use it in GitHub Desktop.
Save mosaicer/b7601add0ffa6ddc41e5cfe1214b6a6d to your computer and use it in GitHub Desktop.
きらファンの「ランプの気まぐれ占い」の全結果画像をDLするPythonスクリプト

使い方

  • コマンドライン引数に画像のタイプ(a〜c)を渡してスクリプトを実行してください。
    • dには対応していません。(dだけ数字なしなので処理の場合分けが面倒。)
  • 例外が発生してスクリプトの実行が終了したら、ダウンロード完了です。

Tips

  • 画像をダウンロードする間隔を変えたい場合は、DONWLOAD_INTERVALの値を変更してください。
#!/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')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment