同步操作将从 mktime/python-learn 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python# -*- coding: utf-8 -*-from __future__ import (division, print_function, absolute_import,unicode_literals)__all__ = ["fetch"]import geventfrom gevent import monkeymonkey.patch_all()import osimport shutilimport requestsfrom itertools import productfrom tempfile import NamedTemporaryFiledata_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data")filename = os.path.join(data_dir, "{year}-{month:02d}-{day:02d}-{n}.json.gz")try:os.makedirs(data_dir)except os.error:passurl = "http://data.githubarchive.org/{year}-{month:02d}-{day:02d}-{n}.json.gz"def fetch(year, month, day, n):kwargs = {"year": year, "month": month, "day": day, "n": n}local_fn = filename.format(**kwargs)# Skip if the file exists.if os.path.exists(local_fn):return# Download the remote file.remote = url.format(**kwargs)r = requests.get(remote)if r.status_code == requests.codes.ok:# Atomically write to disk.# http://stackoverflow.com/questions/2333872/ \# atomic-writing-to-file-with-pythonf = NamedTemporaryFile("wb", delete=False)f.write(r.content)f.flush()os.fsync(f.fileno())f.close()shutil.move(f.name, local_fn)if __name__ == "__main__":for year, month in product(range(2011, 2014), range(1, 13)):jobs = [gevent.spawn(fetch, year, month, day, n)for n, day in product(range(1, 32), range(24))]gevent.joinall(jobs)print("Finished {0}-{1}".format(year, month))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。