api key functionality added
This commit is contained in:
parent
4c0eaef642
commit
051b048848
@ -40,41 +40,9 @@ def updateUpdate(NY_time):
|
||||
f.write(NY_str + '\n')
|
||||
f.close()
|
||||
|
||||
def updateStocksFinhubb():
|
||||
max_stocks = 200
|
||||
finnhubsandboxAPIkey = "sandbox_c24qddqad3ickpckgg8g" #Finnhub
|
||||
finnhubAPIkey = "c24qddqad3ickpckgg80" #Finnhub
|
||||
finnhubClient = finnhub.Client(api_key=finnhubAPIkey)
|
||||
|
||||
|
||||
symbols, stock_info = readJSON('csv/tickers.csv', max_stocks)
|
||||
try:
|
||||
quotes = [finnhubClient.quote(symbol) for symbol in symbols]
|
||||
current_prices = [quote['c'] for quote in quotes]
|
||||
opening_prices = [quote['o'] for quote in quotes]
|
||||
|
||||
|
||||
|
||||
CSV = open('csv/tickers.csv', 'w+')
|
||||
CSV.write('name,current,opening\n')
|
||||
for i, symbol in enumerate(symbols):
|
||||
|
||||
CSV.write(symbol + ',' + str(current_prices[i]) + ',' + str(opening_prices[i]) + '\n')
|
||||
CSV.close()
|
||||
|
||||
|
||||
|
||||
except Exception as e:
|
||||
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
||||
logf.write(str(e))
|
||||
logf.write('. file: ' + fname)
|
||||
logf.write('. line: ' + str(exc_tb.tb_lineno))
|
||||
logf.write('. type: ' + str(exc_type))
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
def updateStocks():
|
||||
def updateStocks(api_key):
|
||||
|
||||
|
||||
try:
|
||||
@ -93,6 +61,8 @@ def updateStocks():
|
||||
|
||||
for symbol in symbols:
|
||||
url += symbol + ','
|
||||
|
||||
url += '&apiKey=' + api_key
|
||||
response = requests.get(url)
|
||||
data = response.json()
|
||||
|
||||
@ -102,7 +72,7 @@ def updateStocks():
|
||||
for stock in data:
|
||||
stock_info[stock['symbol']] = {'current': stock['price'], 'opening': float(stock['price']) - float(stock['change_since'])}
|
||||
|
||||
|
||||
print(stock_info)
|
||||
all_stocks_settings['symbols'] = stock_info
|
||||
|
||||
|
||||
@ -120,7 +90,7 @@ def updateStocks():
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateCrypto():
|
||||
def updateCrypto(api_key):
|
||||
|
||||
|
||||
#cypto_info['symbol, base'].keys() = ['current','24hr change']
|
||||
@ -143,6 +113,7 @@ def updateCrypto():
|
||||
for i,s in enumerate(symbols):
|
||||
url += bases[i] + '-' + s + ','
|
||||
url = url[:-1] #remove last comma
|
||||
url += '&apiKey=' + api_key
|
||||
print(url)
|
||||
response = requests.get(url)
|
||||
data = response.json()
|
||||
@ -158,7 +129,7 @@ def updateCrypto():
|
||||
json.dump(all_crypto_settings, open('csv/crypto_settings.json', 'w+'))
|
||||
|
||||
except Exception as e:
|
||||
raise e
|
||||
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
||||
logf.write(str(e))
|
||||
@ -167,7 +138,7 @@ def updateCrypto():
|
||||
logf.write('. type: ' + str(exc_type))
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
def updateForex():
|
||||
def updateForex(api_key):
|
||||
|
||||
|
||||
|
||||
@ -192,6 +163,7 @@ def updateForex():
|
||||
for i,s in enumerate(symbols):
|
||||
url += s + '-' + bases[i] + ','
|
||||
url = url[:-1] #remove last comma
|
||||
url += '&apiKey=' + api_key
|
||||
|
||||
response = requests.get(url)
|
||||
data = response.json()
|
||||
@ -221,7 +193,7 @@ def updateForex():
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateNews():
|
||||
def updateNews(api_key):
|
||||
|
||||
#'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/news?category=technology'
|
||||
#'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/news?country=GB'
|
||||
@ -233,22 +205,19 @@ def updateNews():
|
||||
all_settings = json.load(open('csv/news_settings.json', 'r'))
|
||||
|
||||
|
||||
try:
|
||||
|
||||
|
||||
url = 'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/news?country={}'.format(all_settings['country'])
|
||||
response = requests.get(url)
|
||||
data = response.json()
|
||||
|
||||
|
||||
#load user settings
|
||||
headlines = data
|
||||
headline_sources = [headline['source'] for headline in headlines]
|
||||
except Exception as e:
|
||||
|
||||
print('news ettings not used', e)
|
||||
#if no settings just get top headlines
|
||||
headlines = newsapi.get_top_headlines()['articles']
|
||||
headline_sources = [headline['source']['name'] for headline in headlines]
|
||||
url = 'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/news?country={}'.format(all_settings['country'])
|
||||
|
||||
url += '&apiKey=' + api_key
|
||||
response = requests.get(url)
|
||||
data = response.json()
|
||||
|
||||
|
||||
#load user settings
|
||||
headlines = data
|
||||
headline_sources = [headline['source'] for headline in headlines]
|
||||
|
||||
|
||||
headline_titles = [headline['title'] for headline in headlines]
|
||||
|
||||
@ -263,7 +232,7 @@ def updateNews():
|
||||
|
||||
|
||||
except Exception as e:
|
||||
|
||||
print(response)
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
||||
logf.write(str(e))
|
||||
@ -273,9 +242,9 @@ def updateNews():
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateWeather():
|
||||
def updateWeather(api_key):
|
||||
max_cities = 30
|
||||
api_key = 'a9476947fa1a2f712076453bec4a0df5'
|
||||
|
||||
try:
|
||||
gn = geocoders.GeoNames(username='fintic')
|
||||
|
||||
@ -377,7 +346,7 @@ def updateWeather():
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateLeagueTables():
|
||||
def updateLeagueTables(api_key):
|
||||
|
||||
url = 'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/sports?stats='
|
||||
try:
|
||||
@ -391,6 +360,7 @@ def updateLeagueTables():
|
||||
for league in leagues:
|
||||
url += league + ','
|
||||
url = url[:-1] # remove last comma
|
||||
url += '&apiKey=' + api_key
|
||||
r = requests.get(url)
|
||||
|
||||
all_data = r.json()
|
||||
@ -417,10 +387,11 @@ def updateLeagueTables():
|
||||
|
||||
teams.append(team)
|
||||
leagues_info[league.upper()] = teams
|
||||
|
||||
all_settings['leagues'] = leagues_info
|
||||
json.dump(all_settings, open( "csv/league_tables.json".format(league), 'w+' ))
|
||||
except Exception as e:
|
||||
raise e
|
||||
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
||||
logf.write(str(e))
|
||||
@ -430,7 +401,7 @@ def updateLeagueTables():
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateLeagueEvents(time):
|
||||
def updateLeagueEvents(api_key, time):
|
||||
|
||||
url = 'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/sports?{}='.format(time)
|
||||
|
||||
@ -443,7 +414,7 @@ def updateLeagueEvents(time):
|
||||
elif time == 'livescore':
|
||||
f = open('csv/live_games.json')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
try:
|
||||
@ -455,12 +426,13 @@ def updateLeagueEvents(time):
|
||||
for league in leagues:
|
||||
url += league + ','
|
||||
url = url[:-1] # remove last comma
|
||||
url += '&apiKey=' + api_key
|
||||
|
||||
r = requests.get(url)
|
||||
|
||||
all_data = r.json()
|
||||
|
||||
print(all_data['NFL'][0])
|
||||
print(all_data)
|
||||
|
||||
events = []
|
||||
|
||||
@ -501,14 +473,14 @@ def updateLeagueEvents(time):
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
|
||||
def updateSports():
|
||||
def updateSports(api_key):
|
||||
#read user settings to decide which sprots to update
|
||||
|
||||
updateLeagueTables()
|
||||
updateLeagueTables(api_key)
|
||||
|
||||
#updateLeagueEvents('livescore')
|
||||
#updateLeagueEvents('past')
|
||||
#updateLeagueEvents('upcoming')
|
||||
updateLeagueEvents(api_key,'livescore')
|
||||
updateLeagueEvents(api_key,'past')
|
||||
updateLeagueEvents(api_key,'upcoming')
|
||||
|
||||
|
||||
|
||||
@ -533,12 +505,12 @@ def checkStocks(last_update, update_frequency):
|
||||
|
||||
if diff >= update_frequency:
|
||||
updated = True
|
||||
updateStocks()
|
||||
|
||||
|
||||
|
||||
elif emptyInfo(symbols, stock_info): # if theres any empty stocks
|
||||
updated = True
|
||||
updateStocks()
|
||||
|
||||
|
||||
|
||||
else:
|
||||
@ -549,18 +521,18 @@ def checkStocks(last_update, update_frequency):
|
||||
|
||||
if last_update < yday_closing:
|
||||
updated = True
|
||||
updateStocks()
|
||||
|
||||
|
||||
return updated
|
||||
|
||||
|
||||
def updateAll():
|
||||
updateStocks()
|
||||
updateCrypto()
|
||||
updateForex()
|
||||
updateNews()
|
||||
updateSports()
|
||||
updateWeather()
|
||||
def updateAll(api_key):
|
||||
updateStocks(api_key)
|
||||
updateCrypto(api_key)
|
||||
updateForex(api_key)
|
||||
updateNews(api_key)
|
||||
updateSports(api_key)
|
||||
updateWeather(api_key)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@ -569,7 +541,7 @@ if __name__ == '__main__':
|
||||
t = time.time()
|
||||
|
||||
|
||||
newsapi = NewsApiClient(api_key='cf08652bd17647b89aaf469a1a8198a9')
|
||||
|
||||
|
||||
|
||||
update_frequencies = {'stocks':1, 'crypto':5, 'forex':60, 'news':120, 'weather': 120, 'sports': 120} #minutes
|
||||
@ -588,8 +560,24 @@ if __name__ == '__main__':
|
||||
#update_times = {'stocks':NY_str, 'crypto':NY_str, 'news':NY_str, 'weather': NY_str, 'forex': CET_str} # all in NY time apart from forex in CET
|
||||
#json.dump(update_times, f)
|
||||
#f.close()
|
||||
|
||||
|
||||
|
||||
f = open('api_keys.txt')
|
||||
|
||||
api_keys = f.readlines()
|
||||
api_key = api_keys[0].strip()
|
||||
|
||||
try:
|
||||
weather_key = api_keys[1].strip()
|
||||
except Exception as e:
|
||||
|
||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
||||
logf.write(str(e))
|
||||
logf.write('. file: ' + fname)
|
||||
logf.write('. line: ' + str(exc_tb.tb_lineno))
|
||||
logf.write('. type: ' + str(exc_type))
|
||||
logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
||||
|
||||
try:
|
||||
f = open('csv/last_updates.json', 'r')
|
||||
last_updates = json.load(f)
|
||||
@ -608,7 +596,7 @@ if __name__ == '__main__':
|
||||
|
||||
msg = getInput()
|
||||
if msg == 'A':
|
||||
updateAll()
|
||||
updateAll(api_key)
|
||||
|
||||
#stocks
|
||||
stock_time = datetime.strptime(last_updates['stocks'], "%d/%m/%Y %H:%M:%S")
|
||||
@ -616,7 +604,7 @@ if __name__ == '__main__':
|
||||
if checkStocks(stock_time, stock_frequency) or msg == 's':
|
||||
stock_time = NY_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
last_updates['stocks'] = stock_time
|
||||
updateStocks()
|
||||
updateStocks(api_key)
|
||||
|
||||
# crypto
|
||||
crypto_time = datetime.strptime(last_updates['crypto'], "%d/%m/%Y %H:%M:%S")
|
||||
@ -626,7 +614,7 @@ if __name__ == '__main__':
|
||||
diff = (NY_time - crypto_time).total_seconds()/60 #minutes
|
||||
if diff >= update_frequencies['crypto'] or msg == 'c':
|
||||
crypto_time = NY_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
updateCrypto()
|
||||
updateCrypto(api_key)
|
||||
last_updates['crypto'] = crypto_time
|
||||
|
||||
|
||||
@ -638,7 +626,7 @@ if __name__ == '__main__':
|
||||
diff = (NY_time - weather_time).total_seconds()/60 #minutes
|
||||
if diff >= update_frequencies['weather'] or msg == 'w':
|
||||
weather_time = NY_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
updateWeather()
|
||||
updateWeather(weather_key)
|
||||
last_updates['weather'] = weather_time
|
||||
|
||||
|
||||
@ -650,7 +638,7 @@ if __name__ == '__main__':
|
||||
diff = (NY_time - news_time).total_seconds()/60 #minutes
|
||||
if diff >= update_frequencies['news'] or msg == 'n':
|
||||
news_time = NY_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
updateNews()
|
||||
updateNews(api_key)
|
||||
last_updates['news'] = news_time
|
||||
|
||||
# sports
|
||||
@ -661,7 +649,7 @@ if __name__ == '__main__':
|
||||
diff = (NY_time - sports_time).total_seconds()/60 #minutes
|
||||
if diff >= update_frequencies['sports'] or msg == 'S':
|
||||
sports_time = NY_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
updateSports()
|
||||
updateSports(api_key)
|
||||
last_updates['sports'] = sports_time
|
||||
|
||||
#forex updates once every 24hours at 1700 CET
|
||||
@ -680,7 +668,7 @@ if __name__ == '__main__':
|
||||
if forex_time < yday_update or msg == 'f' or (diff >= update_frequencies['forex'] and forex_open):
|
||||
forex_time = CET_time.strftime("%d/%m/%Y %H:%M:%S")
|
||||
last_updates['forex'] = forex_time
|
||||
updateForex()
|
||||
updateForex(api_key)
|
||||
|
||||
|
||||
json.dump(last_updates, open('csv/last_updates.json', 'w+'))
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
touch log.txt
|
||||
touch api_keys.txt
|
||||
|
||||
mkdir user_uploads
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user