Exemple #1
0
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()
Exemple #2
0
        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
Exemple #3
0
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)