environ & text reformat

This commit is contained in:
Brieuc Dubois 2023-05-19 22:01:51 +02:00
parent 9f0bf8cf16
commit 0b746c4046
3 changed files with 41 additions and 29 deletions

View File

@ -1,3 +0,0 @@
email = ''
telegram_token = ''
telegram_id = ''

View File

@ -1,5 +1,7 @@
FROM python:3 FROM python:3
VOLUME /data
WORKDIR /tg2 WORKDIR /tg2
COPY requirements.txt . COPY requirements.txt .
@ -8,6 +10,5 @@ RUN pip install --no-cache-dir pip && \
pip install --no-cache-dir -r requirements.txt pip install --no-cache-dir -r requirements.txt
COPY main.py . COPY main.py .
COPY config.py .
CMD ["python", "main.py"] CMD ["python", "main.py"]

64
main.py
View File

@ -1,5 +1,3 @@
import config
from tgtg import TgtgClient from tgtg import TgtgClient
import os import os
import json import json
@ -9,22 +7,37 @@ import time
import datetime import datetime
async def main(): client = None
if not os.path.exists('token'): bot = None
client = TgtgClient(email=config.email)
def check_env():
return not (os.environ.get('TGTG_EMAIL') is None or os.environ.get('TELEGRAM_TOKEN') is None or os.environ.get('TELEGRAM_ID') is None)
def load_creds():
global client, bot
if not os.path.exists('/data/token'):
client = TgtgClient(email=os.environ.get('TGTG_EMAIL'))
credentials = client.get_credentials() credentials = client.get_credentials()
with open('token', 'w') as file: with open('/data/token', 'w') as file:
file.write(str(credentials)) file.write(str(credentials))
else: else:
with open('token', 'r') as file: with open('/data/token', 'r') as file:
credentials = json.loads(file.read().replace('\'', '"')) credentials = json.loads(file.read().replace('\'', '"'))
client = TgtgClient(**credentials) client = TgtgClient(**credentials)
bot = telegram.Bot(config.telegram_token) bot = telegram.Bot(os.environ['TELEGRAM_TOKEN'])
async def send_message(text):
async with bot: async with bot:
await bot.send_message(chat_id=config.telegram_id, text='tg² bot is watching!') await bot.send_message(chat_id=os.environ.get('TELEGRAM_ID'), text=text)
async def main():
await send_message('tg² bot is watching!')
last = [] last = []
@ -40,32 +53,31 @@ async def main():
next.append(item["item"]["item_id"]) next.append(item["item"]["item_id"])
if item["item"]["item_id"] not in last: if item["item"]["item_id"] not in last:
amount = item["items_available"] amount = item["items_available"]
name = item["item"]["name"] item_name = item["item"]["name"]
price = item["item"]["price_including_taxes"]["minor_units"]/(10**item["item"]["price_including_taxes"]["decimals"]) price = item["item"]["price_including_taxes"]["minor_units"]/(10**item["item"]["price_including_taxes"]["decimals"])
store = item["store"]["store_name"] + ' (' + item["store"]["branch"] + ')' store_name = item["store"]["store_name"]
store_branch = item["store"]["branch"]
if not name: name = ', '.join(filter(bool, [item_name, store_name, store_branch]))
name = "Panier anti-gaspi"
texts.append(f' - {amount} item(s) of "{name}" ({price:.2f}€) available at "{store}"') texts.append(f'{amount} x "{name}" ({price:.2f}€)')
elif item["item"]["item_id"] in last: # elif item["item"]["item_id"] in last:
amount = item["items_available"] # amount = item["items_available"]
name = item["item"]["name"] # name = item["item"]["name"]
price = item["item"]["price_including_taxes"]["minor_units"]/(10**item["item"]["price_including_taxes"]["decimals"]) # price = item["item"]["price_including_taxes"]["minor_units"]/(10**item["item"]["price_including_taxes"]["decimals"])
store = item["store"]["store_name"] # store = item["store"]["store_name"]
if not name: # if not name:
name = "Panier anti-gaspi" # name = "Panier anti-gaspi"
texts.append(f' - No more "{name}" ({price:.2f}€) available at "{store}"') # texts.append(f' - No more "{name}" ({price:.2f}€) available at "{store}"')
if len(texts) > 1: if len(texts) > 1:
print(f'\n{datetime.datetime.now()}: {len(texts)-1} new items available') print(f'\n{datetime.datetime.now()}: {len(texts)-1} new items available')
async with bot: await send_message('\n'.join(texts))
await bot.send_message(chat_id=config.telegram_id, text='\n'.join(texts))
else: else:
print('-', end='', flush=True) print('-', end='', flush=True)
@ -73,4 +85,6 @@ async def main():
time.sleep(60) time.sleep(60)
if __name__ == '__main__': if __name__ == '__main__':
check_env()
load_creds()
asyncio.run(main()) asyncio.run(main())