mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 21:12:16 +00:00
* Fixed isort * Fixed issues * FIxed linters --------- Co-authored-by: James Maslek <jmaslek11@gmail.com>
42 lines
1.0 KiB
Python
42 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()
|