{ "info": { "author": "crazyX", "author_email": "xu_jingwei@outlook.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "# virtual judge \u722c\u866b\n\n\u76ee\u524d\u652f\u6301OJ\uff1a\n\n- [hdu](http://acm.hdu.edu.cn/)\n- [poj](http://poj.org/)\n- [codeforces](http://codeforces.com/)\n\n## \u67b6\u6784\n~~\u751f\u4ea7\u8005\u6d88\u8d39\u8005\u6a21\u578b~~\n\n~~\u5bf9\u4e8e\u6bcf\u4e2a\u8d26\u53f7\uff0c\u751f\u6210\u5bf9\u5e94\u7684`worker`\uff0c`Controller`\u548c`worker`\u95f4\u901a\u8fc7\u6bcf\u4e2aoj\u5bf9\u5e94\u7684`queue`\u901a\u4fe1\uff0c`worker`\u4ece`queue`\u4e2d\u6309\u987a\u5e8f\u83b7\u53d6`source, lang, pid, *args`\u53c2\u6570\uff0c\u8fd9\u4e9b\u53c2\u6570\u90fd\u7531`Controller.add_task(oj_name, source, lang, pid, *args)`\u653e\u5165\u5bf9\u5e94oj\u7684\u961f\u5217\u5f53\u4e2d~~\n\n\u53bb\u9664\u5185\u7f6e\u961f\u5217\u6a21\u578b\uff0c\u6bcf\u6b21\u76f4\u63a5\u8c03\u7528\u63a5\u53e3\u83b7\u53d6\u9898\u76ee\u6216\u8005\u63d0\u4ea4\n\n\u4f7f\u7528\u8005\u9700\u8981\u81ea\u5df1\u63a7\u5236\u597d\u6bcf\u4e2a\u8d26\u53f7\u53ea\u4f1a\u5728\u4e00\u4e2acontrol\u5b9e\u4f8b\u4e2d\uff0c\u5426\u5219\u5c06\u4f1a\u83b7\u53d6\u5230\u610f\u6599\u4e4b\u5916\u7684\u7ed3\u679c\n\u5176\u4e2d\uff1a\n- oj_name: oj\u540d\u79f0\u7f29\u5199\uff0c\u76ee\u524d\u652f\u6301['hdu', 'poj', 'codeforces']\n- source\uff1a\u6e90\u4ee3\u7801\n- lang: \u8bed\u8a00\u540d\u79f0\uff0c\u53ef\u4ee5\u901a\u8fc7`Controller.get_languages(oj_name).keys()`\u83b7\u53d6\u5b8c\u6574\u7684\u53ef\u9009\u5217\u8868, \u6216\u8005`Controller.get_basic_language('oj_name')` \u83b7\u53d6\u57fa\u7840\u7684\u51e0\u79cd\u8bed\u8a00\u7684\u5bf9\u5e94\u5173\u7cfb\u3002\n- pid: \u9898\u53f7\uff0c\u7279\u522b\u7684\uff0c\u5bf9\u4e8ecodeforces\uff0c\u9898\u53f7\u5e94\u8be5\u662f\u8fd9\u6837\u7684\u5f62\u5f0f\uff1a'112A'\uff0c '13a1'\uff0c\u4ee5\u7b2c\u4e00\u4e2a\u975e\u6570\u5b57\u5b57\u7b26\u4f5c\u4e3a\u5207\u5206\u6807\u51c6\n- args\uff1a\u591a\u4f59\u7684args\u662f\u7528\u6765\u914d\u5408\u540c\u6b65\u72b6\u6001\u7684\uff0c\u53c2\u8003\u540c\u6b65\u72b6\u6001\u90e8\u5206\u3002\n\n## Controller(sync_func, image_func)\nController\u5b9e\u4f8b\u5316\u7684\u65f6\u5019\u53ef\u4ee5\u989d\u5916\u4f20\u5165\u4e24\u4e2a\u51fd\u6570\uff0c\u4ee5\u4e0b\u5206\u522b\u4ecb\u7ecd\u3002\n### \u540c\u6b65\u72b6\u6001(sync_func)\nsample\uff1a\n```python\n# coding=utf-8\nimport json\nimport logging as logger\ndef sample_sync_func(data, *args):\n # \u591a\u4f59\u7684\u5bf9\u5e94\u53c2\u6570\u5e94\u8be5\u5728add_task\u7684\u65f6\u5019\u6309\u987a\u5e8f\u4f20\u5165\n # data = {\n # 'status': '\u5404oj\u5bf9\u5e94\u7684\u72b6\u6001\u5b57\u7b26\u4e32',\n # 'established': True, # False, \u8868\u660e\u662f\u5426\u662f\u786e\u5b9a\u7684\u72b6\u6001\uff0c\u5982\u679c\u662f\uff0c\u5e94\u8be5\u8fd8\u6709\u989d\u5916\u7684\u4fe1\u606f\n # 'rid': 123124,\n # 'status': running,\n # 'time': // \u5355\u4f4d\u4e3ams\n # 'memory': // \u5355\u4f4d\u4e3akb\n # }\n json_data = json.dumps(data)\n logger.info(\"data: \" + json_data)\n```\n\u591a\u4f59\u7684\u53c2\u6570\u53ef\u4ee5\u6709\u63d0\u4ea4\u7684ID\uff0cweb\u7aef\u7684ip\u5730\u5740\uff0c\u8ba4\u8bc1token\u7b49\u7b49\uff0c\u6309\u987a\u5e8f\u4f20\u5165\u540e\u5229\u7528\u5b83\u4eec\u8c03\u7528\u8fdc\u7aef\u7684\u63a5\u53e3\u66f4\u65b0\u5bf9\u5e94\u63d0\u4ea4\u7684\u72b6\u6001\u3002\n\n\u8fd9\u4e9b\u591a\u4f59\u7684\u53c2\u6570\u5e94\u8be5\u6309\u7167\u540c\u6837\u7684\u987a\u5e8f\u5728`add_task`\u7684\u65f6\u5019\u4f20\u5165\u3002\n\n### \u56fe\u7247\u51fd\u6570(image_func)\n\n\u8fd9\u4e2a\u51fd\u6570\u7528\u6765\u5904\u7406\u9898\u9762\u4e2d\u542b\u6709\u7684\u56fe\u7247\uff0c\u5bf9\u4e8e\u8fdc\u7aefoj\u4e0a\u7684\u56fe\u7247\uff0c\u6709\u4e0d\u9650\u4e8e\u4ee5\u4e0b\u4e09\u79cd\u65b9\u5f0f\u6765\u5904\u7406\uff1a\n\n- \u76f4\u63a5\u4f7f\u7528\u6e90oj\u5730\u5740\uff1a\u4f18\u70b9\u662f\u65b9\u4fbf\uff0c\u7f3a\u70b9\u662f\u56fe\u7247\u663e\u793a\u53d7\u6e90oj\u7f51\u7edc\u72b6\u51b5\u9650\u5236\n- \u4f7f\u7528cdn\u670d\u52a1\u7f13\u5b58\u56fe\u7247\uff1a\u4f18\u70b9\u662f\u4e00\u822c\u60c5\u51b5\u4e0b\u6bd4\u8f83\u7a33\u5b9a\uff0c\u4f46\u662f\u5728\u8981\u6c42\u65ad\u5916\u7f51\uff08\u5982\u6bd4\u8d5b\u65f6\uff09\u65f6\u6bd4\u8f83\u50f5\u786c\n- \u5c06\u56fe\u7247\u4e0b\u8f7d\u5230\u672c\u5730\uff0c\u5229\u7528\u672c\u5730\u9759\u6001\u670d\u52a1\u5668\u63d0\u4f9b\u670d\u52a1\uff0c\u53ef\u4ee5\u6ee1\u8db3\u4e00\u822c\u9700\u6c42\uff0c\u4f46\u662f\u9700\u8981\u8003\u8651\u7f13\u5b58\u7b97\u6cd5\uff0c\u4ec0\u4e48\u65f6\u5019\u66f4\u65b0\uff0c\u600e\u6837\u66f4\u65b0\u672c\u5730\u6587\u4ef6\u662f\u5173\u952e\n\nsample\uff1a\n```python\ndef sample_save_image(image_url, oj_name):\n return image_url\n```\nsample\u5373\u7b2c\u4e00\u79cd\u65b9\u5f0f\uff0c\u8fd9\u4e2a\u51fd\u6570\u4f1a\u4f20\u5165\u4e24\u4e2a\u53c2\u6570\uff0c\u4e00\u4e2a\u662f\u6e90oj\u7684\u539f\u59cb\u56fe\u7247url\uff0c\u53e6\u5916\u4e00\u4e2a\u662foj\u540d\uff0c\u53ef\u7528\u4e8e\u534f\u52a9\u5206\u7c7b\n\n## \u4f7f\u7528\u65b9\u5f0f\n\n\u6240\u6709oj\u7684\u63d0\u4ea4\u3001\u9898\u9762\u83b7\u53d6\u3001\u7ed3\u679c\u83b7\u53d6\u7b49\u5168\u90e8\u4f7f\u7528`Controller`\u6765\u63a7\u5236\uff0c`Controller`\u9700\u8981\u5148\u7528\u5404\u4e2aoj\u7684\u8d26\u53f7\u4fe1\u606f\u521d\u59cb\u5316\uff0c\u5bf9\u4e8e\u6bcf\u4e2aoj\u7684\u6bcf\u4e2a\u8d26\u53f7\uff0c\u4f1a\u751f\u6210\u4e00\u4e2a\u552f\u4e00\u7684worker\uff0c\u6ce8\u610f\uff0c\u5982\u679c\u4e00\u4e2aoj\u5b58\u5728\u591a\u4e2a\u540c\u540d\u8d26\u53f7\uff0c\u4ee5\u6700\u5148\u51fa\u73b0\u7684\u4e3a\u51c6\u3002\n\n\u8c03\u7528`Controller.load_accounts_json(json_path)`\u5c06\u4f1a\u4ece\u5bf9\u5e94\u8def\u5f84\u7684json\u6587\u4ef6\u4e2d\u8bfb\u53d6\u8d26\u53f7\u4fe1\u606f\uff0c\u53c2\u8003tests/accounts_sample.json\u7684\u683c\u5f0f\u3002\n\n\n\u6709\u4e94\u4e2a\u73af\u5883\u53d8\u91cf\u53ef\u4ee5\u914d\u7f6e\uff0c\u914d\u7f6e\u65b9\u5f0f\u5982\u4e0b\uff1a\n```python\n# coding=utf-8\nimport os\n# \u8d85\u65f6\u79d2\u6570\nHTTP_METHOD_TIMEOUT = os.getenv('HTTP_METHOD_TIMEOUT', 10)\n\n# \u83b7\u53d6\u7ed3\u679c\u6b21\u6570\nRESULT_COUNT = os.getenv('RESULT_COUNT', 20)\n\n# \u6bcf\u4e24\u6b21\u83b7\u53d6\u7ed3\u679c\u4e4b\u95f4\u95f4\u9694 / s\nRESULT_INTERVAL = os.getenv('RESULT_INTERVAL', 1)\n\n# \u9759\u6001\u76ee\u5f55\nSTATIC_OJ_ROOT = os.getenv('STATIC_OJ_ROOT', '/home/')\n\n# \u9759\u6001url\nSTATIC_OJ_URL = os.getenv('STATIC_OJ_URL', 'localhost:8000/statics/')\n```\n\n\u5b89\u88c5\uff1a\u5207\u6362\u5230setup.py\u6240\u5728\u76ee\u5f55\u4e0b\uff1a\n```\npython setup.py build\npython setup.py install\n```\n\n\u6253\u5305\u53d1\u5e03\uff1a\n```\npython setup.py sdist\ntwine upload dist/*\n```\n\n\u8003\u8651\u5f00\u53d1\u6210pip\u5305\u7684\u5f62\u5f0f, \u6240\u4ee5\u5982\u4e0b\u65b9\u5f0f\u5f15\u5165\uff1a\n\n`from ojcrawler.control import Controller`\n\n\n\u4e00\u4e9b\u64cd\u4f5c\u793a\u8303\uff1a\n\n```\n>>> from control import Controller\n>>> c = Controller()\n>>> c.get_problem('hdu', '1033') # \u83b7\u53d6hdu1033\u7684\u9898\u9762\u4fe1\u606f\n(True, \n {\n 'title': 'Edge', \n 'problem_type': 'regular', \n 'origin': 'http://acm.hdu.edu.cn/showproblem.php?pid=1033', \n 'limits': {'java': (2000, 65536), 'default': (1000, 32768)},\n 'samples': {1: ('V\\nAVV', '300 420 moveto\\n310 420 lineto\\n310 430 lineto\\nstroke\\nshowpage\\n300 420 moveto\\n310 420 lineto\\n310 410 lineto\\n320 410 lineto\\n320 420 lineto\\nstroke\\nshowpage')},\n 'descriptions': [\n ('Problem Description', '
For products that are wrapped in small packings it is necessary that the sheet of paper containing the directions for use is folded until its size becomes small enough. We assume that a sheet of paper is rectangular and only folded along lines parallel to its initially shorter edge. The act of folding along such a line, however, can be performed in two directions: either the surface on the top of the sheet is brought together, or the surface on its bottom. In both cases the two parts of the rectangle that are separated by the folding line are laid together neatly and we ignore any differences in thickness of the resulting folded sheet.
After several such folding steps have been performed we may unfold the sheet again and take a look at its longer edge holding the sheet so that it appears as a one-dimensional curve, actually a concatenation of line segments. If we move along this curve in a fixed direction we can classify every place where the sheet was folded as either type A meaning a clockwise turn or type V meaning a counter-clockwise turn. Given such a sequence of classifications, produce a drawing of the longer edge of the sheet assuming 90 degree turns at equidistant places.
'), \n ('Input', '
The input contains several test cases, each on a separate line. Each line contains a nonempty string of characters A and V describing the longer edge of the sheet. You may assume that the length of the string is less than 200. The input file terminates immediately after the last test case.
'), \n ('Output', '
For each test case generate a PostScript drawing of the edge with commands placed on separate lines. Start every drawing at the coordinates (300, 420) with the command \"300 420 moveto\". The first turn occurs at (310, 420) using the command \"310 420 lineto\". Continue with clockwise or counter-clockwise turns according to the input string, using a sequence of \"x y lineto\" commands with the appropriate coordinates. The turning points are separated at a distance of 10 units. Do not forget the end point of the edge and finish each test case by the commands stroke and showpage.

You may display such drawings with the gv PostScript interpreter, optionally after a conversion using the ps2ps utility.


'), \n ('Recommend', '
')\n ], \n 'category': ' University of Ulm Local Contest 2003 ', \n 'tags': [], \n 'append_html': ''\n }\n)\n>>> c.supports() # \u67e5\u770b\u5f53\u524d\u652f\u6301\u7684oj\ndict_keys(['poj', 'hdu', 'codeforces'])\n>>> c.get_languages('poj') # \u67e5\u770bpoj\u6240\u6709\u652f\u6301\u7684\u8bed\u8a00\n{'G++': '0', 'GCC': '1', 'JAVA': '2', 'PASCAL': '3', 'C++': '4', 'C': '5', 'FORTRAN': '6'}\n>>> c.get_basic_language('poj') # \u67e5\u770b\u57fa\u7840\u7684\u56db\u79cd\u8bed\u8a00\u6216\u914d\u7f6e\u5728poj\u7684\u4e2d\u7684\u6620\u5c04\n{'c': 'GCC', 'c++': 'G++', 'c++11': None, 'java': 'JAVA'}\n```\n\n\u83b7\u53d6\u7684limits\u5f53\u4e2d\uff0cfirst\u4e3a\u65f6\u95f4\u9650\u5236\uff0c\u5355\u4f4d\u4e3ams\uff0csecond\u4e3a\u5185\u5b58\u9650\u5236\uff0c\u5355\u4f4d\u4e3akb\n\u83b7\u53d6\u7684samples\u5f53\u4e2d\uff0cfirst\u4e3a\u8f93\u5165\uff0csecond\u4e3a\u8f93\u51fa", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LETTersOnline/ojcrawler", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ojcrawler", "package_url": "https://pypi.org/project/ojcrawler/", "platform": "", "project_url": "https://pypi.org/project/ojcrawler/", "project_urls": { "Homepage": "https://github.com/LETTersOnline/ojcrawler" }, "release_url": "https://pypi.org/project/ojcrawler/2.0.4/", "requires_dist": null, "requires_python": "", "summary": "crawler of some online judge system", "version": "2.0.4" }, "last_serial": 5436514, "releases": { "1.0.3": [ { "comment_text": "", "digests": { "md5": "49a09ed49d231281ee6831b3d24b1730", "sha256": "ae7862c0bf548db6172873f2138fc2400c59a32ff2b825f8e0fa10c6150c8b06" }, "downloads": -1, "filename": "ojcrawler-1.0.3.tar.gz", "has_sig": false, "md5_digest": "49a09ed49d231281ee6831b3d24b1730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21412, "upload_time": "2018-07-18T09:33:18", "url": "https://files.pythonhosted.org/packages/db/8a/4c3cb8139fe53d1eeeef99bb082d8b1b727240b099b30995fe1fefa4fbba/ojcrawler-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "12c6f8f3d710d9887531ddaa4b116970", "sha256": "9362d8a9e314421f4105761fe5d8b0fb5d8373a604b43138d3fa7de3e4b98274" }, "downloads": -1, "filename": "ojcrawler-1.0.4-py3.5.egg", "has_sig": false, "md5_digest": "12c6f8f3d710d9887531ddaa4b116970", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52090, "upload_time": "2018-09-29T14:18:38", "url": "https://files.pythonhosted.org/packages/af/50/d43ca17b31eca112b4912ca5087d2a844fda90b31cb9515e6176a9892458/ojcrawler-1.0.4-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "6d8017c851ddc10babd252a9053a493a", "sha256": "b7cee7012f3ffe0b16d01b98268e4e9ee4621f394b71d58415056fc4cde12672" }, "downloads": -1, "filename": "ojcrawler-1.0.4.tar.gz", "has_sig": false, "md5_digest": "6d8017c851ddc10babd252a9053a493a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17679, "upload_time": "2018-09-26T04:06:45", "url": "https://files.pythonhosted.org/packages/86/10/ea76c2a56f17a7c75bcff14daabf9257bce6bbc290d7f57efd075721a8ef/ojcrawler-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "481d3ab4513824b02a5c8124ed3b4ad7", "sha256": "9c45d01bdbf39165b91076883de7fa46c5cf24d7edc5fb87c2e89fb6997044dc" }, "downloads": -1, "filename": "ojcrawler-1.0.5-py3.5.egg", "has_sig": false, "md5_digest": "481d3ab4513824b02a5c8124ed3b4ad7", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52127, "upload_time": "2018-09-29T14:18:42", "url": "https://files.pythonhosted.org/packages/ea/68/65c7be3b3ba8c2d846002ca9028bdc12e14d49c56ae9f554db01021220c6/ojcrawler-1.0.5-py3.5.egg" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "72ee29e3a1ebc19e042414f5bf9fedb0", "sha256": "fe3cabc9bb1267b653c88c07597492ca6b87e5b58dab9509ba6d58ec4348f885" }, "downloads": -1, "filename": "ojcrawler-1.0.6-py3.5.egg", "has_sig": false, "md5_digest": "72ee29e3a1ebc19e042414f5bf9fedb0", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52150, "upload_time": "2018-09-29T14:18:45", "url": "https://files.pythonhosted.org/packages/27/cb/25253eee7ac287104cd1932a7d5e9579a8096f85cb7e8ad510e6c74cb594/ojcrawler-1.0.6-py3.5.egg" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "36ac6bc900a8f724705747134bfcccc1", "sha256": "b7aa6111d7cc35eb03ff9f3af3049c3ee1d669fc5622c436cce701bb1f2205f0" }, "downloads": -1, "filename": "ojcrawler-1.0.7-py3.5.egg", "has_sig": false, "md5_digest": "36ac6bc900a8f724705747134bfcccc1", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52147, "upload_time": "2018-09-29T14:18:47", "url": "https://files.pythonhosted.org/packages/bd/4a/1edd0f31d9db52f0351c437ae40ad6ff95b56b1e523a8329c06facc0e893/ojcrawler-1.0.7-py3.5.egg" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "fa389bcbca6140cefaafcc54c04c16f0", "sha256": "0d7feb63c1c1796bf206f6bd8bac189f3cb6d79a4e9178bdd5d6df48bb254e64" }, "downloads": -1, "filename": "ojcrawler-1.0.8-py3.5.egg", "has_sig": false, "md5_digest": "fa389bcbca6140cefaafcc54c04c16f0", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52160, "upload_time": "2018-09-29T14:18:49", "url": "https://files.pythonhosted.org/packages/b7/d5/4e437d37a29477a0afca614128b9c49e100d2d477e2e6fc599c3afe9c8b8/ojcrawler-1.0.8-py3.5.egg" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "9f266135061f55c3dabcfba1dad88475", "sha256": "daf581f3f21cb2d43254328447f30186738430bb43debe2b86397053ca07b9c9" }, "downloads": -1, "filename": "ojcrawler-1.0.9-py3.5.egg", "has_sig": false, "md5_digest": "9f266135061f55c3dabcfba1dad88475", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52199, "upload_time": "2018-09-29T14:18:51", "url": "https://files.pythonhosted.org/packages/cb/cc/2116518f5fe5412f64ffe84f44d7bcb1b49f41cb677109e63173b652cd6b/ojcrawler-1.0.9-py3.5.egg" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "0df84c8e7727ddac60cae2b2286560c7", "sha256": "4c0d430b284c851f6043442fee53ba8bfebac4b1f5049543a4c47057e4e4b9da" }, "downloads": -1, "filename": "ojcrawler-1.1.0-py3.5.egg", "has_sig": false, "md5_digest": "0df84c8e7727ddac60cae2b2286560c7", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52384, "upload_time": "2018-09-29T14:18:53", "url": "https://files.pythonhosted.org/packages/97/e0/441bd038aad0a89fafc308665cb59a748fb0e1c1da42d59e5edc5e76fe55/ojcrawler-1.1.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "152819b141fa995459f6d8f31b4dee54", "sha256": "cdc1491528ce0332c0021259f83cad64c1fadacc09bda07b8d685c0ae6a8421c" }, "downloads": -1, "filename": "ojcrawler-1.1.0.tar.gz", "has_sig": false, "md5_digest": "152819b141fa995459f6d8f31b4dee54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17945, "upload_time": "2018-09-29T14:18:55", "url": "https://files.pythonhosted.org/packages/9b/27/89c340cc69cd50e57f083674fe41597a7d910b7901d4e03550692d7bcdcb/ojcrawler-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "a1167ef823ab88be11be6f0e3ddb3645", "sha256": "8a631fa828629d18a681f6ad1c4757456a1f1a8f5b977ea5c7ffb9264e4e78de" }, "downloads": -1, "filename": "ojcrawler-1.1.1.tar.gz", "has_sig": false, "md5_digest": "a1167ef823ab88be11be6f0e3ddb3645", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18012, "upload_time": "2018-09-30T05:00:29", "url": "https://files.pythonhosted.org/packages/d9/d1/c6e20b64d5facb50add974757634dccd65c70624dfdb4ddf1ace92e5a56c/ojcrawler-1.1.1.tar.gz" } ], "1.1.10": [ { "comment_text": "", "digests": { "md5": "e22d82d42f51a51d76dab23816546a68", "sha256": "8af33c5f968b44b38fe446da7b5a9752980bb2f8fc05444e32dcc1c96c96e8b0" }, "downloads": -1, "filename": "ojcrawler-1.1.10.tar.gz", "has_sig": false, "md5_digest": "e22d82d42f51a51d76dab23816546a68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22522, "upload_time": "2019-06-23T07:00:43", "url": "https://files.pythonhosted.org/packages/c1/68/ffa9fb5c8f183805d345510dce4f9b20c598f5abc49151a30a46db86ada3/ojcrawler-1.1.10.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "3bf0d46fdda3a386793d8603987e5d03", "sha256": "c9ba133a835765da2cebf701add016b17891c4aa4a77f2222462d99030163fcb" }, "downloads": -1, "filename": "ojcrawler-1.1.3-py3.5.egg", "has_sig": false, "md5_digest": "3bf0d46fdda3a386793d8603987e5d03", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52376, "upload_time": "2018-09-30T06:48:23", "url": "https://files.pythonhosted.org/packages/62/d2/d66b8c7e31857cd8a4ec8ec2fdce9cca5d879a7b156808c5aa2ae02ccc49/ojcrawler-1.1.3-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "50565f0b5b8b4cf5a8fada3d50eef42e", "sha256": "19017265caaca325f6084d49c5083ac8bcdf05b62e6510959a5f2fea9a1df650" }, "downloads": -1, "filename": "ojcrawler-1.1.3.tar.gz", "has_sig": false, "md5_digest": "50565f0b5b8b4cf5a8fada3d50eef42e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18011, "upload_time": "2018-09-30T05:17:04", "url": "https://files.pythonhosted.org/packages/2c/c2/2369c51feadf1eb896eaea086238e84c815f258c93d4033200f5a109b0ef/ojcrawler-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "c60fd00391f963fb68eb5673242f6e2b", "sha256": "390dcce8be0bc002f7f7acc41c4d301db21502053f522b8057937bc17f56dcc3" }, "downloads": -1, "filename": "ojcrawler-1.1.4-py3.5.egg", "has_sig": false, "md5_digest": "c60fd00391f963fb68eb5673242f6e2b", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 52376, "upload_time": "2018-09-30T06:48:26", "url": "https://files.pythonhosted.org/packages/89/03/eb644192fb50ea56f500e16e14af1e24e0d254427627543c3d150400cd99/ojcrawler-1.1.4-py3.5.egg" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "ce9141f3ce99dc04cff29943a45cc97b", "sha256": "3e67746ff5e2d1307682a8379f6eaa0c1cb6dd31fc381620075c5d9328677019" }, "downloads": -1, "filename": "ojcrawler-1.1.5.tar.gz", "has_sig": false, "md5_digest": "ce9141f3ce99dc04cff29943a45cc97b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18020, "upload_time": "2018-09-30T06:48:28", "url": "https://files.pythonhosted.org/packages/24/4b/556c0dd7930f5d47885d2f14a8f18607b21a97c13a4dba2e7a76ef9b7a4c/ojcrawler-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "188c07d0a258a836d8c6579d786454b2", "sha256": "afd1db42632bafcdd118e85ba2aed6434ac658eb626612a936e7e10a6f3315af" }, "downloads": -1, "filename": "ojcrawler-1.1.6-py3.5.egg", "has_sig": false, "md5_digest": "188c07d0a258a836d8c6579d786454b2", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 53098, "upload_time": "2018-10-04T16:21:08", "url": "https://files.pythonhosted.org/packages/2a/5e/78dd24417ff05fb676bb8229b46809a61cc4ce88b69f71709284deef129e/ojcrawler-1.1.6-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "112f90759a37bc76c8a0bb14a2622766", "sha256": "c398131c880d4b982b22ccac941588b339f4ff97f465fd39133b4ce98b9135be" }, "downloads": -1, "filename": "ojcrawler-1.1.6.tar.gz", "has_sig": false, "md5_digest": "112f90759a37bc76c8a0bb14a2622766", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18110, "upload_time": "2018-10-04T16:21:10", "url": "https://files.pythonhosted.org/packages/9b/b4/02e63966f57fc72df0437cf71e06f3be039274e081c18ea32e79139f7e76/ojcrawler-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "17d48fd121ef4e6ed13fec0d7ef7f465", "sha256": "47a5214e48f4223b7ebff6170b792091e5a099075addacba9ada7e5a0d6ab75c" }, "downloads": -1, "filename": "ojcrawler-1.1.7.tar.gz", "has_sig": false, "md5_digest": "17d48fd121ef4e6ed13fec0d7ef7f465", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22151, "upload_time": "2019-04-08T14:28:05", "url": "https://files.pythonhosted.org/packages/e4/fe/c3b345f18e34acb8b15d3037acd3a13507632a8b0e57a267b20a1dd0da4d/ojcrawler-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "652d118385fb64d16a02b20a885e6474", "sha256": "4e5d83ed6f1f41cbfae0041d1231fefb865726522f29d44ec35bda4517a5ae13" }, "downloads": -1, "filename": "ojcrawler-1.1.8.tar.gz", "has_sig": false, "md5_digest": "652d118385fb64d16a02b20a885e6474", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22340, "upload_time": "2019-04-08T16:33:23", "url": "https://files.pythonhosted.org/packages/7a/a9/859eb6659609fb222e8aa4b12d79a2559f9a7a8ee3e7d45585a4afc58f97/ojcrawler-1.1.8.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "9a8e529b18e9abe949368a2bfee2af66", "sha256": "c9ff963ea8b8e84578166951a39d76f3acc89ae836f185886b82f38a29fd454f" }, "downloads": -1, "filename": "ojcrawler-1.1.9.tar.gz", "has_sig": false, "md5_digest": "9a8e529b18e9abe949368a2bfee2af66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22409, "upload_time": "2019-04-08T19:11:09", "url": "https://files.pythonhosted.org/packages/7f/38/f23bdb436f43c05d287f47b144d1e0ae9b8aeb7348cdfce2a2563a68bd36/ojcrawler-1.1.9.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "25ed1cf9dc970759a9b6fd7e4f1d2ef3", "sha256": "34fcd45f11b59b1f3ea39ad7ec22672e1df04826b5bbfa5abe04119c1b8749d2" }, "downloads": -1, "filename": "ojcrawler-2.0.0-py2.7.egg", "has_sig": false, "md5_digest": "25ed1cf9dc970759a9b6fd7e4f1d2ef3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 28080, "upload_time": "2018-12-29T18:16:39", "url": "https://files.pythonhosted.org/packages/94/89/53159de75b4b9650426d021da775366a0e0245d4a6c0691e175ec88db90c/ojcrawler-2.0.0-py2.7.egg" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "df954143e5fa79e1f406e01fb0c8a4f0", "sha256": "33132d1415f84c54211c56db3e98313d5e1850d332e51faec23df4c2e7a310bc" }, "downloads": -1, "filename": "ojcrawler-2.0.1-py2.7.egg", "has_sig": false, "md5_digest": "df954143e5fa79e1f406e01fb0c8a4f0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 47237, "upload_time": "2018-12-29T18:16:41", "url": "https://files.pythonhosted.org/packages/3e/96/fd86d48879ce4d78bff8c296fb2ae2bd7d5cb9727a8824e27caf17babb06/ojcrawler-2.0.1-py2.7.egg" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "fc2d8ce9ee0456b96db9d44bec37e018", "sha256": "524ca5990044303c9acfd6b3a6a937a8547d20b8d1d69c154658eab66c21a8fe" }, "downloads": -1, "filename": "ojcrawler-2.0.2-py2.7.egg", "has_sig": false, "md5_digest": "fc2d8ce9ee0456b96db9d44bec37e018", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 48847, "upload_time": "2018-12-29T18:16:43", "url": "https://files.pythonhosted.org/packages/d3/68/e1a12cf39907ab754c43bec4af204209deed6a2f2af17e8cf4efa2fdd6cb/ojcrawler-2.0.2-py2.7.egg" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "b90d1c1ae1b178301228ca3dbc2a1d6f", "sha256": "6ab184cd300f9e8748bb8e03ec48ce7136b505e1aceb6ab9e786075639aa71f6" }, "downloads": -1, "filename": "ojcrawler-2.0.3-py2.7.egg", "has_sig": false, "md5_digest": "b90d1c1ae1b178301228ca3dbc2a1d6f", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 50752, "upload_time": "2018-12-29T18:16:45", "url": "https://files.pythonhosted.org/packages/0d/98/50185db2c0eeae8ea2e90ca6b90f2b6e361c7a026b02164ee14ff3cffa9a/ojcrawler-2.0.3-py2.7.egg" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "5e7320e17722184b4af9eab2e28b23ec", "sha256": "99f391a1a356893bad49b3e857ee0039f156c944a3080bcc4f957dbc66b73992" }, "downloads": -1, "filename": "ojcrawler-2.0.4-py2.7.egg", "has_sig": false, "md5_digest": "5e7320e17722184b4af9eab2e28b23ec", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 51275, "upload_time": "2018-12-29T18:16:46", "url": "https://files.pythonhosted.org/packages/13/71/6b0527f2ebf2b34b2fdd274d1203c4fc9cdbaeb1896afa13e29d4503da82/ojcrawler-2.0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1da8d2ebf65a793e32a714ae8a5284a8", "sha256": "56aebd89a4d921dcf1daa51cd10ed8b3ad2d212abee1e6d06ba5f3befa697306" }, "downloads": -1, "filename": "ojcrawler-2.0.4.tar.gz", "has_sig": false, "md5_digest": "1da8d2ebf65a793e32a714ae8a5284a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20980, "upload_time": "2018-12-29T18:16:48", "url": "https://files.pythonhosted.org/packages/c7/0c/2c616d06f9d74088a4677ff71dc4cbf73ab8e2cc8bbdb51bb4cdc697624b/ojcrawler-2.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5e7320e17722184b4af9eab2e28b23ec", "sha256": "99f391a1a356893bad49b3e857ee0039f156c944a3080bcc4f957dbc66b73992" }, "downloads": -1, "filename": "ojcrawler-2.0.4-py2.7.egg", "has_sig": false, "md5_digest": "5e7320e17722184b4af9eab2e28b23ec", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 51275, "upload_time": "2018-12-29T18:16:46", "url": "https://files.pythonhosted.org/packages/13/71/6b0527f2ebf2b34b2fdd274d1203c4fc9cdbaeb1896afa13e29d4503da82/ojcrawler-2.0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1da8d2ebf65a793e32a714ae8a5284a8", "sha256": "56aebd89a4d921dcf1daa51cd10ed8b3ad2d212abee1e6d06ba5f3befa697306" }, "downloads": -1, "filename": "ojcrawler-2.0.4.tar.gz", "has_sig": false, "md5_digest": "1da8d2ebf65a793e32a714ae8a5284a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20980, "upload_time": "2018-12-29T18:16:48", "url": "https://files.pythonhosted.org/packages/c7/0c/2c616d06f9d74088a4677ff71dc4cbf73ab8e2cc8bbdb51bb4cdc697624b/ojcrawler-2.0.4.tar.gz" } ] }