11import logging
2+ from datetime import date , timedelta
23
34from newsapi import NewsApiClient
45
6+ import databaseconnection
57import dynaconfig
68
7- # https://newsapi.org/
9+ API_KEY = dynaconfig .settings ["API_KEY" ]
10+ QUERY = dynaconfig .settings ["QUERY" ]
811
9- API_KEY = dynaconfig .config ["API_KEY" ]
12+ # Use to get news from yesterday to current time
13+ YESTERDAY = date .today () - timedelta (days = 1 )
1014
1115newsapi = NewsApiClient (api_key = API_KEY )
1216
2226)
2327
2428
25- def fetch_info (query : str ) -> dict :
29+ def fetch_info () -> dict :
2630 try :
27- result = newsapi .get_everything (q = query , sort_by = "popularity" )
28- logging .info (f"Searching for { query } " )
31+ result = newsapi .get_everything (
32+ q = QUERY , sort_by = "popularity" , from_param = YESTERDAY
33+ )
34+ logging .info (f"Searching for { QUERY } " )
2935 return result
3036 except ConnectionError as con_err :
3137 logging .error (con_err )
@@ -38,17 +44,42 @@ def fetch_info(query: str) -> dict:
3844def list_info (fetch_info : dict ):
3945 if fetch_info :
4046 for article in fetch_info .get ("articles" ):
41- for article_point , article_data in article .items ():
42- if article_point == "urlToImage" :
47+ for article_key , article_data in article .items ():
48+ if article_key == "urlToImage" :
4349 continue
44- elif article_point == "source" :
45- print (article_point .capitalize (), article_data .get ("name" ))
50+ elif article_key == "source" :
51+ print (article_key .capitalize (), article_data .get ("name" ))
4652 else :
47- print (article_point .capitalize (), article_data )
53+ print (article_key .capitalize (), article_data )
4854 else :
4955 logging .warning ("Empty response from API" )
5056 raise IndexError
5157
5258
59+ def load_to_db ():
60+ for article in fetch_info ().get ("articles" ):
61+ article_list = []
62+ for article_key , article_data in article .items ():
63+ if article_key == "source" :
64+ pass
65+ elif article_key == "content" :
66+ pass
67+ elif article_key == "urlToImage" :
68+ pass
69+ else :
70+ article_list .append (article_data )
71+ article_list .append ("True" )
72+ databaseconnection .insert_into (
73+ databaseconnection .create_connection (databaseconnection .DB_FILE ),
74+ tuple (article_list ),
75+ )
76+
77+
5378if __name__ == "__main__" :
54- list_info (fetch_info ("test" ))
79+ if dynaconfig .settings ["LOAD_TO_DB" ]:
80+ try :
81+ load_to_db ()
82+ except BaseException as base_err :
83+ logging .error (base_err )
84+ else :
85+ list_info (fetch_info ())
0 commit comments