workaround for connection problems

This commit is contained in:
Rripped 2022-03-29 12:04:49 +02:00
parent 4c517998ba
commit 4afd1ab87b
3 changed files with 39 additions and 14 deletions

View File

@ -83,16 +83,20 @@ class API_Handler:
Returns: Returns:
list: list of keywords list: list of keywords
""" """
keywords = []
with r.Session() as s: with r.Session() as s:
headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)} headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)}
req = s.get(self.db_adress + "/keywords", headers=headers) req = s.get(self.db_adress + "/keywords", headers=headers)
print(req.status_code) if(req.status_code == 200):
keywords_json = req.json()["data"] keywords_json = req.json()["data"]
keywords = [] for keyword in keywords_json:
for keyword in keywords_json: keywords.append(keyword["keyword"])
keywords.append(keyword["keyword"])
return keywords
else:
return self.get_user_keywords(user_id) # might end in infinite loop!!
return keywords
def set_keyword(self, user_id, keyword): def set_keyword(self, user_id, keyword):
@ -193,8 +197,10 @@ class API_Handler:
with r.Session() as s: with r.Session() as s:
headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)} headers = {'Authorization': 'Bearer ' + self.token + ":" + str(user_id)}
req = s.get(self.db_adress + "/transactions", headers=headers) req = s.get(self.db_adress + "/transactions", headers=headers)
transactions_dict = dict(req.json()["data"])
return transactions_dict if req.status_code == 200:
transactions_dict = dict(req.json()["data"])
return transactions_dict
def set_transaction(self, user_id, count, price, symbol, timestamp): def set_transaction(self, user_id, count, price, symbol, timestamp):

View File

@ -245,12 +245,12 @@ def send_news(message):
user_id = int(message.from_user.id) user_id = int(message.from_user.id)
keywords = api_handler.get_user_keywords(user_id) keywords = api_handler.get_user_keywords(user_id)
keyword_search = 'OR'.join(keywords) keywords_search = ','.join(keywords)
news_list = api_handler.get_news_for_keyword(keyword_search)['articles'] news_list = news.get_top_news_by_keyword(keywords_search)["articles"]
for news in news_list: for article in news_list:
formatted_article = news.format_article(news) formatted_article = news.format_article(article)
bot.send_message(chat_id=user_id, text=formatted_article, parse_mode="MARKDOWN") bot.send_message(chat_id=user_id, text=formatted_article, parse_mode="MARKDOWN")
@ -275,6 +275,7 @@ def store_keyword(message):
api_handler.set_keyword(user_id, keyword) api_handler.set_keyword(user_id, keyword)
bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" added.') bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" added.')
@bot.message_handler(commands=['removekeyword']) @bot.message_handler(commands=['removekeyword'])
def remove_keyword(message): def remove_keyword(message):
""" Remove keyword from user """ Remove keyword from user
@ -296,6 +297,21 @@ def remove_keyword_step(message):
bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" removed.') bot.send_message(chat_id=user_id, text=f'Keyword "{keyword}" removed.')
@bot.message_handler(commands=['keywords'])
def send_keywords(message):
""" Send keywords of user
:type message: message object bot
:param message: message that was reacted to, in this case always '/keywords'
:raises: none
:rtype: none
"""
user_id = int(message.from_user.id)
keywords = api_handler.get_user_keywords(user_id)
bot.send_message(chat_id=user_id, text=f'Your keywords are: {keywords}')
@bot.message_handler(func=lambda message: True) # Returning that command is unkown for any other statement @bot.message_handler(func=lambda message: True) # Returning that command is unkown for any other statement
def echo_all(message): def echo_all(message):

View File

@ -6,6 +6,7 @@ __date__ = "15.03.2022"
__version__ = "0.0.1" __version__ = "0.0.1"
__license__ = "None" __license__ = "None"
from ast import parse
import sys import sys
import os import os
import json import json
@ -13,6 +14,7 @@ import requests
from newsapi import NewsApiClient from newsapi import NewsApiClient
from dotenv import load_dotenv from dotenv import load_dotenv
import urllib.parse as urlparse
load_dotenv() load_dotenv()
@ -31,8 +33,9 @@ def get_top_news_by_keyword(keyword):
Returns: Returns:
JSON/dict: dict containing articles JSON/dict: dict containing articles
""" """
top_headlines = newsapi.get_top_headlines(q=keyword, sources=str_sources, language='en') keyword_url = urlparse.quote(keyword)
top_headlines = newsapi.get_top_headlines(q=keyword_url, sources=str_sources, language='en')
return top_headlines return top_headlines
def format_article(article): def format_article(article):