From 27df5909e35b11ca46b60b474c2179b36d19d1fa Mon Sep 17 00:00:00 2001 From: lilydjwg Date: Sun, 8 Sep 2013 14:56:22 +0800 Subject: [PATCH] add PyPI support API: https://wiki.python.org/moin/PyPIJSON?action=show&redirect=PyPiJson --- nvchecker/get_version.py | 15 ++++++++++++++- sources/sample_source.ini | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/nvchecker/get_version.py b/nvchecker/get_version.py index 7319de6..f802d01 100644 --- a/nvchecker/get_version.py +++ b/nvchecker/get_version.py @@ -12,7 +12,7 @@ import tornado.process from tornado.ioloop import IOLoop logger = logging.getLogger(__name__) -handler_precedence = ('github', 'aur', 'cmd', 'regex') +handler_precedence = ('github', 'aur', 'pypi', 'cmd', 'regex') try: import pycurl @@ -122,3 +122,16 @@ def _command_done(name, callback, process, status): def _got_version_from_cmd(callback, name, output): output = output.strip().decode('latin1') callback(name, output) + +PYPI_URL = 'https://pypi.python.org/pypi/%s/json' + +def get_version_by_pypi(name, conf, callback): + repo = conf.get('pypi') or name + url = PYPI_URL % repo + AsyncHTTPClient().fetch(url, user_agent='lilydjwg/nvchecker', + callback=partial(_pypi_done, name, callback)) + +def _pypi_done(name, callback, res): + data = json.loads(res.body.decode('utf-8')) + version = data['info']['version'] + callback(name, version) diff --git a/sources/sample_source.ini b/sources/sample_source.ini index 3339673..f13eee4 100644 --- a/sources/sample_source.ini +++ b/sources/sample_source.ini @@ -29,3 +29,6 @@ github = lilydjwg/nvchecker url = http://sed.sourceforge.net/grabbag/ssed/ regex = The current version is ([\d.]+)\. proxy = localhost:8087 + +[PySide] +pypi = PySide