def estimates(ticker: str, export: str): """Display analysts' estimates for a given ticker. [Source: Business Insider] Parameters ---------- ticker : str Ticker to get analysts' estimates export : str Export dataframe data to csv,json,xlsx file """ ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) print_rich_table( df_year_estimates, headers=list(df_year_estimates.columns), show_index=True, title="Annual Earnings Estimates", ) console.print("") print_rich_table( df_quarter_earnings, headers=list(df_quarter_earnings.columns), show_index=True, title="Quarterly Earnings Estimates", ) console.print("") print_rich_table( df_quarter_revenues, headers=list(df_quarter_revenues.columns), show_index=True, title="Quarterly Revenue Estimates", ) console.print("") export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_year", df_year_estimates, ) export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_qtr_earnings", df_quarter_earnings, ) export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_qtr_revenues", df_quarter_revenues, )
async def est_command(ctx, ticker=""): """Displays earning estimates [Business Insider]""" try: # Debug if cfg.DEBUG: print(f"!stocks.dd.est {ticker}") # Check for argument if ticker == "": raise Exception("Stock ticker is required") ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) if (df_quarter_revenues.empty and df_year_estimates.empty and df_quarter_earnings.empty): raise Exception("Enter a valid ticker") # Debug user output if cfg.DEBUG: print(df_year_estimates.to_string()) print(df_quarter_earnings.to_string()) print(df_quarter_revenues.to_string()) # Output data cols = [] initial_text = ( "´´´Page 0: Overview\nPage 1: Year Estimates\n" "Page 2: Quarter Earnings\nPage 3: Quarter Revenues´´´") text = "´´´" + df_year_estimates.to_string() + "´´´" cols.append(text) text = "´´´" + df_quarter_earnings.to_string() + "´´´" cols.append(text) text = "´´´" + df_quarter_revenues.to_string() + "´´´" cols.append(text) columns = [] columns.append( discord.Embed( title="Stocks: [Business Insider] Earning Estimates", description=initial_text, colour=cfg.COLOR, ).set_author( name=cfg.AUTHOR_NAME, icon_url=cfg.AUTHOR_ICON_URL, )) for text in cols: columns.append( discord.Embed( description=text, colour=cfg.COLOR, ).set_author( name=cfg.AUTHOR_NAME, icon_url=cfg.AUTHOR_ICON_URL, )) await pagination(columns, ctx) except Exception as e: embed = discord.Embed( title="ERROR Stocks: [Business Insider] Earning Estimates", colour=cfg.COLOR, description=e, ) embed.set_author( name=cfg.AUTHOR_NAME, icon_url=cfg.AUTHOR_ICON_URL, ) await ctx.send(embed=embed)
def est_command(ticker: str = ""): """Displays earning estimates [Business Insider]""" # Debug if cfg.DEBUG: logger.debug("dd-est %s", ticker) # Check for argument if ticker == "": raise Exception("Stock ticker is required") ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) if (df_quarter_revenues.empty and df_year_estimates.empty and df_quarter_earnings.empty): raise Exception("Enter a valid ticker") # Debug user output if cfg.DEBUG: logger.debug(df_year_estimates.to_string()) logger.debug(df_quarter_earnings.to_string()) logger.debug(df_quarter_revenues.to_string()) dindex = len(df_year_estimates.index) fig = df2img.plot_dataframe( df_year_estimates, fig_size=(1200, (40 + (60 * dindex))), col_width=[12, 4, 4, 4, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = save_image("estimates.png", fig) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_estimates = uploaded_image.link os.remove(imagefile) fig = df2img.plot_dataframe( df_quarter_earnings, fig_size=(1200, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = save_image("earnings.png", fig) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_earnings = uploaded_image.link os.remove(imagefile) fig = df2img.plot_dataframe( df_quarter_revenues, fig_size=(1200, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = save_image("revenues.png", fig) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_revenues = uploaded_image.link os.remove(imagefile) embeds = [ disnake.Embed( title=f"**{ticker.upper()} Year Estimates**", color=cfg.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Earnings**", colour=cfg.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Revenues**", colour=cfg.COLOR, ), ] embeds[0].set_image(url=link_estimates) embeds[1].set_image(url=link_earnings) embeds[2].set_image(url=link_revenues) titles = [ f"**{ticker.upper()} Year Estimates**", f"**{ticker.upper()} Quarter Earnings**", f"**{ticker.upper()} Quarter Revenues**", ] embeds_img = [ f"{link_estimates}", f"{link_earnings}", f"{link_revenues}", ] # Output data choices = [ disnake.SelectOption(label=f"{ticker.upper()} Year Estimates", value="0", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Earnings", value="1", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Revenues", value="2", emoji="🟢"), ] return { "view": Menu, "titles": titles, "embed": embeds, "choices": choices, "embeds_img": embeds_img, }
def estimates(ticker: str, export: str): """Display analysts' estimates for a given ticker. [Source: Business Insider] Parameters ---------- ticker : str Ticker to get analysts' estimates export : str Export dataframe data to csv,json,xlsx file """ ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) print( tabulate( df_year_estimates, headers=df_year_estimates.columns, floatfmt=".2f", showindex=True, tablefmt="fancy_grid", ), ) print("") print( tabulate( df_quarter_earnings, headers=df_quarter_earnings.columns, floatfmt=".2f", showindex=True, tablefmt="fancy_grid", ), ) print("") print( tabulate( df_quarter_revenues, headers=df_quarter_revenues.columns, floatfmt=".2f", showindex=True, tablefmt="fancy_grid", )) print("") export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_year", df_year_estimates, ) export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_qtr_earnings", df_quarter_earnings, ) export_data( export, os.path.dirname(os.path.abspath(__file__)), "pt_qtr_revenues", df_quarter_revenues, )
def test_get_estimates_quarter_revenues(recorder): _, _, df_quarter_revenues = business_insider_model.get_estimates( ticker="TSLA") result_df = df_quarter_revenues recorder.capture(result_df)
def test_get_estimates_quarter_earnings(recorder): _, df_quarter_earnings, _ = business_insider_model.get_estimates( ticker="TSLA") result_df = df_quarter_earnings recorder.capture(result_df)
def test_get_estimates_year_estimates(recorder): df_year_estimates, _, _ = business_insider_model.get_estimates( ticker="TSLA") result_df = df_year_estimates recorder.capture(result_df)
async def est_command(ctx, ticker: str = ""): """Displays earning estimates [Business Insider]""" try: # Debug if cfg.DEBUG: logger.debug("!stocks.dd.est %s", ticker) # Check for argument if ticker == "": raise Exception("Stock ticker is required") ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) if (df_quarter_revenues.empty and df_year_estimates.empty and df_quarter_earnings.empty): raise Exception("Enter a valid ticker") # Debug user output if cfg.DEBUG: logger.debug(df_year_estimates.to_string()) logger.debug(df_quarter_earnings.to_string()) logger.debug(df_quarter_revenues.to_string()) dindex = len(df_year_estimates.index) fig = df2img.plot_dataframe( df_year_estimates, fig_size=(1200, (40 + (60 * dindex))), col_width=[12, 4, 4, 4, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = "estimates.png" df2img.save_dataframe(fig=fig, filename=imagefile) image = Image.open(imagefile) image = autocrop_image(image, 0) image.save(imagefile, "PNG", quality=100) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_estimates = uploaded_image.link os.remove(imagefile) fig = df2img.plot_dataframe( df_quarter_earnings, fig_size=(1200, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = "earnings.png" df2img.save_dataframe(fig=fig, filename=imagefile) image = Image.open(imagefile) image = autocrop_image(image, 0) image.save(imagefile, "PNG", quality=100) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_earnings = uploaded_image.link os.remove(imagefile) fig = df2img.plot_dataframe( df_quarter_revenues, fig_size=(1200, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_cells=dict(height=35, ), font=dict( family="Consolas", size=20, ), template="plotly_dark", paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = "revenues.png" df2img.save_dataframe(fig=fig, filename=imagefile) image = Image.open(imagefile) image = autocrop_image(image, 0) image.save(imagefile, "PNG", quality=100) uploaded_image = gst_imgur.upload_image(imagefile, title="something") link_revenues = uploaded_image.link os.remove(imagefile) embeds = [ disnake.Embed( title=f"**{ticker.upper()} Year Estimates**", color=cfg.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Earnings**", colour=cfg.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Revenues**", colour=cfg.COLOR, ), ] embeds[0].set_image(url=link_estimates) embeds[1].set_image(url=link_earnings) embeds[2].set_image(url=link_revenues) # Output data choices = [ disnake.SelectOption(label=f"{ticker.upper()} Year Estimates", value="0", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Earnings", value="1", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Revenues", value="2", emoji="🟢"), ] await ctx.send(embed=embeds[0], view=Menu(embeds, choices)) except Exception as e: embed = disnake.Embed( title="ERROR Stocks: [Business Insider] Earning Estimates", colour=cfg.COLOR, description=e, ) embed.set_author( name=cfg.AUTHOR_NAME, icon_url=cfg.AUTHOR_ICON_URL, ) await ctx.send(embed=embed, delete_after=30.0)
def est_command(ticker: str = ""): """Displays earning estimates [Business Insider]""" # Debug if imps.DEBUG: logger.debug("dd est %s", ticker) # Check for argument if ticker == "": raise Exception("Stock ticker is required") ( df_year_estimates, df_quarter_earnings, df_quarter_revenues, ) = business_insider_model.get_estimates(ticker) if (df_quarter_revenues.empty and df_year_estimates.empty and df_quarter_earnings.empty): raise Exception("Enter a valid ticker") # Debug user output if imps.DEBUG: logger.debug(df_year_estimates.to_string()) logger.debug(df_quarter_earnings.to_string()) logger.debug(df_quarter_revenues.to_string()) images_list = [] dindex = len(df_year_estimates.index) fig = imps.plot_df( df_year_estimates, fig_size=(900, (40 + (60 * dindex))), col_width=[9, 4, 4, 4, 4], tbl_header=imps.PLT_TBL_HEADER, tbl_cells=imps.PLT_TBL_CELLS, font=imps.PLT_TBL_FONT, row_fill_color=imps.PLT_TBL_ROW_COLORS, paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = imps.save_image("estimates.png", fig) if imps.IMAGES_URL or not imps.IMG_HOST_ACTIVE: link_estimates = imps.multi_image(imagefile) images_list.append(imagefile) else: link_estimates = imps.multi_image(imagefile) fig = imps.plot_df( df_quarter_earnings, fig_size=(900, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_header=imps.PLT_TBL_HEADER, tbl_cells=imps.PLT_TBL_CELLS, font=imps.PLT_TBL_FONT, row_fill_color=imps.PLT_TBL_ROW_COLORS, paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = imps.save_image("earnings.png", fig) if imps.IMAGES_URL or not imps.IMG_HOST_ACTIVE: link_earnings = imps.multi_image(imagefile) images_list.append(imagefile) else: link_earnings = imps.multi_image(imagefile) fig = imps.plot_df( df_quarter_revenues, fig_size=(900, (40 + (40 * 20))), col_width=[5, 5, 4, 4, 5, 4], tbl_header=imps.PLT_TBL_HEADER, tbl_cells=imps.PLT_TBL_CELLS, font=imps.PLT_TBL_FONT, row_fill_color=imps.PLT_TBL_ROW_COLORS, paper_bgcolor="rgba(0, 0, 0, 0)", ) imagefile = imps.save_image("revenues.png", fig) if imps.IMAGES_URL or not imps.IMG_HOST_ACTIVE: link_revenues = imps.multi_image(imagefile) images_list.append(imagefile) else: link_revenues = imps.multi_image(imagefile) embeds = [ disnake.Embed( title=f"**{ticker.upper()} Year Estimates**", color=imps.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Earnings**", colour=imps.COLOR, ), disnake.Embed( title=f"**{ticker.upper()} Quarter Revenues**", colour=imps.COLOR, ), ] embeds[0].set_image(url=link_estimates) embeds[1].set_image(url=link_earnings) embeds[2].set_image(url=link_revenues) titles = [ f"**{ticker.upper()} Year Estimates**", f"**{ticker.upper()} Quarter Earnings**", f"**{ticker.upper()} Quarter Revenues**", ] embeds_img = [ f"{link_estimates}", f"{link_earnings}", f"{link_revenues}", ] # Output data choices = [ disnake.SelectOption(label=f"{ticker.upper()} Year Estimates", value="0", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Earnings", value="1", emoji="🟢"), disnake.SelectOption(label=f"{ticker.upper()} Quarter Revenues", value="2", emoji="🟢"), ] return { "view": imps.Menu, "titles": titles, "embed": embeds, "choices": choices, "embeds_img": embeds_img, "images_list": images_list, }