Added basic output functionality

Closes #1
This commit is contained in:
2021-09-04 03:38:42 +02:00
parent 87a173d904
commit 63c64f389d
3 changed files with 48 additions and 46 deletions

Binary file not shown.

View File

@@ -1,25 +1,35 @@
import configparser import configparser
from notion.client import NotionClient from notion.client import NotionClient
import pandas as pd import pandas as pd
from pandas.core.indexing import convert_from_missing_indexer_tuple
def get_dicts_of_all_items(cv) -> list: class CustomNotionClient():
return [row.get_all_properties() for row in cv.collection.get_rows()] def __init__(self) -> None:
config = configparser.ConfigParser()
config.read('credentials.ini')
def convert_database_to_pandas(cv): self.client = NotionClient(token_v2=config.get("notion", "token"))
dataframe = pd.DataFrame(get_dicts_of_all_items(cv)) self.cv = self.client.get_collection_view(config.get("notion", "database_url"))
dataframe['ablaufdatum'] = [None if time is None else time.start for time in dataframe['ablaufdatum']]
return dataframe
def main(): def __get_dicts_of_all_items(self) -> list:
config = configparser.ConfigParser() return [row.get_all_properties() for row in self.cv.collection.get_rows()]
config.read('credentials.ini')
client = NotionClient(token_v2=config.get("notion", "token")) def convert_database_to_pandas(self):
dataframe = pd.DataFrame(self.__get_dicts_of_all_items())
dataframe['ablaufdatum'] = [None if time is None else time.start for time in dataframe['ablaufdatum']]
return dataframe
# Access a database using the URL of the database page or the inline block def get_names_of_available_products(self):
cv = client.get_collection_view(config.get("notion", "database_url")) names = [f"- {row.name}" for row in self.cv.collection.get_rows() if int(row.anzahl) > 0]
dataframe = convert_database_to_pandas(cv) return '\n'.join(names)
def get_contents_as_string(self):
self.convert_database_to_pandas()
def __main():
notion_client = NotionClient()
dataframe = notion_client.convert_database_to_pandas()
dataframe.to_csv("test.csv") dataframe.to_csv("test.csv")
if __name__ == '__main__': if __name__ == '__main__':
main() __main()

View File

@@ -1,43 +1,35 @@
from telegram import update import configparser
import logging
import re
from telegram.ext import Updater from telegram.ext import Updater
from telegram.ext import CommandHandler from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters from telegram.ext import MessageHandler, Filters
import configparser from notion_client import CustomNotionClient
import logging class FoodBot():
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', def __init__(self) -> None:
level=logging.INFO) logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
logger = logging.getLogger(__name__) level=logging.INFO)
self.logger = logging.getLogger(__name__)
config = configparser.ConfigParser() config = configparser.ConfigParser()
config.read('credentials.ini') config.read('credentials.ini')
updater = Updater(token=config.get("telegram", "token"), use_context=True) self.updater = Updater(token=config.get("telegram", "token"), use_context=True)
dispatcher = updater.dispatcher self.dispatcher = self.updater.dispatcher
logger.info("Started bot")
def start(update, context): self.notion_client = CustomNotionClient()
logger.info(f"Recieved /start message")
context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
start_handler = CommandHandler('start', start) food_handler = MessageHandler(Filters.regex(re.compile('^food$|^essen$', re.IGNORECASE)), self.get_food)
dispatcher.add_handler(start_handler) self.dispatcher.add_handler(food_handler)
def echo(update, context): self.updater.start_polling()
logger.info(f"Recieved message: {update.message.text}")
context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)
echo_handler = MessageHandler(Filters.text & (~Filters.command), echo) self.logger.info("Started bot")
dispatcher.add_handler(echo_handler)
def get_food(update, context): def get_food(self, update, context):
logger.info("Getting food") self.logger.info("Getting food")
if len(context.args) > 0: context.bot.send_message(chat_id=update.effective_chat.id, text=self.notion_client.get_names_of_available_products())
text_caps = ' '.join(context.args).upper()
context.bot.send_message(chat_id=update.effective_chat.id, text=text_caps)
else:
context.bot.send_message(chat_id=update.effective_chat.id, text="No text passed!")
food_handler = CommandHandler('food', get_food) if __name__ == '__main__':
dispatcher.add_handler(food_handler) food_bot = FoodBot()
updater.start_polling()