From 0023bc95d5bef479922c7361a5de0efbf2074c08 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Tue, 9 Feb 2016 01:13:17 -0600 Subject: [PATCH] Fixes. --- tif/calc.py | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/tif/calc.py b/tif/calc.py index 66596d6..d0eac20 100644 --- a/tif/calc.py +++ b/tif/calc.py @@ -13,6 +13,8 @@ from oursql import connect __all__ = ["calculate_tif"] +SITE_DB = "enwiki_p" + def _get_db(bot): args = bot.config.wiki["_tifSQL"] args["read_default_file"] = expanduser("~/.my.cnf") @@ -22,17 +24,17 @@ def _get_db(bot): def _count_transclusions(cursor, title): query = """SELECT COUNT(*) - FROM templatelinks + FROM {0}.templatelinks WHERE tl_title = ? AND tl_namespace = 10 AND tl_from_namespace = 0""" - cursor.execute(query, (title,)) + cursor.execute(query.format(SITE_DB), (title,)) return cursor.fetchall()[0][0] -def _count_views(cursor, title, dbname): +def _count_views(cursor, title): query = """SELECT SUM(cache_views), MIN(cache_time) - FROM templatelinks - INNER JOIN {0}.cache ON tl_from = cache_id + FROM {0}.templatelinks + INNER JOIN cache ON tl_from = cache_id WHERE tl_title = ? AND tl_namespace = 10 AND tl_from_namespace = 0""" - cursor.execute(query.format(dbname), (title,)) + cursor.execute(query.format(SITE_DB), (title,)) return cursor.fetchall()[0] def _get_avg_views(site, article): @@ -64,19 +66,18 @@ def _get_avg_views(site, article): return None return sum(item["views"] for item in res["items"]) / float(days) -def _update_views(cursor, site, title, dbname): +def _update_views(cursor, site, title): cache_life = "7 DAY" query1 = """SELECT tl_from - FROM templatelinks - LEFT JOIN {0}.cache ON tl_from = cache_id - WHERE tl_title = ? AND tl_namespace = 10 AND tl_from_namespace = 0 - AND cache_id IS NULL - OR DATE_SUB(NOW(), INTERVAL {1}) > cache_time""" - query2 = """INSERT INTO {0}.cache (cache_id, cache_views, cache_time) + FROM {0}.templatelinks + LEFT JOIN cache ON tl_from = cache_id + WHERE tl_title = ? AND tl_namespace = 10 AND tl_from_namespace = 0 AND + (cache_id IS NULL OR cache_time < DATE_SUB(NOW(), INTERVAL {1}))""" + query2 = """INSERT INTO cache (cache_id, cache_views, cache_time) VALUES (?, ?, NOW()) ON DUPLICATE KEY - UPDATE cache_views = ?, cache_time = NOW()""".format(dbname) + UPDATE cache_views = ?, cache_time = NOW()""" - cursor.execute(query1.format(dbname, cache_life), (title,)) + cursor.execute(query1.format(SITE_DB, cache_life), (title,)) while True: titles = cursor.fetchmany(1024) if not titles: @@ -86,15 +87,12 @@ def _update_views(cursor, site, title, dbname): parambatch = [(t, v, v) for (t, v) in viewcounts if v is not None] cursor.executemany(query2, parambatch) -def _compute_stats(bot, db, page): - dbname = bot.config.wiki["_tifSQL"]["db"] +def _compute_stats(db, page): title = page.title.replace(" ", "_") - with db.cursor() as cursor: transclusions = _count_transclusions(cursor, title) - _update_views(cursor, page.site, title, dbname) - tif, cache_time = _count_views(cursor, title, dbname) - + _update_views(cursor, page.site, title) + tif, cache_time = _count_views(cursor, title) return tif, transclusions, cache_time def _format_time(cache_time): @@ -117,7 +115,7 @@ def calculate_tif(title): result["error"] = "no page" return result - tif, transclusions, cache_time = _compute_stats(bot, db, page) + tif, transclusions, cache_time = _compute_stats(db, page) result["tif"] = tif result["transclusions"] = transclusions