def prepare_serch_empty_reserves(cfg_filename="cfg.json"): """ 初期化処理 - 設定ファイル、祝日ファイルの読み込み - ロギング設定 検索対象日の生成 """ # 初期化処理 # 祝日の初期化 public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []] # 祝日設定ファイルを読み込んで、祝日リストを作成する reserve_tools.set_public_holiday('public_holiday.json', public_holiday) # 設定ファイルを読み込んで、設定パラメータをセットする #cfg = reserve_tools.read_json_cfg('cfg.json') cfg = reserve_tools.read_json_cfg(cfg_filename) # ロギングを設定する logger = reserve_tools.mylogger(cfg) # 検索対象日の生成 ## 検索対象月を取得する target_months_list = reserve_tools.create_month_list(cfg, logger=logger) ## 検索対象月リストと祝日リストから検索対象年月日リストを作成する date_list = reserve_tools.create_want_date_list(target_months_list, public_holiday, cfg) logger.debug(f'date_list: {date_list}') return cfg, logger, date_list
def main(): """ メインルーチン """ # 祝日の初期化 public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []] # 送信メッセージリストの初期化 message_bodies = [] # 処理の開始 # 空き予約リストの初期化 reserves_list = {} # 祝日設定ファイルを読み込んで、祝日リストを作成する reserve_tools.set_public_holiday('public_holiday.json', public_holiday) # 設定ファイルを読み込んで、設定パラメータをセットする cfg = reserve_tools.read_json_cfg('cfg.json') # ロギングを設定する logger = reserve_tools.mylogger(cfg) # 検索リストを作成する target_months_list = reserve_tools.create_month_list(cfg, logger=logger) #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg) date_list = reserve_tools.create_date_list_chofu(target_months_list, public_holiday, cfg) target_year_month_list = reserve_tools.create_year_month_list( target_months_list) logger.info(f'target_year_month_list: {target_year_month_list}') # 空き予約ページにアクセスし、cookieを取得する (cookies, response) = get_cookie(cfg) # 検索方法選択ページ、施設リストページにアクセスする (response, pre_url) = go_to_search_menu(cfg, cookies, response, logger=logger) # 空き予約検索を開始する reserves_list = get_reserves(cfg, target_year_month_list, date_list, reserves_list, cookies, response, pre_url, logger=logger) logger.info(json.dumps(reserves_list, indent=2, ensure_ascii=False)) # LINEにメッセージを送信する ## メッセージ本体を作成する message_bodies = reserve_tools.create_message_body(reserves_list, message_bodies, cfg, logger=logger) ## LINEに空き予約情報を送信する reserve_tools.send_line_notify(message_bodies, cfg, logger=logger) #exit() return logger
def main_search_empty_reserves(): """ メインルーチン """ # 祝日の初期化 public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []] # 空き予約リストの初期化 #reserves_list = {} threadsafe_list = ThreadSafeReservesList() # 送信メッセージリストの初期化 message_bodies = [] # WEB request header headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36' } # 処理の開始 # 祝日設定ファイルを読み込んで、祝日リストを作成する reserve_tools.set_public_holiday('public_holiday.json', public_holiday) # 設定ファイルを読み込んで、設定パラメータをセットする cfg = reserve_tools.read_json_cfg('cfg.json') # ロギングを設定する logger = reserve_tools.mylogger(cfg) # スレッド数を設定する threads_num = cfg['threads_num'] # 検索リストを作成する target_months_list = reserve_tools.create_month_list(cfg, logger=logger) logger.debug(f'target months: {target_months_list}') date_list = reserve_tools.create_date_list_hachioji(target_months_list, public_holiday, cfg, logger=logger) logger.debug(f'date list: {date_list}') # スレッド数に応じて、date_listを分割する date_list_threads = split_date_list(date_list, threads_num, logger=logger) logger.debug(f'splited date list: {date_list_threads}') #return logger # マルチスレッド化する ## ここから # クローラーの初期化 #( driver, mouse ) = setup_driver(headers) # 空き予約ページにアクセスし、cookieを取得する #( cookies , response )= get_cookie(cfg) #( cookies , response )= selenium_get_cookie(driver, cfg) # 空き状況を検索するページに移動する #selenium_go_to_search_menu(driver, mouse, cfg, cookies) # 条件を指定して、空き予約を取得する #reserves_list = selenium_post_conditions(driver, date_list, reserves_list, cfg) #logger.debug(type(reserves_list)) #logger.debug(dir(reserves_list)) # seleniumを終了する #driver.quit() ## ここまで # マルチスレッドで呼び出す threadsafe_list = multi_thread_datesearch(cfg, headers, date_list_threads, threadsafe_list, threads_num=threads_num, logger=logger) logger.debug( json.dumps(threadsafe_list.reserves_list, indent=2, ensure_ascii=False)) #exit() # LINEにメッセージを送信する ## メッセージ本体を作成する reserve_tools.create_message_body(threadsafe_list.reserves_list, message_bodies, cfg, logger=logger) ## LINEに空き予約情報を送信する reserve_tools.send_line_notify(message_bodies, cfg, logger=logger) #exit() return cfg, logger, threadsafe_list.reserves_list, target_months_list, public_holiday, headers
def main(): """ メインルーチン """ # 祝日の初期化 public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []] # 空き予約名リストの初期化 court_empty_reserves_list = {} #selected_reserve_name_list = {} reserves_list = {} # 送信メッセージの初期化 message_bodies = [] # WEBリクエストのヘッダー headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36', } # 処理の開始 # 祝日設定ファイルを読み込んで、祝日リストを作成する reserve_tools.set_public_holiday('public_holiday.json', public_holiday) # 設定ファイルを読み込んで、設定パラメータをセットする cfg = reserve_tools.read_json_cfg('cfg.json') # ロギングを設定する logger = reserve_tools.mylogger(cfg) # 検索対象月のリストを作成する target_months_list = reserve_tools.create_month_list(cfg, logger=logger) # 検索対象の開始日と終了日のリストを作成する input_data_date = create_inputdate(target_months_list, logger=logger) # 検索データを作成する input_data = create_inputdata(cfg, input_data_date, logger=logger) # フィルターリストを作成する date_string_list = reserve_tools.create_date_list(target_months_list, public_holiday, cfg) logger.debug(f'date_string_list: {date_string_list}') # 空き予約ページのトップページにアクセスし、cookieを取得する (cookies, response) = get_cookie(cfg) # 検索データを入力して、空き予約を検索する court_empty_reserves_list = do_search_empty_reserve( cfg, cookies, response, input_data, court_empty_reserves_list, logger=logger) logger.debug(f'court_empty_reserves_list: {court_empty_reserves_list}') # 空き予約名リストから希望曜日の希望時間帯のみを抽出したリストを作成する reserves_list = create_selected_reserve_list(court_empty_reserves_list, reserves_list, cfg, date_string_list, logger=logger) logger.debug(f'reserves_list: {reserves_list}') #exit() # 送信メッセージ本体を作成する message_bodies = reserve_tools.create_message_body(reserves_list, message_bodies, cfg, logger=logger) # LINE Notifyに空き予約情報のメッセージを送信する reserve_tools.send_line_notify(message_bodies, cfg, logger=logger) # 終了する #exit() return logger