diff --git a/gaspar/database.py b/gaspar/database.py index 1cfa350..4d3b1ae 100644 --- a/gaspar/database.py +++ b/gaspar/database.py @@ -8,7 +8,7 @@ import sqlite3 import logging import os -log = logging.getLogger("gaspar.%s" % __name__) +log = logging.getLogger(__name__) class DBInitException(Exception): """ Exception at DB Init """ diff --git a/gaspar/gaspar.py b/gaspar/gaspar.py index 4a69e3c..6df8490 100644 --- a/gaspar/gaspar.py +++ b/gaspar/gaspar.py @@ -2,28 +2,20 @@ import os import sys import logging from urllib import parse -from datetime import datetime from telegram import * from telegram.ext import Updater, MessageHandler, CommandHandler, filters from .rutracker import Torrent from .notify import update_watcher from .database import DataBase +from .tools import format_topic logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') -log = logging.getLogger("gaspar.%s" % __name__) +log = logging.getLogger(__name__) torrent = Torrent() -def sizeof_fmt(num, suffix='B'): - num = int(num) - for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']: - if abs(num) < 1024.0: - return "%3.1f%s%s" % (num, unit, suffix) - num /= 1024.0 - return "%.1f%s%s" % (num, 'Yi', suffix) - def main(): token = os.environ.get('TG_TOKEN') if not token: @@ -50,13 +42,14 @@ def main(): torrent.db.save_tor(torrent.meta) torrent.db.save_user(update.message.chat) torrent.db.save_alert(update.message.chat['id'], torrent.meta['id']) - reg_time = datetime.utcfromtimestamp(int(torrent.meta['reg_time']) - ).strftime('%b-%d-%Y') - msg = f"""{torrent.meta['topic_title']} -Size: {sizeof_fmt(torrent.meta['size'])} -Hash: {torrent.meta['info_hash']} -Updated: {reg_time}""" - update.message.reply_text(msg, parse_mode='HTML') + msg = format_topic( + torrent.meta['id'], + torrent.meta['topic_title'], + torrent.meta['size'], + torrent.meta['info_hash'], + torrent.meta['reg_time'], + pre='You will be alerted about\n') + update.message.reply_text(msg, parse_mode='HTML', disable_web_page_preview=True) def list_alerts(update, context): @@ -70,12 +63,12 @@ def main(): return True msg = "Configured alerts:\n" for alert in alerts: - reg_time = datetime.utcfromtimestamp(int(alert['reg_time']) - ).strftime('%b-%d-%Y') - msg += f"""{alert['topic_title']} - 💿Size: {sizeof_fmt(alert['size'])} - #️⃣Hash: {alert['info_hash']} - 📅Updated: {reg_time}\n""" + msg += format_topic( + alert['id'], + alert['topic_title'], + alert['size'], + alert['info_hash'], + alert['reg_time']) update.message.reply_text(msg, parse_mode='HTML', disable_web_page_preview=True) diff --git a/gaspar/notify.py b/gaspar/notify.py index 4145ddd..39aa026 100644 --- a/gaspar/notify.py +++ b/gaspar/notify.py @@ -3,10 +3,11 @@ import threading import logging from datetime import datetime from .rutracker import Torrent +from .tools import format_topic UPDATE_INTERVAL = 2 * 60 * 60 # in secs. -log = logging.getLogger("gaspar.%s" % __name__) +log = logging.getLogger(__name__) torrent = Torrent() @@ -43,6 +44,14 @@ def update_watcher(bot): 💿Size: {sizeof_fmt(torrent.meta['size'])} #️⃣Hash: {torrent.meta['info_hash']} 📅Updated: {reg_time}\n""" + + msg = format_topic( + torrent.meta['id'], + torrent.meta['topic_title'], + torrent.meta['size'], + torrent.meta['info_hash'], + torrent.meta['reg_time'], + pre='Topic has been updated\n') subs = torrent.db.get_subscribers(alert['id']) for sub in subs: bot.sendMessage(sub, msg, parse_mode='HTML', disable_web_page_preview=True) diff --git a/gaspar/rutracker.py b/gaspar/rutracker.py index 8dafe28..a514b90 100644 --- a/gaspar/rutracker.py +++ b/gaspar/rutracker.py @@ -3,7 +3,7 @@ import logging import re from .database import DataBase -log = logging.getLogger("gaspar.%s" % __name__) +log = logging.getLogger(__name__) class Torrent: def __init__(self, tor_id=None): diff --git a/gaspar/tools.py b/gaspar/tools.py new file mode 100644 index 0000000..f564284 --- /dev/null +++ b/gaspar/tools.py @@ -0,0 +1,18 @@ +from datetime import datetime + +def format_topic(tor_id, topic_title, size, info_hash, reg_time, pre=None): + def sizeof_fmt(num, suffix='B'): + num = int(num) + for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']: + if abs(num) < 1024.0: + return "%3.1f%s%s" % (num, unit, suffix) + num /= 1024.0 + return "%.1f%s%s" % (num, 'Yi', suffix) + size = sizeof_fmt(size) + reg_time = datetime.utcfromtimestamp(int(reg_time) + ).strftime('%b-%d-%Y') + msg = f"""{pre}{topic_title} +💿 Size: {size} +#️⃣ Hash: {info_hash} +📅 Updated: {reg_time}\n""" + return msg