mirror of
https://github.com/house-of-vanity/gaspar.git
synced 2025-07-06 18:24:07 +00:00
Added setup.
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,6 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
data.sqlite
|
data.sqlite
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
gaspar.egg-info/
|
||||||
|
|
||||||
|
5
README
Normal file
5
README
Normal 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
0
gaspar/__init__.py
Normal 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
|
@ -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()
|
@ -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__)
|
||||||
|
|
@ -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
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
python-telegram-bot==12.7
|
45
setup.py
Normal file
45
setup.py
Normal 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'])
|
Reference in New Issue
Block a user