Improve styling and logging.

This commit is contained in:
AB
2020-05-24 23:05:22 +03:00
parent 12994f774c
commit 95c027ccfa
5 changed files with 46 additions and 26 deletions

View File

@ -8,7 +8,7 @@ import sqlite3
import logging import logging
import os import os
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger(__name__)
class DBInitException(Exception): class DBInitException(Exception):
""" Exception at DB Init """ """ Exception at DB Init """

View File

@ -2,28 +2,20 @@ import os
import sys import sys
import logging import logging
from urllib import parse from urllib import parse
from datetime import datetime
from telegram import * from telegram import *
from telegram.ext import Updater, MessageHandler, CommandHandler, filters from telegram.ext import Updater, MessageHandler, CommandHandler, filters
from .rutracker import Torrent from .rutracker import Torrent
from .notify import update_watcher from .notify import update_watcher
from .database import DataBase from .database import DataBase
from .tools import format_topic
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger(__name__)
torrent = Torrent() 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(): def main():
token = os.environ.get('TG_TOKEN') token = os.environ.get('TG_TOKEN')
if not token: if not token:
@ -50,13 +42,14 @@ def main():
torrent.db.save_tor(torrent.meta) torrent.db.save_tor(torrent.meta)
torrent.db.save_user(update.message.chat) torrent.db.save_user(update.message.chat)
torrent.db.save_alert(update.message.chat['id'], torrent.meta['id']) torrent.db.save_alert(update.message.chat['id'], torrent.meta['id'])
reg_time = datetime.utcfromtimestamp(int(torrent.meta['reg_time']) msg = format_topic(
).strftime('%b-%d-%Y') torrent.meta['id'],
msg = f"""{torrent.meta['topic_title']} torrent.meta['topic_title'],
<b>Size:</b> {sizeof_fmt(torrent.meta['size'])} torrent.meta['size'],
<b>Hash: </b> {torrent.meta['info_hash']} torrent.meta['info_hash'],
<b>Updated: </b>{reg_time}""" torrent.meta['reg_time'],
update.message.reply_text(msg, parse_mode='HTML') 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): def list_alerts(update, context):
@ -70,12 +63,12 @@ def main():
return True return True
msg = "<b>Configured alerts:</b>\n" msg = "<b>Configured alerts:</b>\n"
for alert in alerts: for alert in alerts:
reg_time = datetime.utcfromtimestamp(int(alert['reg_time']) msg += format_topic(
).strftime('%b-%d-%Y') alert['id'],
msg += f"""<a href='https://rutracker.org/forum/viewtopic.php?t={alert['id']}'><b>{alert['topic_title']}</b></a> alert['topic_title'],
<b>💿Size:</b> {sizeof_fmt(alert['size'])} alert['size'],
<b>#⃣Hash: </b> {alert['info_hash']} alert['info_hash'],
<b>📅Updated: </b>{reg_time}\n""" alert['reg_time'])
update.message.reply_text(msg, parse_mode='HTML', disable_web_page_preview=True) update.message.reply_text(msg, parse_mode='HTML', disable_web_page_preview=True)

View File

@ -3,10 +3,11 @@ import threading
import logging import logging
from datetime import datetime from datetime import datetime
from .rutracker import Torrent from .rutracker import Torrent
from .tools import format_topic
UPDATE_INTERVAL = 2 * 60 * 60 # in secs. UPDATE_INTERVAL = 2 * 60 * 60 # in secs.
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger(__name__)
torrent = Torrent() torrent = Torrent()
@ -43,6 +44,14 @@ def update_watcher(bot):
<b>💿Size:</b> {sizeof_fmt(torrent.meta['size'])} <b>💿Size:</b> {sizeof_fmt(torrent.meta['size'])}
<b>#⃣Hash: </b> {torrent.meta['info_hash']} <b>#⃣Hash: </b> {torrent.meta['info_hash']}
<b>📅Updated: </b>{reg_time}\n""" <b>📅Updated: </b>{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='<i>Topic has been updated</i>\n')
subs = torrent.db.get_subscribers(alert['id']) subs = torrent.db.get_subscribers(alert['id'])
for sub in subs: for sub in subs:
bot.sendMessage(sub, msg, parse_mode='HTML', disable_web_page_preview=True) bot.sendMessage(sub, msg, parse_mode='HTML', disable_web_page_preview=True)

View File

@ -3,7 +3,7 @@ import logging
import re import re
from .database import DataBase from .database import DataBase
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger(__name__)
class Torrent: class Torrent:
def __init__(self, tor_id=None): def __init__(self, tor_id=None):

18
gaspar/tools.py Normal file
View File

@ -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}<a href='https://rutracker.org/forum/viewtopic.php?t={tor_id}'><b>{topic_title}</b></a>
<b>💿 Size:</b> <code>{size}</code>
<b>#️⃣ Hash:</b> <code>{info_hash}</code>
<b>📅 Updated:</b> <code>{reg_time}</code>\n"""
return msg