モチベーションとしてはカレンダーで色々知りたい情報をもっとまとめて取ってきたかったから。 とりあえずテキストファイルに吐くだけできていて、これをテンプレートに落とし込んだりして、htmlページでブラウザで見れたら最高だなーみたいな気持ちがあるので、割と展望はある。
ついでにいうと、バッチ処理化して取ってくるみたいな事もできそうではある。で、どっかのWebページに配下したいが、どこに置くのが適切なのかわからない。適当にドメインを取ってAWSのS3に自動的に挙げる仕組みでも作る?
とりあえず雑に書いた何かはこんな感じ。とりあえず動くだけで改善の余地は無数にあるが、公開していかないことには始まらないので。
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import time def getMode(mode='s'): if mode.lower() == 'c': # connpass print('mode connpass') time.sleep(1) return { 'URL': 'https://connpass.com/api/v1/event/', 'dir': 'connpass/', 'etc': 'c', } # colab print('mode colab') time.sleep(1) return { 'URL': 'https://supporterzcolab.com/api/v1/event/', 'dir': 'colab/', 'etc': 's', } def get_week_date(mode='s', **kward): from datetime import datetime as dt, timedelta settings = getMode(mode) params = dict() params['order'] = kward.get('order', 1) params['count'] = kward.get('count', 10) start_date = dt.now() if kward.get('start_date'): sd = kward.get('start_date') if isinstance(str, sd): try: start_date = dt.strptime(sd, '%Y/%m/%d') except Exception as e: print('日付形式がおかしいです', sd) raise e elif isinstance(datetime, sd): start_date = sd else: print('start_dateはstring, datetimeのどちらかでお願いします。') raise TypeError for i in range(7): date_delta = timedelta(days=i) d = start_date + date_delta params['ymd'] = dt.strftime(d, '%Y%m%d') params_format = '&'.join([('{0}={1}').format(k, v) for k, v in params.items()]) if not params_format: print('skip') continue print(settings, params_format) access_point = '{0}?{1}'.format(settings['URL'], params_format) if kward.get('debug'): print(access_point) print('####################################################') print('####################################################') print() continue responce = requests.get(access_point).json() stack = [] for elem in responce['events']: elem['description'] = elem['description'][:100] print('\n'.join(['{0}={1}'.format(k, v) for k, v in elem.items()])) stack.append('\n'.join(['{0}={1}'.format(k, v) for k, v in elem.items()]) + '\n') with open(settings['dir'] + params['ymd'] + settings['etc'] + '.txt', 'w') as f: f.write('\n'.join(stack)) print() time.sleep(3) if __name__== '__main__': mode = input('C: connpass, S:Colab -> ') get_week_date(mode=mode, count=80)