65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
import sys
|
|
import argparse
|
|
import os
|
|
|
|
from daypicts import get_picture_url, validate_date, gen_dates
|
|
from daypicts import NoPictureForDate
|
|
from daypicts import POTD_PATH
|
|
|
|
FIXTURE_DIR = 'fixture/'
|
|
|
|
|
|
def parse_args(argv):
|
|
parser = argparse.ArgumentParser(description=main.__doc__)
|
|
date_help = 'YYYY-MM-DD or YYYY-MM or YYYY: year, month and day'
|
|
parser.add_argument('date', help=date_help)
|
|
|
|
args = parser.parse_args(argv)
|
|
|
|
try:
|
|
iso_parts = validate_date(args.date)
|
|
except ValueError as exc:
|
|
print('error:', exc.args[0])
|
|
parser.print_usage()
|
|
sys.exit(2)
|
|
|
|
dates = list(gen_dates(iso_parts))
|
|
if len(dates) == 1:
|
|
print('-> Date: ', dates[0])
|
|
else:
|
|
fmt = '-> {} days: {}...{}'
|
|
print(fmt.format(len(dates), dates[0], dates[-1]))
|
|
|
|
return dates, args
|
|
|
|
|
|
def save_picture_urls(dates, save_path):
|
|
for date in dates:
|
|
try:
|
|
url = get_picture_url(date)
|
|
except NoPictureForDate as exc:
|
|
snippet = repr(exc)
|
|
else:
|
|
snippet = url.replace('http://', 'src="//') + '"'
|
|
print(date, end=' ')
|
|
print(snippet)
|
|
with open(os.path.join(save_path, date), 'w') as fp:
|
|
fp.write(snippet)
|
|
|
|
|
|
def main(argv):
|
|
"""Build test fixture from Wikipedia "POTD" data"""
|
|
|
|
save_path = os.path.join(FIXTURE_DIR,POTD_PATH)
|
|
try:
|
|
os.makedirs(save_path)
|
|
except FileExistsError:
|
|
pass
|
|
|
|
dates, args = parse_args(argv)
|
|
|
|
save_picture_urls(dates, save_path)
|
|
|
|
if __name__ == '__main__':
|
|
main(sys.argv[1:])
|