A tool that evaluates high-risk Wikipedia templates https://tools.wmflabs.org/earwig-dev/tif
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

60 行
1.7 KiB

  1. # -*- coding: utf-8 -*-
  2. from datetime import datetime
  3. from os.path import expanduser
  4. from earwigbot.bot import Bot
  5. from oursql import connect
  6. __all__ = ["calculate_tif"]
  7. def _get_db(bot):
  8. args = bot.config.wiki["_tifSQL"]
  9. args["read_default_file"] = expanduser("~/.my.cnf")
  10. args["autoping"] = True
  11. args["autoreconnect"] = True
  12. return connect(**args)
  13. def _compute_stats(page, db):
  14. with db.cursor() as cursor:
  15. query = """SELECT COUNT(*) FROM templatelinks WHERE tl_title = ?
  16. AND tl_namespace = 10 AND tl_from_namespace = 0"""
  17. cursor.execute(query, (page.title.replace(" ", "_"),))
  18. transclusions = cursor.fetchall()[0][0]
  19. # TODO
  20. tif = 0.0
  21. cache_time = None
  22. return tif, transclusions, cache_time
  23. def _format_time(cache_time):
  24. formatter = lambda n, w: "{0} {1}{2}".format(n, w, "" if n == 1 else "s")
  25. diff = datetime.utcnow() - cache_time
  26. if diff.seconds > 3600:
  27. return formatter(diff.seconds / 3600, "hour")
  28. if diff.seconds > 60:
  29. return formatter(diff.seconds / 60, "minute")
  30. return formatter(diff.seconds, "second")
  31. def calculate_tif(title):
  32. bot = Bot(".earwigbot")
  33. db = _get_db(bot)
  34. site = bot.wiki.get_site()
  35. page = site.get_page(title)
  36. result = {"title": title, "page": page}
  37. if page.exists != page.PAGE_EXISTS:
  38. result["error"] = "no page"
  39. return result
  40. tif, transclusions, cache_time = _compute_stats(page, db)
  41. result["tif"] = tif
  42. result["transclusions"] = transclusions
  43. result["protection"] = page.protection
  44. if cache_time:
  45. result["cache_time"] = cache_time.strftime("%b %d, %Y %H:%M:%S UTC")
  46. result["cache_ago"] = _format_time(cache_time)
  47. return result