{ "info": { "author": "Ivan Begtin", "author_email": "ivan@begtin.tech", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "====================================================\nqddate -- quick and dirty python parser dates what could be found during HTML scraping\n====================================================\n\n.. image:: https://img.shields.io/travis/ivbeg/qddate/master.svg?style=flat-square\n :target: https://travis-ci.org/ivbeg/qddate\n :alt: travis build status\n\n.. image:: https://img.shields.io/pypi/v/qddate.svg?style=flat-square\n :target: https://pypi.python.org/pypi/qddate\n :alt: pypi version\n\n.. image:: https://readthedocs.org/projects/qddate/badge/?version=latest\n :target: http://qddate.readthedocs.org/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://codecov.io/gh/scrapinghub/dateparser/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/ivbeg/qddate\n :alt: Code Coverage\n\n.. image:: https://badges.gitter.im/scrapinghub/dateparser.svg\n :alt: Join the chat at https://gitter.im/ivbeg/qddate\n :target: https://gitter.im/ivbeg/qddate?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n\n`qddate` is a Python 3 lib that helps to parse any date strings from html pages extremely fast. This lib was created during long term\nnews aggregation efforts and analyzing in wild HTML pages with dates. It's not intended to have beautiful code,\nsupport for so much languages as possible and so on. It should help to process millons of strings to identify\nand parse dates. qddata was part of proprietary technology of \"news reconstruction\". It's used to automatically create\nRSS feeds from sites without it.\n\n\n\nIf you are looking for more advanced (and slower) date parsing try `dateparser `_\nand `dateutil `_.\n\n\n\n\nDocumentation\n=============\n\nDocumentation is built automatically and can be found on\n`Read the Docs `_.\n\n\nFeatures\n========\n\n* More than 348 date patterns supported (by the end 2017)\n* Generic parsing of dates in English, Russian, Spanish, Portugenese and other languages\n* Supports strings with with left aligned dates and supplimental words. Example: \"12.03.1999 some text here\"\n* Extremely fast, uses pyparsing, hard-coded constants and dirty speed optimizations tricks\n\n\nLimitations\n========\n\n* Not all languages supported, more languages will be added by request and example\n* Not so easy to add new language based date patterns as it's in dateparser for example.\n* Could miss some rarely used date formats\n* Doesn't support relative dates\n* Doesn't support calendars\n\n\nSpeed optimization\n========\n\n* All constants are hard encoded, no external settings\n* Uses only datetime and pyparsing as external libraries. No more dependencies, all reused code incorporated into the lib code\n* No regular expressions, instead pre-generated pyparsing patterns\n* Intensive pattern filtering using min/max text length filters and common text patterns\n* No one settings/data file loaded from disk\n\n\nUsage\n=====\n\nThe easiest way is to use the `qddate.DateParser <#qddate.DateParser>`_ class,\nand it's `parse` function.\n\n\n \n\n\nPopular Formats\n---------------\n\n >>> import qddate\n >>> parser = qddate.DateParser()\n >>> parser.parse('2012-12-15')\n datetime.datetime(2012, 12, 15, 0, 0)\n >>> parser.parse(u'Fri, 12 Dec 2014 10:55:50')\n datetime.datetime(2014, 12, 12, 10, 55, 50)\n >>> parser.parse(u'\u043f\u044f\u0442\u043d\u0438\u0446\u0430, \u0438\u044e\u043b\u044f 17, 2015') # Russian (17 July 2015)\n datetime.datetime(2015, 1, 13, 13, 34)\n\n\nThis will try to parse a date from the given string, attempting to\ndetect the language each time.\n\n\n\nDependencies\n============\n\n`qddate` relies on following libraries in some ways:\n\n * pyparsing_ is a module for advanced text processing.\n.. _pyparsing: https://pypi.python.org/pypi/pyparsing\n\n\nSupported languages\n===================\n\n* Bulgarian\n* Czech\n* English\n* French\n* German\n* Portuguese\n* Russian\n* Spanish\n\nThanks\n======\nI wrote this date parsing code at 2008 year and later only updated it several times, migrating from regular expressions\nto pyparsing. Looking at `dateparser ` clean code and documentation motivated me\nto return to this code and to clean it up and to share it publicly. I've used same documentation and code style approach\nand reused build scripts and documentation generation style from dateutil.\nMany thanks to ScrapingHub team!\n\n\n.. image:: https://badges.gitter.im/qddate/Lobby.svg\n :alt: Join the chat at https://gitter.im/qddate/Lobby\n :target: https://gitter.im/qddate/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n.. :changelog:\n\nHistory\n=======\n\n\n0.1.1 (2018-07-20)\n------------------\n* Code cleanup, date patterns moved to \"qddate.patterns\"\n\n0.1.0 (2018-01-14)\n------------------\n* First public release on PyPI and github\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ivbeg/qddate", "keywords": "date datetime", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "qddate", "package_url": "https://pypi.org/project/qddate/", "platform": "", "project_url": "https://pypi.org/project/qddate/", "project_urls": { "Homepage": "https://github.com/ivbeg/qddate" }, "release_url": "https://pypi.org/project/qddate/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Quick and dirty date parsing Python library to parse HTML dates really fast", "version": "0.1.1" }, "last_serial": 4084650, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4aca732ad7eaf0fc37a943dcd35862e5", "sha256": "bacb599588f24ecfadf5a95a8171c0326ecf41ab808761caae8cbcaa995c4651" }, "downloads": -1, "filename": "qddate-0.1.0-py2.7.egg", "has_sig": false, "md5_digest": "4aca732ad7eaf0fc37a943dcd35862e5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 22386, "upload_time": "2018-01-14T10:40:50", "url": "https://files.pythonhosted.org/packages/27/0f/99c73b0ddf42333728755dafe63d00d037e09fe061d419eaed71403aa48e/qddate-0.1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "42b2ea1aa0f2751857bccb2e49500311", "sha256": "cf8850b329bb9cfa8d30e749435a369363c7579386515f3c029db41244a1bc2f" }, "downloads": -1, "filename": "qddate-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "42b2ea1aa0f2751857bccb2e49500311", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14407, "upload_time": "2018-01-14T10:40:36", "url": "https://files.pythonhosted.org/packages/12/e1/80b721e6952333c07d45c1e9aec262c5ffe747cb896f3726ea1c568f3a8e/qddate-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcf3a7f261c784c7849b432c87843f57", "sha256": "ce5f1d9e1d3d13a8252a1a664219616ceaaef7132f0d00dcb9e04ba559ac703e" }, "downloads": -1, "filename": "qddate-0.1.0.tar.gz", "has_sig": false, "md5_digest": "dcf3a7f261c784c7849b432c87843f57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13042, "upload_time": "2018-01-14T10:40:52", "url": "https://files.pythonhosted.org/packages/4c/8f/45349a97f441994b646df6ae5febc980487f36a3781426d6ae0ea8609525/qddate-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3e6917e670894d65c635170369046dee", "sha256": "7bd35c4161ba8affcfff21167df511ad7d678de6ded17048b269becdcc0bc013" }, "downloads": -1, "filename": "qddate-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3e6917e670894d65c635170369046dee", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20171, "upload_time": "2018-07-20T05:57:18", "url": "https://files.pythonhosted.org/packages/87/8b/5a57ae3af73807aeb6e5d9704c696d8d77420d36d1b326612c0d035cbf05/qddate-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e96a54b5e0b3d1c13d61a6dc4e090cc4", "sha256": "236e18984d34a0944a639a4635ac6da0da2c48aacf0567f2767554b459feeb29" }, "downloads": -1, "filename": "qddate-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e96a54b5e0b3d1c13d61a6dc4e090cc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14680, "upload_time": "2018-07-20T05:57:46", "url": "https://files.pythonhosted.org/packages/a3/21/0fb500757f817398eba537009bfe31697d45ac941fb891d41626cc347c50/qddate-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e6917e670894d65c635170369046dee", "sha256": "7bd35c4161ba8affcfff21167df511ad7d678de6ded17048b269becdcc0bc013" }, "downloads": -1, "filename": "qddate-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3e6917e670894d65c635170369046dee", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20171, "upload_time": "2018-07-20T05:57:18", "url": "https://files.pythonhosted.org/packages/87/8b/5a57ae3af73807aeb6e5d9704c696d8d77420d36d1b326612c0d035cbf05/qddate-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e96a54b5e0b3d1c13d61a6dc4e090cc4", "sha256": "236e18984d34a0944a639a4635ac6da0da2c48aacf0567f2767554b459feeb29" }, "downloads": -1, "filename": "qddate-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e96a54b5e0b3d1c13d61a6dc4e090cc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14680, "upload_time": "2018-07-20T05:57:46", "url": "https://files.pythonhosted.org/packages/a3/21/0fb500757f817398eba537009bfe31697d45ac941fb891d41626cc347c50/qddate-0.1.1.tar.gz" } ] }