tgtg-notifier/tgtg_notifier/notifier.py
2024-01-13 12:10:03 +01:00

64 lines
1.6 KiB
Python

from tgtg import TgtgClient
from pprint import pprint
import json
import time
import requests
import random
import schedule
from collections import defaultdict
from .config import CREDFILE, config
previous = defaultdict(int)
creds = {}
with open('.credentials.json', 'r') as f:
creds = json.load(f)
NTFY_CHANNEL = config["ntfy_channel"]
NTFY_CHANNEL_DEBUG = NTFY_CHANNEL + "-debug"
client = TgtgClient(access_token=creds["access_token"], refresh_token=creds["refresh_token"], user_id=creds["user_id"], cookie=creds["cookie"])
def check(item):
#pprint(item)
available = int(item["items_available"])
id = item["store"]["store_id"]
print(f"{id:<10} - { item['display_name']}: { item['items_available']} available")
if available != previous[id]:
previous[id] = available
notify(f"{ available } disponibles para {item['display_name'] }")
return available
def notify(data, url=NTFY_CHANNEL):
print(f"Sending {data} to {url}")
requests.post(url,
data=data.encode(encoding='utf-8'))
def check_watchlist():
watchlist = client.get_items(favorites_only=True)
total = 0
for item in watchlist:
#item = client.get_item(id)
total += check(item)
time.sleep(random.randint(2, 10))
def notify_all():
total = sum(previous.values())
notify(f"List checked. Total available: {total}", url=NTFY_CHANNEL_DEBUG)
schedule.every(1).minutes.do(check_watchlist)
schedule.every(60).minutes.do(notify_all)
while True:
schedule.run_pending()
#check_watchlist()
time.sleep(30)