From 12994f774c407c8eabd3a789ae02eef5ed03f336 Mon Sep 17 00:00:00 2001 From: AB Date: Sun, 24 May 2020 22:00:20 +0300 Subject: [PATCH] Added setup. --- .gitignore | 4 +++ README | 5 ++++ gaspar/__init__.py | 0 database.py => gaspar/database.py | 4 ++- main.py => gaspar/gaspar.py | 12 +++++--- notify.py => gaspar/notify.py | 4 +-- rutracker.py => gaspar/rutracker.py | 4 +-- scheme.sql => gaspar/scheme.sql | 0 requirements.txt | 1 + setup.py | 45 +++++++++++++++++++++++++++++ 10 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 README create mode 100644 gaspar/__init__.py rename database.py => gaspar/database.py (97%) rename main.py => gaspar/gaspar.py (94%) rename notify.py => gaspar/notify.py (96%) rename rutracker.py => gaspar/rutracker.py (95%) rename scheme.sql => gaspar/scheme.sql (100%) create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index 5237699..89dc5fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ __pycache__/ data.sqlite +build/ +dist/ +gaspar.egg-info/ + diff --git a/README b/README new file mode 100644 index 0000000..99e4022 --- /dev/null +++ b/README @@ -0,0 +1,5 @@ +### Gaspar telegram bot + +Telegram bot for notification about topic update on rutracker via telegram. + +also you can use already runned bot instance - @let_you_know_bot diff --git a/gaspar/__init__.py b/gaspar/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/database.py b/gaspar/database.py similarity index 97% rename from database.py rename to gaspar/database.py index 1eefcca..1cfa350 100644 --- a/database.py +++ b/gaspar/database.py @@ -6,6 +6,7 @@ import sqlite3 import logging +import os log = logging.getLogger("gaspar.%s" % __name__) @@ -18,7 +19,7 @@ class DBInitException(Exception): class DataBase: """This class create or use existent SQLite database file. It provides high-level methods for database.""" - def __init__(self, scheme, basefile='data.sqlite'): + def __init__(self, scheme, basefile='/usr/share/gaspar/data.sqlite'): """ Constructor creates new SQLite database if it doesn't exist. Uses SQL code from file for DB init. @@ -30,6 +31,7 @@ class DataBase: self.basefile = basefile try: conn = self.connect(basefile=basefile) + log.info("Using '%s' base file.", os.path.realpath(basefile)) except: log.debug('Could not connect to DataBase.') return None diff --git a/main.py b/gaspar/gaspar.py similarity index 94% rename from main.py rename to gaspar/gaspar.py index c76fc19..4a69e3c 100644 --- a/main.py +++ b/gaspar/gaspar.py @@ -1,12 +1,13 @@ import os +import sys import logging from urllib import parse -from rutracker import Torrent -from notify import update_watcher from datetime import datetime -from database import DataBase from telegram import * from telegram.ext import Updater, MessageHandler, CommandHandler, filters +from .rutracker import Torrent +from .notify import update_watcher +from .database import DataBase logging.basicConfig( level=logging.INFO, @@ -25,6 +26,9 @@ def sizeof_fmt(num, suffix='B'): def main(): token = os.environ.get('TG_TOKEN') + if not token: + log.error("Env var TG_TOKEN isn't set.") + sys.exit(1) """Run bot.""" def add(update, context): @@ -78,8 +82,8 @@ def main(): updater = Updater(token, use_context=True) update_watcher(updater.bot) - updater.dispatcher.add_handler(MessageHandler(filters.Filters.text, add)) updater.dispatcher.add_handler(CommandHandler('list', list_alerts)) + updater.dispatcher.add_handler(MessageHandler(filters.Filters.text, add)) updater.start_polling() updater.idle() diff --git a/notify.py b/gaspar/notify.py similarity index 96% rename from notify.py rename to gaspar/notify.py index 0ccbe44..4145ddd 100644 --- a/notify.py +++ b/gaspar/notify.py @@ -1,10 +1,10 @@ import time import threading import logging -from rutracker import Torrent from datetime import datetime +from .rutracker import Torrent -UPDATE_INTERVAL = 6 * 60 * 60 # in secs +UPDATE_INTERVAL = 2 * 60 * 60 # in secs. log = logging.getLogger("gaspar.%s" % __name__) diff --git a/rutracker.py b/gaspar/rutracker.py similarity index 95% rename from rutracker.py rename to gaspar/rutracker.py index d74e466..8dafe28 100644 --- a/rutracker.py +++ b/gaspar/rutracker.py @@ -1,13 +1,13 @@ import urllib.request, json -from database import DataBase import logging import re +from .database import DataBase log = logging.getLogger("gaspar.%s" % __name__) class Torrent: def __init__(self, tor_id=None): - self.db = DataBase("scheme.sql") + self.db = DataBase("/usr/share/gaspar/scheme.sql") self.api_url = "http://api.rutracker.org/v1/" self.tor_id = tor_id self.meta = None diff --git a/scheme.sql b/gaspar/scheme.sql similarity index 100% rename from scheme.sql rename to gaspar/scheme.sql diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2e299b8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +python-telegram-bot==12.7 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..648077d --- /dev/null +++ b/setup.py @@ -0,0 +1,45 @@ +import os, subprocess +from setuptools import setup + +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() + +def get_requires(rfile): + """Get list of required Python packages.""" + requires = list() + with open(rfile, "r") as reqfile: + for line in reqfile.readlines(): + requires.append(line.strip()) + return requires + + + +setup( + name = "gaspar", + version = "0.0.1", + author = "UltraDesu", + author_email = "ultradesu@hexor.ru", + description = ("Telegram bot. Keep an eye on rutracker.org topics and let you " + "know if it has been updated."), + license = "WTFPL", + keywords = "telegram bot", + url = "https://github.com/house-of-vanity/gapsar", + packages=['gaspar'], + long_description=read('README'), + classifiers=[ + "Development Status :: 3 - Alpha", + "Topic :: Utilities", + ], + entry_points={ + 'console_scripts': [ + 'gaspar = gaspar.gaspar:main', + ] + }, + data_files=[ + ("/usr/share/gaspar", ['gaspar/scheme.sql']), + ], + install_requires=get_requires("./requirements.txt") +) + +os.umask(0o666) +subprocess.call(['chmod', '-R', 'a+rwX', '/usr/share/gaspar'])