Source code for koapy.cli.commands.get.stock_meta.stockinfo

import click

from koapy.cli.utils.fail_with_usage import fail_with_usage
from koapy.cli.utils.verbose_option import verbose_option
from koapy.config import default_encoding


@click.command(short_help="Get basic information of stocks.")
@click.option("-c", "--code", metavar="CODE", help="Stock code to get.")
@click.option(
    "-o",
    "--output",
    metavar="FILENAME",
    type=click.Path(),
    help="Output filename. Optional for single code (prints to console).",
)
@click.option(
    "-f",
    "--format",
    type=click.Choice(["md", "xlsx", "json"], case_sensitive=False),
    help="Output format. (default: md)",
    default="md",
    show_choices=True,
)
@click.option(
    "-p", "--port", metavar="PORT", help="Port number of grpc server (optional)."
)
@verbose_option()
[docs]def stockinfo(code, output, format, port): # pylint: disable=redefined-builtin if (code, output) == (None, None): fail_with_usage() if output is None: if format is None: format = "md" else: if format is None: format = "xlsx" if format == "xlsx": if not output.endswith(".xlsx"): output += ".xlsx" elif format == "md": if not output.endswith(".md"): output += ".md" elif format == "json": if not output.endswith(".json"): output += ".json" import pandas as pd from koapy.backend.kiwoom_open_api_plus.core.KiwoomOpenApiPlusEntrypoint import ( KiwoomOpenApiPlusEntrypoint, ) with KiwoomOpenApiPlusEntrypoint(port=port) as context: context.EnsureConnected() dic = context.GetStockBasicInfoAsDict(code) series = pd.Series(dic) if not output: if format == "md": click.echo(series.to_markdown()) elif format == "json": click.echo(series.to_json()) else: if format == "xlsx": series.to_excel(output, header=False) elif format == "json": with open(output, "w", encoding=default_encoding) as f: click.echo(series.to_json(), file=f)