def main():
    """
    メインルーチン
    """
    # HTTPリクエスト数
    http_req_num = 0
    # LINEのメッセージサイズの上限
    #line_max_message_size = 1000
    # ファイル
    #path_html = 'temp_result.html'
    # 祝日の初期化
    public_holiday = [ [], [], [], [], [], [], [], [], [], [], [], [], [] ]
    # 入力データの辞書の初期化
    #input_data = {}
    # 空き予約の辞書の初期化
    #reserve_name_list = {}
    #print(f'[reserve_name_list]')
    #print(f'{reserve_name_list}')
    #print(type(reserve_name_list))
    #print(dir(reserve_name_list))
    # 送信メッセージリストの初期化
    message_bodies = []
    # 処理の開始
    # 空き予約を取得するためのURLリストの初期化
    th_lock_url = ThreadLockUrlList()
    court_link_list = th_lock_url.court_link_list
    # 空き予約リストの初期化
    #reserves_list = {}
    th_lock_list = ThreadLockReservesList()
    reserves_list = th_lock_list.reserves_list
    #print()
    #print(f'[reserves_list]')
    #print(f'{reserves_list}')
    #print(type(reserves_list))
    #print(dir(reserves_list))
    #exit()
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg2.json')
    # 検索リストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg)
    date_list = reserve_tools.create_date_list(target_months_list, public_holiday, cfg)

    # 空き予約ページにアクセスし、cookieを取得する
    ( cookies, form_data ) = get_cookie(cfg)
    # 空き予約検索を開始する
    ## 指定年月日を指定して、空きコートのリンクを取得する
    (reserves_list, http_req_num ) = get_empty_reserves(cfg, date_list, reserves_list, court_link_list, cookies, http_req_num, th_lock_list, th_lock_url)

    # LINEにメッセージを送信する
    ## メッセージ本体を作成する
    reserve_tools.create_message_body(reserves_list, message_bodies, cfg)
    ## LINEに空き予約情報を送信する
    reserve_tools.send_line_notify(message_bodies, cfg)

    # デバッグ用(HTTPリクエスト回数を表示する)
    print(f'HTTP リクエスト数: {http_req_num} 回数')
    exit()
Beispiel #2
0
def main():
    """
    メインルーチン
    """
    # 実行時間を測定する
    start = time.time()

    # HTTPリクエスト数
    http_req_num = 0
    # LINEのメッセージサイズの上限
    #line_max_message_size = 1000
    # ファイル
    #path_html = 'temp_result.html'
    # 祝日の初期化
    public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []]
    # 入力データの辞書の初期化
    #input_data = {}
    # 空き予約の辞書の初期化
    #reserve_name_list = {}
    # 送信メッセージリストの初期化
    message_bodies = []
    # 処理の開始
    # 空き予約リストの初期化
    reserves_list = {}
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg2.json')
    # 検索リストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg)
    date_list = reserve_tools.create_date_list(target_months_list,
                                               public_holiday, cfg)

    # 空き予約ページにアクセスし、cookieを取得する
    (cookies, form_data) = get_cookie(cfg)
    # 空き予約検索を開始する
    ## 指定年月日を指定して、空きコートのリンクを取得する
    (reserves_list, http_req_num) = get_empty_reserves(cfg,
                                                       date_list,
                                                       reserves_list,
                                                       cookies,
                                                       http_req_num=0)

    # LINEにメッセージを送信する
    ## メッセージ本体を作成する
    #reserve_tools.create_message_body(reserves_list, message_bodies, cfg)
    ## LINEに空き予約情報を送信する
    #reserve_tools.send_line_notify(message_bodies, cfg)

    # デバッグ用(HTTPリクエスト回数を表示する)
    print(f'HTTP リクエスト数: {http_req_num} 回数')

    # 実行時間を表示する
    elapsed_time = time.time() - start
    print(f'main() duration time: {elapsed_time}')

    exit()
Beispiel #3
0
def prepare():
    """
    変数の初期化などの事前準備
    """
    # 祝日の初期化
    public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []]
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg.json')
    # 検索リストを作成する
    ## 検索対象月を取得する
    target_months_list = reserve_tools.create_month_list(cfg)
    ## 検索対象月リストと祝日リストから検索対象年月日リストを作成する
    date_list = reserve_tools.create_date_list(target_months_list,
                                               public_holiday, cfg)
    return cfg, date_list
Beispiel #4
0
def main():
    """
    メインルーチン
    """
    # LINEのメッセージサイズの上限
    #line_max_message_size = 1000
    # ファイル
    #path_html = 'temp_result.html'
    # 祝日の初期化
    public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []]
    # 入力データの辞書の初期化
    #input_data = {}
    # 空き予約の辞書の初期化
    #reserve_name_list = {}
    # 送信メッセージリストの初期化
    message_bodies = []
    # 処理の開始
    # 空き予約リストの初期化
    reserves_list = {}
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg2.json')
    # 検索リストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg)
    date_list = reserve_tools.create_date_list(target_months_list,
                                               public_holiday, cfg)

    # 空き予約ページにアクセスし、cookieを取得する
    (cookies, form_data) = get_cookie(cfg)
    # 空き予約検索を開始する
    ## 指定年月日を指定して、空きコートのリンクを取得する
    reserves_list = get_empty_reserves(cfg, date_list, reserves_list, cookies)

    # LINEにメッセージを送信する
    ## メッセージ本体を作成する
    reserve_tools.create_message_body(reserves_list, message_bodies, cfg)
    ## LINEに空き予約情報を送信する
    reserve_tools.send_line_notify(message_bodies, cfg)

    exit()
Beispiel #5
0
def main():
    """
    メインルーチン
    """
    # 実行時間を測定する
    start = time.time()

    # HTTPリクエスト数
    http_req_num = 0
    # LINEのメッセージサイズの上限
    #line_max_message_size = 1000
    # ファイル
    #path_html = 'temp_result.html'
    # 祝日の初期化
    public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []]
    # 入力データの辞書の初期化
    #input_data = {}
    # 空き予約の辞書の初期化
    #reserve_name_list = {}
    #print(f'[reserve_name_list]')
    #print(f'{reserve_name_list}')
    #print(type(reserve_name_list))
    #print(dir(reserve_name_list))
    # 送信メッセージリストの初期化
    message_bodies = []
    # aiohttpのセッティング
    ## 同時接続数の設定
    con_limit = 4
    conn = aiohttp.TCPConnector(limit=con_limit)
    # 処理の開始
    # 空き予約を取得するためのURLリストの初期化
    #th_lock_urls = ThreadLockUrlsList()
    #court_link_list = th_lock_urls.court_link_list
    #async_htmls = AsyncioLockHtmls()
    #court_htmls = async_htmls.court_htmls
    async_lock_urls = AsyncioLockUrlsList()
    court_link_list = async_lock_urls.court_link_list
    #court_htmls = []
    #court_link_list = {}
    # 空き予約リストの初期化
    #reserves_list = {}
    th_lock_reserves = ThreadLockReservesList()
    reserves_list = th_lock_reserves.reserves_list
    #print()
    #print(f'[reserves_list]')
    #print(f'{reserves_list}')
    #print(type(reserves_list))
    #print(dir(reserves_list))
    #exit()
    # 非同期IO処理のaiohttpのためにイベントループを作成する
    loop = asyncio.get_event_loop()
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg2.json')
    # 検索リストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg)
    date_list = reserve_tools.create_date_list(target_months_list,
                                               public_holiday, cfg)
    # 空き予約ページにアクセスし、cookieを取得する
    (cookies, form_data) = get_cookie(cfg)
    # 空き予約検索を開始する
    ## 指定年月日を指定して、空きコートのリンクを取得する
    #(reserves_list, http_req_num ) = asyncio.run(get_empty_reserves(cfg, date_list, reserves_list, court_link_list, cookies, http_req_num, th_lock_reserves, th_lock_url))
    #(reserves_list, http_req_num ) = get_empty_reserves(cfg, date_list, reserves_list, court_link_list, cookies, http_req_num, th_lock_reserves, th_lock_url, conn)
    #( reserves_list, http_req_num ) = loop.run_until_complete(get_empty_reserves(cfg, date_list, reserves_list, court_link_list, cookies, http_req_num, th_lock_reserves, th_lock_urls, conn, loop))
    ##( reserves_list, http_req_num ) = loop.run_until_complete(get_empty_reserves(cfg, date_list, reserves_list, court_link_list, cookies, http_req_num, th_lock_reserves, async_lock_urls, conn, loop, court_htmls))
    ### 指定年月日を指定して、空きコートのリンクを取得する
    #### 指定年月日を指定して、HTTPリクエストを並列で実行する
    (court_htmls, http_req_num) = loop.run_until_complete(
        get_empty_courts(cfg, date_list, court_link_list, cookies,
                         http_req_num, conn, loop))
    #### HTTPリクエストの全レスポンスリストから、空きコートのリンクを取得する
    #court_link_list = get_court_links(cfg, court_htmls, court_link_list)
    ### 空きコートのリンクから、空き時間帯を取得する
    #### 空きコートのリンクに対して、HTTPリクエストを並列で実行する
    #### HTTPリクエストの全レスポンスリストから、空きコートのリンクを取得する

    # LINEにメッセージを送信する
    ## メッセージ本体を作成する
    #reserve_tools.create_message_body(reserves_list, message_bodies, cfg)
    ## LINEに空き予約情報を送信する
    #reserve_tools.send_line_notify(message_bodies, cfg)

    print(json.dumps(court_link_list, indent=2))

    # デバッグ用(HTTPリクエスト回数を表示する)
    print(f'HTTP リクエスト数: {http_req_num} 回数')

    # 実行時間を表示する
    elapsed_time = time.time() - start
    print(f'main() duration time: {elapsed_time}')

    exit()
    # 非同期ロック
    async_lock_urls = AsyncioLockUrlsList()
    court_link_list = async_lock_urls.court_link_list
    async_lock_reserves = AsyncioLockReservesList()
    reserves_list = async_lock_reserves.reserves_list

    # 祝日の初期化
    public_holiday = [ [], [], [], [], [], [], [], [], [], [], [], [], [] ]
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('public_holiday.json', public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('cfg2.json')
    # 検索リストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    #datetime_list = create_datetime_list(target_months_list, public_holiday, cfg)
    date_list = reserve_tools.create_date_list(target_months_list, public_holiday, cfg)
    # 空き予約ページにアクセスし、cookieを取得する
    ( cookies, form_data ) = get_cookie(cfg)
    
    # リファレンスヘッダーを定義する。これがないと検索できない
    headers_day = { 'Referer': cfg['day_search_url'] }
    headers_court = { 'Referer': cfg['court_search_url'] }

    urls = create_request_objs(cfg, date_list, cookies, form_data)

    #exit()
    ( results, http_req_num ) = main(urls=urls, coro=coroutine, limit=4)

    print(f'')
    print(f'#### Analyzed Link Start : ####')
    print(f'')
def lambda_handler(event, context):
    """
    メインルーチン
    """
    # 祝日の初期化
    public_holiday = [[], [], [], [], [], [], [], [], [], [], [], [], []]
    # 入力データの辞書の初期化
    input_data = {}
    # 空き予約名リストの初期化
    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',
    }
    # 処理の開始
    # /tmpファイルに設定ファイルがあるか確認し、なければS3からファイルをダウンロードする
    is_exist_files(
        'nissy-jp-input', 'webscribe/tennis_reserve_search/martgd/cfg.json',
        'webscribe/tennis_reserve_search/common/public_holiday.json')
    # 祝日設定ファイルを読み込んで、祝日リストを作成する
    reserve_tools.set_public_holiday('/tmp/public_holiday.json',
                                     public_holiday)
    # 設定ファイルを読み込んで、設定パラメータをセットする
    cfg = reserve_tools.read_json_cfg('/tmp/cfg.json')
    # ロギングを設定する
    logger = reserve_tools.mylogger(cfg)
    # 検索対象月のリストを作成する
    target_months_list = reserve_tools.create_month_list(cfg)
    # 検索対象の開始日と終了日のリストを作成する
    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.info(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.info(court_empty_reserves_list)
    # 空き予約名リストから希望曜日の希望時間帯のみを抽出したリストを作成する
    reserves_list = create_selected_reserve_list(court_empty_reserves_list,
                                                 reserves_list,
                                                 cfg,
                                                 date_string_list,
                                                 logger=logger)
    #logger.info(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 {'status': 200, 'body': 'Completed'}