def mode_show(args, session): today = date.today() since_date = today - timedelta(days=args.since) from_date = check_date(args.date_from) if args.date_from else None if not from_date: from_date = since_date to_date = check_date(args.date_to) if args.date_to else None if not to_date: to_date = today if from_date > today or from_date > to_date: msg = 'in the future' if from_date > today else f'beyond "to" date "{to_date}"' print( f' invalid "from" date ({msg}) "{from_date}" - correcting to the last 7 days' ) from_date = since_date to_date = today to_date = to_date + timedelta(days=1) date_range = [ from_date + timedelta(days=x) for x in range((to_date - from_date).days) ] data_by_date = get_price_and_balance_data(session, date_range) more_than_1_validator = False for date_ in data_by_date: if len(data_by_date[date_].validators) > 1: more_than_1_validator = True break if not data_by_date: exit() fiat_currency = (args.currency or currency).upper() if fiat_currency == 'USD': forex_data = None else: forex_data = get_forex_data(date_range=sorted(list( data_by_date.keys())), currency=fiat_currency) total_earned_in_eth = 0 total_earned_in_fiat = 0 show_validators = True if args.detailed_view and more_than_1_validator else False title_str = ( f'date {" index" if show_validators else ""} ETH earned ETH price {fiat_currency:>4} earned' ) print(f'\n {title_str}\n {len(title_str) * "="}') first_date = True for day_date in data_by_date: date_str = day_date.strftime("%Y/%m/%d") day_data = data_by_date[day_date] price_of_one_in_fiat = day_data.price.display if fiat_currency != 'USD': price_of_one_in_fiat *= forex_data[day_date.strftime('%Y-%m-%d')] day_eth_earnings = sum( [day_data.validators[v].earned_eth for v in day_data.validators]) day_totals = DayData(eth_earned=day_eth_earnings, fiat_price_of_1=price_of_one_in_fiat, fiat_currency=fiat_currency) if args.detailed_view: for val_idx in sorted(validator_indexes, key=int): try: validator = day_data.validators[val_idx] except KeyError: pass else: day_totals.validators[val_idx] = DayData( validator.earned_eth, fiat_price_of_1=price_of_one_in_fiat, fiat_currency=fiat_currency) if show_validators: if not first_date: print(f' {len(title_str) * "-"}') print_detailed_day(date_str, day_totals) first_date = False else: print_non_detailed_day(date_str, day_totals) total_earned_in_eth += day_eth_earnings total_earned_in_fiat += day_totals.fiat_price_of_earned f_total_earned_in_eth = f'{total_earned_in_eth:.4f} ETH' f_total_earned_in_fiat = f'{total_earned_in_fiat:,.2f} {fiat_currency}' footer_str = ( f' {" " if show_validators else ""} ' f'{f_total_earned_in_eth:>12} {f_total_earned_in_fiat:>12}' ) print(f' {len(title_str) * "="}\n {footer_str}') print()
print(category_tuple[0]) # if the category is not empty if category_tuple[1] > 0: # loop through each item: the 1st level loop================================================================================================= for i in range(1, category_tuple[1] + 1): container_index = category_tuple_list.index(category_tuple) + 1 link_index = i # get the link element link = f.get_link_element(driver, container_index, link_index) # get the item title text that will be used to extract date string if it has title_text = f.get_title_text(link) date_list = [] for date_item in data.DATE_RELEVANT: if date_item in category_tuple[0]: date_list = f.check_date(title_text, regex_date) break # create a proper filename filename = f.construct_filename(date_list, facility_en_name, category_tuple[0], file_index) print(filename) file_index += 1 time.sleep(0.5) break # date_list = f.check_date(title_text, regex_date) # # create a proper filename # filename = f.construct_filename(date_list, facility_en_name, category_tuple[0], file_index) # # set the path based on the filename # filepath = "c:\\Users\\user\\Downloads\\%s" %filename # # if the file exists, log the message, back to the previous page and continue the loop
while 1: command = int( input("コマンドを入力してください\n0: 終了\n1: 書き込み\n2: 教科名検索\n3: 締め切り順ソート\n")) jsonData = functions.outputJson() # プログラムを終了する場合 if command == 0: print("終了します") break # データベースに書き込む場合 elif command == 1: print(Fore.CYAN + "書き込み") subject = str(input("教科名を入力してください")) assignment = str(input("課題を入力してください")) deadline = int(input("締め切りを入力してください(yyyymmdd)")) # 入力されたdeadlineが正しい形式か確かめる if functions.check_date(deadline) is False: continue dueTime = int(input("締め切り時間を入力して下さい(hhmm)")) detail = str(input("詳細を入力してください" + Fore.WHITE)) functions.inputJson(subject, assignment, deadline, detail, dueTime) # 教科名検索を行う場合 elif command == 2: print("教科名検索を行います") subject = str(input("教科名を入力してください")) for data in jsonData: if data['kadai']['subject'] == subject: print(Fore.GREEN + "\n課題名 : " + str(data['kadai']['assignment'])) functions.printout_deadline(data['kadai']['deadline'], data['kadai']['dueTime']) print("[詳細]\n" + str(data['kadai']['detail']) + Fore.WHITE)