mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-06-06 04:36:41 +08:00
* BIGGGG LINTING * fixing lints * fixing lints * black * very ruff * no export * fix hedge_view again * lints * platform lints * lints * black * black it @hjoaquim * fix some more linting --------- Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
"""HackerNews Model"""
|
|
|
|
__docformat__ = "numpy"
|
|
|
|
|
|
import logging
|
|
|
|
import pandas as pd
|
|
|
|
from openbb_terminal.decorators import log_start_end
|
|
from openbb_terminal.helper_funcs import request
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@log_start_end(log=logger)
|
|
def get_stories(limit: int = 10) -> pd.DataFrame:
|
|
"""Get top stories from HackerNews.
|
|
Parameters
|
|
----------
|
|
limit: int
|
|
Number of stories to return
|
|
Returns
|
|
-------
|
|
pd.DataFrame
|
|
DataFrame with stories
|
|
"""
|
|
|
|
res = request("https://hacker-news.firebaseio.com/v0/topstories.json")
|
|
if res.status_code == 200:
|
|
top_stories = res.json()
|
|
stories = []
|
|
for story_id in top_stories[:limit]:
|
|
story = request(
|
|
f"https://hacker-news.firebaseio.com/v0/item/{story_id}.json"
|
|
).json()
|
|
stories.append(story)
|
|
df = pd.DataFrame(stories)
|
|
df["time"] = pd.to_datetime(df["time"], unit="s")
|
|
df = df[["title", "url", "score", "type", "time"]]
|
|
return df
|
|
return pd.DataFrame()
|