{ "info": { "author": "Karina Antonio", "author_email": "karinafantonio@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# UCMercedule: Scraper\nA Python module that scrapes [UC Merced class schedules][1] for you!\n\n## API\nUsing this module pretty much just entails 1. creating a Schedule instance and\n2. reading its data attributes; see below for more details.\n\n### `ucmscraper.Schedule`\nA `Schedule` instance object is a fully parsed UC Merced schedule page from a\ngiven term.\n\nThe `Schedule` class is a [record type/plain old data structure][4], meaning it \nreally only structures data into fields and provides very little functionality\non its own. The `Term`, `Course`, and `Section` classes that compose `Schedule`\nfollow the same vein. It is up to the client to implement their own functions\nfor handling these types.\n\n`Schedule`s can created in three ways: two involve a factory class method, and\none is a plain constructor.\n\n#### 1. `ucmscraper.Schedule.fetch_latest()`\nPerforms an HTTP request and, if successful, returns a Schedule object for the\nlatest term (Fall 2019 at the time of writing).\n\n#### 2. `ucmscraper.Schedule.fetch(term)`\nPerforms an HTTP request and, if successful, returns a Schedule object for the\ngiven `Term` object. `Term`s should be retrieved via\n`ucmscraper.get_current_terms()`.\n\n#### 3. `ucmscraper.Schedule(schedule_html)`\nParses `schedule_html` and returns a Schedule object.\n\n#### Attributes\nSchedule has the following data attributes:\n\n`schedule.html` - a string of the raw HTML of the original schedule page\n\n`schedule.term` - a `Term` object containing information about the term\nassociated with this `Schedule` instance.\n\n`schedule.departments` - an [OrderedDict][2] whose keys are department codes and\nwhose values are the associated department titles, e.g.:\n```\n{\n 'ANTH': 'Anthropology',\n 'BEST': 'Bio Engin Small Scale Tech',\n 'BIO': 'Biological Sciences',\n 'BIOE': 'Bioengineering',\n ...\n}\n```\nKeys follow the order that they appear in schedule pages, which is alphabetical.\n\n`schedule.courses` - a tuple of `Course` [namedtuples](3) in the order that\ncourses appear on the schedule page, e.g.\n```\n(\n Course(\n department_code='ANTH',\n number='001',\n title='Sociocultural Anthropology',\n units=4\n ),\n ...\n Course(\n department_code='WRI',\n number='131C',\n title='Undergraduate Research Journal',\n units=2\n )\n)\n```\n\n`schedule.sections` - a tuple of `Section` [namedtuples](3), each representing\none non-exam row from the schedule page, and in the order that sections appear\non the schedule page, e.g.:\n```\n(\n Section(\n CRN=30250,\n department_code='ANTH',\n course_number='001',\n number='01',\n title='Sociocultural Anthropology',\n notes=('Must Also Register For A Corresponding Discussion',),\n activity='LECT',\n days='MW',\n start_time='1:30 PM',\n end_time='2:45 PM',\n location='ACS 120',\n instructor='DeLugan, Robin',\n max_seats=210,\n taken_seats=0,\n free_seats=210\n ),\n ...\n Section(\n CRN=34978,\n department_code='WRI',\n course_number='131C',\n number='01',\n title='Undergraduate Research Journal',\n notes=(),\n activity='SEM',\n days='W',\n start_time='9:30 AM',\n end_time='11:20 AM',\n location='CLSSRM 272',\n instructor='Staff',\n max_seats=20,\n taken_seats=0,\n free_seats=20\n )\n)\n```\n\n### `ucmscraper.get_current_terms()`\nWhen first called, performs an HTTP request and if successful, returns a tuple\nof terms currently available for viewing via the [official schedule search form][1].\nTerms are represented by `Term` objects. Keys follow the same order as in the\nofficial schedule search form.\n\nExample return value:\n```\n(Term(code='201910', name='Spring Semester 2019'),\n Term(code='201920', name='Summer Semester 2019 - All Courses'),\n Term(code='201920 - S6', name='Summer Semester 2019 - First 6-week Summer Session A'),\n Term(code='201920 - S62', name='Summer Semester 2019 - Second 6-week Summer Session C'),\n Term(code='201920 - S8', name='Summer Semester 2019 - 8-week Summer Session B'),\n Term(code='201930', name='Fall Semester 2019'))\n```\n\nNote: old terms no longer on the official schedule search form have their access\nrestricted, so this module cannot retrieve them. I may maintain schedule pages\nfrom old terms, so contact me if you want access to them. \n\n`Term` has the following data attributes:\n\n`Term.code` - a string containing a `validterm` value from the\n[official schedule search form][1]. When you choose a term via one of the\n\"Select a Term\" radio buttons, you are selecting a `validterm` to be submitted\nwhen you click \"View Class Schedule\".\n\n`Term.name` - a string containing a term name associated with one of the\naforementioned radio buttons.\n\n## Installation\n```\npipenv install ucmscraper\n```\n\n## Example usage\n```python\nimport json\nimport pathlib\nimport ucmscraper\n\n# Create example folder to store output files\npathlib.Path('./example').mkdir(exist_ok=True)\n\ndef get_last_value(ordered_dict):\n return next(reversed(ordered_dict.values()))\n\nlatest_term = get_last_value(ucmscraper.get_current_terms())\ntry:\n with open('example/{}.html'.format(latest_term.name), 'r') as f:\n schedule_html = f.read()\n schedule = ucmscraper.Schedule(schedule_html, latest_term)\nexcept FileNotFoundError:\n schedule = ucmscraper.Schedule.fetch_latest()\n\nclass NamedTupleIterEncoder(json.JSONEncoder):\n def default(self, o):\n return [t._asdict() for t in o]\n\nterm = schedule.term.name\nwith open('example/{}.html'.format(term), 'w') as f:\n f.write(schedule.html)\n# OrderedDicts don't need sort_keys=True\nwith open('example/{} - Departments.json'.format(term), 'w') as f:\n json.dump(schedule.departments, f, indent=4)\nwith open('example/{} - Courses.json'.format(term), 'w') as f:\n json.dump([t._asdict() for t in schedule.courses], f, indent=4)\nwith open('example/{} - Sections.json'.format(term), 'w') as f:\n json.dump([t._asdict() for t in schedule.sections], f, indent=4)\n```\nCheck out the resulting schedule files in the [example folder](example/).\n\n[1]: https://mystudentrecord.ucmerced.edu/pls/PROD/xhwschedule.p_selectsubject\n[2]: https://docs.python.org/3.5/library/collections.html#collections.OrderedDict\n[3]: https://docs.python.org/3.5/library/collections.html#collections.namedtuple\n[4]: https://en.wikipedia.org/wiki/Record_(computer_science)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/karinassuni/ucmscraper", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ucmscraper", "package_url": "https://pypi.org/project/ucmscraper/", "platform": "", "project_url": "https://pypi.org/project/ucmscraper/", "project_urls": { "Homepage": "https://github.com/karinassuni/ucmscraper" }, "release_url": "https://pypi.org/project/ucmscraper/2.2.0/", "requires_dist": null, "requires_python": "", "summary": "Module for scraping UC Merced's class schedules", "version": "2.2.0" }, "last_serial": 5795850, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "8fa6baa23e64b221944c86512cbbb14e", "sha256": "9763ad2226d69d23d0a333f2bbf9d26edba4edb25c2b858dee7fb9ca8bbd44ff" }, "downloads": -1, "filename": "ucmscraper-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8fa6baa23e64b221944c86512cbbb14e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3420, "upload_time": "2018-06-05T17:13:18", "url": "https://files.pythonhosted.org/packages/d0/54/5cc136fc6a85fef0c2c0fc1c237c104e607d17a368d515113924e0bf1010/ucmscraper-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e80eb41cb8377ae4ef00e5c71eccb61", "sha256": "b8b3ffee1558540c72456f5e89ca62ab05ff3c42cf58506d471ddc6847bc3e20" }, "downloads": -1, "filename": "ucmscraper-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0e80eb41cb8377ae4ef00e5c71eccb61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3084, "upload_time": "2018-06-05T17:13:21", "url": "https://files.pythonhosted.org/packages/98/91/474084cc382b7055d81ba617feec6f9d97f9c47c5bde3731e67534aab0c2/ucmscraper-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "972a2bc5d7b450bf3d232c004781fa34", "sha256": "7e33288212258a348bf5820bb304c04d771232b1787ecd6a84d8034413719dd1" }, "downloads": -1, "filename": "ucmscraper-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "972a2bc5d7b450bf3d232c004781fa34", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3442, "upload_time": "2018-06-06T01:44:05", "url": "https://files.pythonhosted.org/packages/d1/63/a6f2caf7160f3356b48ba8e8f86a85936bbec18f3cbb5c386dbeaba901ce/ucmscraper-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "faf67979a321afe71217da6ea667b65a", "sha256": "0f9ca886607a639019cc6514e7271e8ce2467db485fa6cb5578801da151cb972" }, "downloads": -1, "filename": "ucmscraper-1.1.0.tar.gz", "has_sig": false, "md5_digest": "faf67979a321afe71217da6ea667b65a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3111, "upload_time": "2018-06-06T01:44:07", "url": "https://files.pythonhosted.org/packages/3f/eb/5fa6cc462a68eecca1c3b19e300a510dbbab070ab45e1028fb60e51795b9/ucmscraper-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "b7e42a542a29861b9e61c0dfaa707d00", "sha256": "717f71541bd0ec77c4b77614899064ddbbd3b8e1e7cdeca63cb7684de845acc5" }, "downloads": -1, "filename": "ucmscraper-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b7e42a542a29861b9e61c0dfaa707d00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3440, "upload_time": "2018-06-08T19:03:01", "url": "https://files.pythonhosted.org/packages/d9/97/ad46547bb703a560f0cff04997c4ab7599b1104756a8d7cc91d783b8ed00/ucmscraper-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d6c8885f1772e444536d847a20d01b3", "sha256": "66ed93d9b2877e4379b190a14babdf34cfcd419a3c5694dbb95a162729be44cc" }, "downloads": -1, "filename": "ucmscraper-1.2.0.tar.gz", "has_sig": false, "md5_digest": "8d6c8885f1772e444536d847a20d01b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3139, "upload_time": "2018-06-08T19:03:03", "url": "https://files.pythonhosted.org/packages/47/b3/9456ae1eeee11e27b9282a76ad7433e733fd1db45fdd1786a750a3ff2401/ucmscraper-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "2ed652c370d73265932c4884eaa6bc5f", "sha256": "2e7a8c9af89aa1bc93639ff24ac8c23f09e20d021aa7b4b166a6328ab33c528a" }, "downloads": -1, "filename": "ucmscraper-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2ed652c370d73265932c4884eaa6bc5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3955, "upload_time": "2018-06-08T20:43:46", "url": "https://files.pythonhosted.org/packages/f1/1e/1b4e23fcd908f046c7f573bacf7e5c825c27376c6094b4b3663965333542/ucmscraper-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "449c9ca88a2f379c1b364902d1848951", "sha256": "c6c9650eadbfaee9e294671d9548978d43a38fd38655bc20d53f6f013b4430e8" }, "downloads": -1, "filename": "ucmscraper-1.3.0.tar.gz", "has_sig": false, "md5_digest": "449c9ca88a2f379c1b364902d1848951", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3717, "upload_time": "2018-06-08T20:43:48", "url": "https://files.pythonhosted.org/packages/5c/05/7d5734a357c6be5f4702bbfdd565190c2ba21c94ea42df7e54686061d86c/ucmscraper-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "0edfc2ba4aa246491b43ac0aab16589d", "sha256": "036cb1b8158d40f799a0682e40f255fb4165f9f512154573eaee1d5b8124bc13" }, "downloads": -1, "filename": "ucmscraper-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0edfc2ba4aa246491b43ac0aab16589d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3953, "upload_time": "2018-06-08T21:34:33", "url": "https://files.pythonhosted.org/packages/c9/ea/c962a7fda6b0872de6a7d278f489c43ffd4e3f8e05948ee27f34d7fd59af/ucmscraper-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51a6d3b2f552730f83ed5e0d0425f56f", "sha256": "a1010b5708966cf7a643b39fbcf5015549662ae314d4e5e72943ec77760aea31" }, "downloads": -1, "filename": "ucmscraper-1.4.0.tar.gz", "has_sig": false, "md5_digest": "51a6d3b2f552730f83ed5e0d0425f56f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3714, "upload_time": "2018-06-08T21:34:35", "url": "https://files.pythonhosted.org/packages/f5/02/1754ed0bc1dcd2f7348cb368a4f39fa8a88896f44d8bb294449f8af9120c/ucmscraper-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "4066f0e44179d5f27659d263da57d4bd", "sha256": "2b58b760c50b311504cc123e0237905165d8feabb05de6dce468eece052bcdee" }, "downloads": -1, "filename": "ucmscraper-1.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4066f0e44179d5f27659d263da57d4bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4393, "upload_time": "2018-06-10T05:05:20", "url": "https://files.pythonhosted.org/packages/db/a4/2810b981378ae477791fcd318ab4751c2c367192c6d4887ac57b0e98785b/ucmscraper-1.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09e834931c6a9e8e0b607cfde3179c6c", "sha256": "974c49c19d2ed0e851b73c148d3dbd49ee5a2f7629d9d074aba35cc7f071d095" }, "downloads": -1, "filename": "ucmscraper-1.4.1.tar.gz", "has_sig": false, "md5_digest": "09e834931c6a9e8e0b607cfde3179c6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4230, "upload_time": "2018-06-10T05:05:24", "url": "https://files.pythonhosted.org/packages/b1/f0/2598a4d98832d96358c1b2c6a8ddc5c94af17ecc0aaa5383ef889fd74baa/ucmscraper-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "33053e1eda8d24bb6d1f848572c2069b", "sha256": "5bc5f3306f80f1549fde42185216ad246a262293c1d983edc7473f49676d0f23" }, "downloads": -1, "filename": "ucmscraper-1.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "33053e1eda8d24bb6d1f848572c2069b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4420, "upload_time": "2018-06-24T20:32:11", "url": "https://files.pythonhosted.org/packages/2e/6a/36239521a12ccf4e656c8419d07e7b4538b410aa91f4a492884898010ea7/ucmscraper-1.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "935324b49dbbcc827073682d1a97583f", "sha256": "3b74ffd05c4269cd09067f284175eefdd6321eb3257d6df49ddb19f8c65ae07a" }, "downloads": -1, "filename": "ucmscraper-1.4.2.tar.gz", "has_sig": false, "md5_digest": "935324b49dbbcc827073682d1a97583f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4244, "upload_time": "2018-06-24T20:32:15", "url": "https://files.pythonhosted.org/packages/c7/8c/693683402f18ac7260055e830b6e7a34555c9897d1ccadfcd16357be8b54/ucmscraper-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "873a0fde83b64a9874d66cc1d003972a", "sha256": "427e94998e0152b662bc0ba65a828e8cf5518a612c261484079663305b3f52b3" }, "downloads": -1, "filename": "ucmscraper-1.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "873a0fde83b64a9874d66cc1d003972a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4439, "upload_time": "2018-06-24T21:03:31", "url": "https://files.pythonhosted.org/packages/11/84/400e9889a27da5cdc214f1be40dabcebd470b322f72b56d0eff7a487f9ca/ucmscraper-1.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fedc8cd0aebdf78aebb3cd0d0f9281d", "sha256": "0a1a1696d73f3c7a3c8cdee03d632b7d1742b829c7ca8c061d193a7f236d06ed" }, "downloads": -1, "filename": "ucmscraper-1.4.3.tar.gz", "has_sig": false, "md5_digest": "8fedc8cd0aebdf78aebb3cd0d0f9281d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4266, "upload_time": "2018-06-24T21:03:34", "url": "https://files.pythonhosted.org/packages/f3/e8/b01e05f0dd98e79c18e87eb1dc34c00be3c55bcd7c075ac4fde9bd8db442/ucmscraper-1.4.3.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "b5eddbc69a06975c4d6cef90d88b6742", "sha256": "b39f62bdce96fa8b1607a0650088eb94463c1ac95f5d2aebd9b7b985a303d558" }, "downloads": -1, "filename": "ucmscraper-1.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b5eddbc69a06975c4d6cef90d88b6742", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4452, "upload_time": "2018-06-27T23:16:34", "url": "https://files.pythonhosted.org/packages/84/35/d6c8c89ebd65f84feea56e3a9701062d58bb774a894c6e573269cf695d00/ucmscraper-1.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9323fa25c26ddd818fdb69a00a09ef9a", "sha256": "2003d10b7edd0c0c43f81d6fdac4a2789054fe01c7712d819c0a9e3176cb5dec" }, "downloads": -1, "filename": "ucmscraper-1.4.4.tar.gz", "has_sig": false, "md5_digest": "9323fa25c26ddd818fdb69a00a09ef9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4275, "upload_time": "2018-06-27T23:16:38", "url": "https://files.pythonhosted.org/packages/9a/67/2a57941acd9ac5ca96c21baefe440d1c43ce24c4c16b1c04e80151881590/ucmscraper-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "0d2124a4cd8a1667e1db3a0fdda47a01", "sha256": "6b0bdd25d33559457d415bee3126d5a853e228505a5b6e06b67da588105b1422" }, "downloads": -1, "filename": "ucmscraper-1.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "0d2124a4cd8a1667e1db3a0fdda47a01", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4457, "upload_time": "2018-06-29T23:47:59", "url": "https://files.pythonhosted.org/packages/e2/04/ce33471c529e822977679936aa6cb677bf52500f3b6d319a5144d554d9b2/ucmscraper-1.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b18d848450c1d8a434445a094a46ec6", "sha256": "897cbbed99bd72d261d70573e664e9db77bfd30c7e5d8fda863df4f2339e648a" }, "downloads": -1, "filename": "ucmscraper-1.4.5.tar.gz", "has_sig": false, "md5_digest": "2b18d848450c1d8a434445a094a46ec6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4278, "upload_time": "2018-06-29T23:48:08", "url": "https://files.pythonhosted.org/packages/4a/ae/78d0a0c7aafebfed6b80f09640cffd7fcda4796cfc0368c5ec5c0b32966f/ucmscraper-1.4.5.tar.gz" } ], "1.4.6": [ { "comment_text": "", "digests": { "md5": "e5912dfaf085b48c70c797fcae70bd6d", "sha256": "4363f9f83054e348aeb17358c0d751f89ba6115372c61dfa3221d5cbc5c64c77" }, "downloads": -1, "filename": "ucmscraper-1.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "e5912dfaf085b48c70c797fcae70bd6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4457, "upload_time": "2018-06-30T00:11:28", "url": "https://files.pythonhosted.org/packages/70/1e/cd70029047d97d32d6a421671f647586b0327dc74109ed8a47faff2fb544/ucmscraper-1.4.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff3208e507e222b5ca74373ef51e5331", "sha256": "d01037516d50ff4f8a13578fc2662dbc3ee24a27e4a9276f498e76f6d56de9e2" }, "downloads": -1, "filename": "ucmscraper-1.4.6.tar.gz", "has_sig": false, "md5_digest": "ff3208e507e222b5ca74373ef51e5331", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4285, "upload_time": "2018-06-30T00:11:29", "url": "https://files.pythonhosted.org/packages/0d/e4/dcab9367a31867b828556ce25db6044686a3ea4d8095debaab1906fabdbc/ucmscraper-1.4.6.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "588ba0eb030060aed00ea43cb0fc9698", "sha256": "a16f49bb0fceb1a28377613a20e99331aee91cfae0633fb830282dc876626256" }, "downloads": -1, "filename": "ucmscraper-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "588ba0eb030060aed00ea43cb0fc9698", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5281, "upload_time": "2019-03-10T19:19:47", "url": "https://files.pythonhosted.org/packages/51/3e/e08da04cbf1a88ef922a09407af094995664444ccdbb6d766507f26a0cc8/ucmscraper-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f10d7d1b06273572a65f49f7c5a53bf", "sha256": "282665fc1ae07caef9950b8fa8f5fe49aaf144418c58390a1614eb0dc1f84bd2" }, "downloads": -1, "filename": "ucmscraper-1.5.0.tar.gz", "has_sig": false, "md5_digest": "6f10d7d1b06273572a65f49f7c5a53bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4271, "upload_time": "2019-03-10T19:19:49", "url": "https://files.pythonhosted.org/packages/9c/dd/487e97453cfe9130c5e9b7dc5616b0cb4a8062020895517a446dc6beab1c/ucmscraper-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "4321805318386c30884682d94c435546", "sha256": "05570b4ca2f68c83632e4dce2f161869fd0ce246afcceae656b5e4fe2444a63f" }, "downloads": -1, "filename": "ucmscraper-1.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4321805318386c30884682d94c435546", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5464, "upload_time": "2019-03-11T09:26:57", "url": "https://files.pythonhosted.org/packages/06/32/8793db1fdf4522702ee1acaa0ff548741bb2e27ce264ddfac2060f6950c6/ucmscraper-1.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98b8057a548d7a18ed5a77f127cf308b", "sha256": "b7d49439391ffd74ea11a60b021c2eb44b39ff1e1f5e3a454bc464715674e86c" }, "downloads": -1, "filename": "ucmscraper-1.5.1.tar.gz", "has_sig": false, "md5_digest": "98b8057a548d7a18ed5a77f127cf308b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4474, "upload_time": "2019-03-11T09:27:00", "url": "https://files.pythonhosted.org/packages/f2/c8/8c1a40b6c8f26527cd8afc00477e0e2450b3f2d518ffefad5554112c2db6/ucmscraper-1.5.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "ded18c000f74836f1de0034afcb6634e", "sha256": "41a070043720fe30d5c2b2fd28e5346f1a8ab8c471d6aec7bccc81b9be428792" }, "downloads": -1, "filename": "ucmscraper-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ded18c000f74836f1de0034afcb6634e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5613, "upload_time": "2019-03-11T10:38:42", "url": "https://files.pythonhosted.org/packages/f2/21/9a832c61887446c9b41760d7dd87e866b33f8fa2e8131bd615720cb83454/ucmscraper-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7acb8292e58a7eb106d4722500cc18a9", "sha256": "84f512ca9828052aeeb0a351a94c4b11625a87a6177536af67c0a79aa92ef9b1" }, "downloads": -1, "filename": "ucmscraper-2.0.0.tar.gz", "has_sig": false, "md5_digest": "7acb8292e58a7eb106d4722500cc18a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4641, "upload_time": "2019-03-11T10:38:45", "url": "https://files.pythonhosted.org/packages/b1/95/c6b1358476915c903527eb5dfb526659e933641ec2e7774a30b20d39c5c9/ucmscraper-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "df9146d1efcd910512bd8d9085088136", "sha256": "63dd8d1209aad69790095778c7808ebbb631d67fc4cebbf7a21078c663570122" }, "downloads": -1, "filename": "ucmscraper-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "df9146d1efcd910512bd8d9085088136", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7376, "upload_time": "2019-03-13T17:41:40", "url": "https://files.pythonhosted.org/packages/48/7f/9eea0ce46b52c1e8fad791276d2295fd4d94840cc670ecc1d5e6667eb6ee/ucmscraper-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8d53db6ebd622f34bb4d16e3fade829", "sha256": "4a445387ba3c0ec22972ea8db6bbf66db95ef2e57d03688329e7fbc2ae6424db" }, "downloads": -1, "filename": "ucmscraper-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a8d53db6ebd622f34bb4d16e3fade829", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6621, "upload_time": "2019-03-13T17:41:42", "url": "https://files.pythonhosted.org/packages/01/9e/c51252d7cb828a46736f9a43584e9f217b153eb27705db561e6ddb70296f/ucmscraper-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "e2201e2dcdb12ee4c70b39f4f473b228", "sha256": "c0f3eed188d8d574e5a851f3e9316624050d9ebecade0b06790f83e211ccfaac" }, "downloads": -1, "filename": "ucmscraper-2.2.0.tar.gz", "has_sig": false, "md5_digest": "e2201e2dcdb12ee4c70b39f4f473b228", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6950, "upload_time": "2019-09-07T11:39:19", "url": "https://files.pythonhosted.org/packages/c2/23/6c236ce978b48067f019125aae184e67dd1e82ded00adcc64d6e5b76dafa/ucmscraper-2.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e2201e2dcdb12ee4c70b39f4f473b228", "sha256": "c0f3eed188d8d574e5a851f3e9316624050d9ebecade0b06790f83e211ccfaac" }, "downloads": -1, "filename": "ucmscraper-2.2.0.tar.gz", "has_sig": false, "md5_digest": "e2201e2dcdb12ee4c70b39f4f473b228", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6950, "upload_time": "2019-09-07T11:39:19", "url": "https://files.pythonhosted.org/packages/c2/23/6c236ce978b48067f019125aae184e67dd1e82ded00adcc64d6e5b76dafa/ucmscraper-2.2.0.tar.gz" } ] }