Added setup.

This commit is contained in:
AB
2020-05-24 22:00:20 +03:00
parent 46e59d3eb6
commit 12994f774c
10 changed files with 70 additions and 9 deletions

4
.gitignore vendored
View File

@ -1,2 +1,6 @@
__pycache__/ __pycache__/
data.sqlite data.sqlite
build/
dist/
gaspar.egg-info/

5
README Normal file
View File

@ -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

0
gaspar/__init__.py Normal file
View File

View File

@ -6,6 +6,7 @@
import sqlite3 import sqlite3
import logging import logging
import os
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger("gaspar.%s" % __name__)
@ -18,7 +19,7 @@ class DBInitException(Exception):
class DataBase: class DataBase:
"""This class create or use existent SQLite database file. It provides """This class create or use existent SQLite database file. It provides
high-level methods for database.""" 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 Constructor creates new SQLite database if
it doesn't exist. Uses SQL code from file for DB init. it doesn't exist. Uses SQL code from file for DB init.
@ -30,6 +31,7 @@ class DataBase:
self.basefile = basefile self.basefile = basefile
try: try:
conn = self.connect(basefile=basefile) conn = self.connect(basefile=basefile)
log.info("Using '%s' base file.", os.path.realpath(basefile))
except: except:
log.debug('Could not connect to DataBase.') log.debug('Could not connect to DataBase.')
return None return None

View File

@ -1,12 +1,13 @@
import os import os
import sys
import logging import logging
from urllib import parse from urllib import parse
from rutracker import Torrent
from notify import update_watcher
from datetime import datetime from datetime import datetime
from database import DataBase
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 .notify import update_watcher
from .database import DataBase
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
@ -25,6 +26,9 @@ def sizeof_fmt(num, suffix='B'):
def main(): def main():
token = os.environ.get('TG_TOKEN') token = os.environ.get('TG_TOKEN')
if not token:
log.error("Env var TG_TOKEN isn't set.")
sys.exit(1)
"""Run bot.""" """Run bot."""
def add(update, context): def add(update, context):
@ -78,8 +82,8 @@ def main():
updater = Updater(token, use_context=True) updater = Updater(token, use_context=True)
update_watcher(updater.bot) 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(CommandHandler('list', list_alerts))
updater.dispatcher.add_handler(MessageHandler(filters.Filters.text, add))
updater.start_polling() updater.start_polling()
updater.idle() updater.idle()

View File

@ -1,10 +1,10 @@
import time import time
import threading import threading
import logging import logging
from rutracker import Torrent
from datetime import datetime 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__) log = logging.getLogger("gaspar.%s" % __name__)

View File

@ -1,13 +1,13 @@
import urllib.request, json import urllib.request, json
from database import DataBase
import logging import logging
import re import re
from .database import DataBase
log = logging.getLogger("gaspar.%s" % __name__) log = logging.getLogger("gaspar.%s" % __name__)
class Torrent: class Torrent:
def __init__(self, tor_id=None): 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.api_url = "http://api.rutracker.org/v1/"
self.tor_id = tor_id self.tor_id = tor_id
self.meta = None self.meta = None

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
python-telegram-bot==12.7

45
setup.py Normal file
View File

@ -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'])