""" script for news fetching (by keywords) """ __author__ = "Florian Kellermann, Linus Eickhoff" __date__ = "15.03.2022" __version__ = "0.0.1" __license__ = "None" import sys import os import json import requests from newsapi import NewsApiClient from dotenv import load_dotenv load_dotenv() # Init api_key = os.getenv('NEWS_API_KEY') newsapi = NewsApiClient(api_key=api_key) source_json = requests.get(f"https://newsapi.org/v2/top-headlines/sources?apiKey={api_key}&language=en").json() sources = source_json["sources"] str_sources = ",".join([source["id"] for source in sources]) def get_top_news_by_keyword(keyword): """get top news to keyword Args: keyword (String): keyword for search Returns: JSON/dict: dict containing articles """ top_headlines = newsapi.get_top_headlines(q=keyword, sources=str_sources, language='en') return top_headlines def format_article(article): """format article for messaging (using markdown syntax) Args: article (dict): article to format for messaging Returns: String: formatted article """ sourcename = article["source"]["name"] headline = article["title"] url = article["url"] formatted_article = f"_{sourcename}_\n*{headline}*\n\n{url}" return formatted_article if __name__ == '__main__': print("fetching top news by keyword business...") articles = get_top_news_by_keyword("bitcoin") formatted_article = format_article(articles["articles"][0]) print(formatted_article)