--print-csv added
This commit is contained in:
parent
89e0c76a3f
commit
f348956e4c
@ -35,7 +35,7 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"]
|
|||||||
ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
|
ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
|
||||||
|
|
||||||
ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column",
|
ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column",
|
||||||
"base_currency", "quote_currency", "active_only"]
|
"print_csv", "base_currency", "quote_currency", "active_only"]
|
||||||
|
|
||||||
ARGS_CREATE_USERDIR = ["user_data_dir"]
|
ARGS_CREATE_USERDIR = ["user_data_dir"]
|
||||||
|
|
||||||
|
@ -268,6 +268,11 @@ AVAILABLE_CLI_OPTIONS = {
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
),
|
),
|
||||||
|
"print_csv": Arg(
|
||||||
|
'--print-csv',
|
||||||
|
help='Print exchange pair or market data in the csv format.',
|
||||||
|
action='store_true',
|
||||||
|
),
|
||||||
"quote_currency": Arg(
|
"quote_currency": Arg(
|
||||||
'--quote-currency',
|
'--quote-currency',
|
||||||
help='Select quote currency.',
|
help='Select quote currency.',
|
||||||
|
@ -4,6 +4,7 @@ from pathlib import Path
|
|||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
import arrow
|
import arrow
|
||||||
|
import csv
|
||||||
import rapidjson
|
import rapidjson
|
||||||
from tabulate import tabulate
|
from tabulate import tabulate
|
||||||
|
|
||||||
@ -148,27 +149,42 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None:
|
|||||||
raise OperationalException(f"Cannot get markets. Reason: {e}") from e
|
raise OperationalException(f"Cannot get markets. Reason: {e}") from e
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") +
|
||||||
|
("active " if active_only else "") +
|
||||||
|
(plural(len(pairs), "pair" if pairs_only else "market")) +
|
||||||
|
(f" with {base_currency} as base currency" if base_currency else "") +
|
||||||
|
(" and" if base_currency and quote_currency else "") +
|
||||||
|
(f" with {quote_currency} as quote currency" if quote_currency else ""))
|
||||||
|
|
||||||
|
headers = ["Id", "Symbol", "Base", "Quote", "Active"]
|
||||||
|
if not pairs_only:
|
||||||
|
headers.append('Is pair')
|
||||||
|
|
||||||
if args.get('print_list', False):
|
if args.get('print_list', False):
|
||||||
# print data as a list
|
# print data as a list, with human-readable summary
|
||||||
print(f"Exchange {exchange.name} has {len(pairs)} " +
|
print(summary_str +
|
||||||
("active " if active_only else "") +
|
|
||||||
(plural(len(pairs), "pair" if pairs_only else "market")) +
|
|
||||||
(f" with {base_currency} as base currency" if base_currency else "") +
|
|
||||||
(" and" if base_currency and quote_currency else "") +
|
|
||||||
(f" with {quote_currency} as quote currency" if quote_currency else "") +
|
|
||||||
(f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".")
|
(f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".")
|
||||||
elif args.get('print_one_column', False):
|
elif args.get('print_one_column', False):
|
||||||
print('\n'.join(sorted(pairs.keys())))
|
print('\n'.join(sorted(pairs.keys())))
|
||||||
elif args.get('list_pairs_print_json', False):
|
elif args.get('list_pairs_print_json', False):
|
||||||
print(rapidjson.dumps(sorted(pairs.keys()), default=str))
|
print(rapidjson.dumps(sorted(pairs.keys()), default=str))
|
||||||
|
elif args.get('print_csv', False):
|
||||||
|
if len(pairs):
|
||||||
|
writer = csv.DictWriter(sys.stdout, fieldnames=headers, extrasaction='ignore')
|
||||||
|
writer.writeheader()
|
||||||
|
for _, v in pairs.items():
|
||||||
|
writer.writerow({'Id': v['id'], 'Symbol': v['symbol'],
|
||||||
|
'Base': v['base'], 'Quote': v['quote'],
|
||||||
|
'Active': market_is_active(v),
|
||||||
|
'Is pair': market_is_pair(v)})
|
||||||
else:
|
else:
|
||||||
# print data as a table
|
print(summary_str +
|
||||||
headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active']
|
(":" if len(pairs) else "."))
|
||||||
if not pairs_only:
|
if len(pairs):
|
||||||
headers.append('Is pair')
|
# print data as a table
|
||||||
tabular_data = []
|
tabular_data = []
|
||||||
for _, v in pairs.items():
|
for _, v in pairs.items():
|
||||||
tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'],
|
tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'],
|
||||||
"Yes" if market_is_active(v) else "No",
|
"Yes" if market_is_active(v) else "No",
|
||||||
"Yes" if market_is_pair(v) else "No"])
|
"Yes" if market_is_pair(v) else "No"])
|
||||||
print(tabulate(tabular_data, headers=headers, tablefmt='pipe'))
|
print(tabulate(tabular_data, headers=headers, tablefmt='pipe'))
|
||||||
|
Loading…
Reference in New Issue
Block a user