Updater script which should keep base up to date.

This commit is contained in:
UltraDesu
2018-01-17 03:43:23 +03:00
parent 0f7ae242dc
commit 94e0637ae3
5 changed files with 263 additions and 25 deletions

45
updater.py Normal file
View File

@ -0,0 +1,45 @@
# TODO - config file.
import pymysql.cursors
import urllib.request, json
import datetime as dt
interval = '1 HOUR'
# Connect to the database
connection = pymysql.connect(host='localhost',
user='root',
db='test',
cursorclass=pymysql.cursors.DictCursor)
# If u_date which already stored older than fresh u_date
# so going to notify
# Any way update last_check
def check_updates(id, u_date):
with urllib.request.urlopen(
"http://api.rutracker.org/v1/get_tor_topic_data?by=topic_id&val="+id) as url:
data = json.loads(url.read().decode())
last_check = dt.datetime.now()
new_u_date = dt.datetime.fromtimestamp(int(data['result'][id]['reg_time']))
if new_u_date > u_date:
print("There is an update. Going to notify.")
with connection.cursor() as cursor:
# Create a new record
sql = "UPDATE url SET last_check = %s, u_date = %s WHERE link = %s"
cursor.execute(sql, (
last_check.strftime('%Y-%m-%d %H:%M:%S'),
new_u_date.strftime('%Y-%m-%d %H:%M:%S'),
id))
connection.commit()
try:
with connection.cursor() as cursor:
# Read a single record
sql = "SELECT * FROM url WHERE last_check < DATE_SUB(NOW(), INTERVAL %s)" % interval
cursor.execute(sql)
result = cursor.fetchall()
for line in result:
print('Going to check %s. Last check was at %s' % (line['link'], line['last_check']))
check_updates(line['link'], line['u_date'])
finally:
connection.close()