{ "info": { "author": "Han Manjong", "author_email": "han@manjong.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Armatis\n=======\n\n.. image:: https://img.shields.io/badge/License-BSD%202--Clause-blue.svg\n :target: https://opensource.org/licenses/BSD-2-Clause\n.. image:: https://badge.fury.io/py/armatis.svg\n :target: https://badge.fury.io/py/armatis\n.. image:: https://travis-ci.org/iBluemind/armatis.svg?branch=master\n :target: https://travis-ci.org/iBluemind/armatis\n.. image:: https://readthedocs.org/projects/armatis/badge/\n :target: http://armatis.readthedocs.io/en/latest/\n\nArmatis parses the website or web API response of Korean\nparcel delivery service company for tracking the parcel.\n\nInstallation\n------------\n\nInstall Armatis with this following command:\n\n.. code:: sh\n\n $ pip install armatis\n\nUsage\n-----\n\nArmatis is simple to use. Just need to type the delivery company code\nand the invoice number.\n\nTo find the parcel, just use the method ``find()``:\n\n.. code:: python\n\n from armatis import Armatis\n\n tracker = Armatis('cj', 123456789123)\n tracker.find()\n\nYou can use the method ``supported_companies()`` to find the supported\ndelivery company names and company codes.\n\n.. code:: python\n\n tracker.supported_companies()\n\nThe returned data of the method ``find()`` is like below:\n\n.. code:: json\n\n {\n \"company\": {\n \"contact\": \"1588-1255\",\n \"name\": \"CJ\ub300\ud55c\ud1b5\uc6b4\"\n },\n \"parcel\": {\n \"receiver\": \"(\uc8fc*\",\n \"sender\": \"\ud55c\ub9cc*\",\n \"note\": \"\uc77c\ubc18\",\n \"address\": \"\uacbd\uae30\ub3c4 \uc131\ub0a8\uc2dc \ubd84\ub2f9\uad6c******\"\n },\n \"tracks\": [\n {\n \"time\": \"2016-10-13 18:07:13\",\n \"status\": \"\uac04\uc120\uc0c1\ucc28\",\n \"location\": \"\ud30c\uc8fcSub\",\n \"phone1\": \"\ud30c\uc8fcSub(031-960-6566)\",\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-13 21:22:09\",\n \"status\": \"\uc9d1\ud654\ucc98\ub9ac\",\n \"location\": \"\uacbd\uae30\ud30c\uc8fc\",\n \"phone1\": \"\uacbd\uae30\ud30c\uc8fc(070-7779-1003)\",\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 02:06:39\",\n \"status\": \"\uac04\uc120\ud558\ucc28\",\n \"location\": \"\uc625\ucc9cHUB\",\n \"phone1\": null,\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 02:17:16\",\n \"status\": \"\uac04\uc120\ud558\ucc28\",\n \"location\": \"\uc625\ucc9cHUB\",\n \"phone1\": null,\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 02:25:10\",\n \"status\": \"\ud589\ub0ad\ud3ec\uc7a5\",\n \"location\": \"\uc625\ucc9cHUB\",\n \"phone1\": null,\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 04:06:49\",\n \"status\": \"\uac04\uc120\uc0c1\ucc28\",\n \"location\": \"\uc625\ucc9cHUB\",\n \"phone1\": null,\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 11:10:05\",\n \"status\": \"\uac04\uc120\ud558\ucc28\",\n \"location\": \"\ubd84\ub2f9A\",\n \"phone1\": \"\ubd84\ub2f9A(031-725-9222)\",\n \"phone2\": null\n },\n {\n \"time\": \"2016-10-14 11:12:07\",\n \"status\": \"\ubc30\ub2ec\ucd9c\ubc1c\",\n \"location\": \"\ubd84\ub2f9\ub300\ub9ac\uc810a(C15F)\",\n \"phone1\": \"\ubd84\ub2f9\ub300\ub9ac\uc810a(C15F)(031-769-0516)\",\n \"phone2\": \"01012345678\"\n },\n {\n \"time\": \"2016-10-14 16:44:35\",\n \"status\": \"\ubc30\ub2ec\uc644\ub8cc\",\n \"location\": \"\ubd84\ub2f9\ub300\ub9ac\uc810a(C15F)\",\n \"phone1\": \"\ubd84\ub2f9\ub300\ub9ac\uc810a(C15F)(031-769-0516)\",\n \"phone2\": \"01012345678\"\n }\n ]\n }\n\nSupported delivery companies\n----------------------------\n\nThe following delivery companies are supported currently.\n\n+--------------------------------+----------------+----------------+\n| Company | Test existed | Last Updated |\n+================================+================+================+\n| CJ\ub300\ud55c\ud1b5\uc6b4, CVSNet\ud3b8\uc758\uc810\ud0dd\ubc30 | o | 2016-12-10 |\n+--------------------------------+----------------+----------------+\n| \ub85c\uc820\ud0dd\ubc30 | o | 2016-12-10 |\n+--------------------------------+----------------+----------------+\n| \ud604\ub300\ud0dd\ubc30 | o | 2016-12-10 |\n+--------------------------------+----------------+----------------+\n| \ud55c\uc9c4\ud0dd\ubc30 | o | 2016-12-10 |\n+--------------------------------+----------------+----------------+\n| KG\ub85c\uc9c0\uc2a4 | o | 2016-12-10 |\n+--------------------------------+----------------+----------------+\n| GTX\ub85c\uc9c0\uc2a4 | o | 2017-01-02 |\n+--------------------------------+----------------+----------------+\n| \uc6b0\uccb4\uad6d\ud0dd\ubc30 | o | 2017-01-06 |\n+--------------------------------+----------------+----------------+\n| \ud569\ub3d9\ud0dd\ubc30 | o | 2017-01-06 |\n+--------------------------------+----------------+----------------+\n| EMS | o | 2017-01-02 |\n+--------------------------------+----------------+----------------+\n| KGB\ud0dd\ubc30 | o | 2017-01-02 |\n+--------------------------------+----------------+----------------+\n\nHow to add new company\n----------------------\n\nYou can make the new delivery company parser easily.\n\nFirst, create a class which inherit ``Parser``, and implement the method\n``parse()``.\n\n.. code:: python\n\n from armatis.models import Parcel, Track\n from armatis.parser import Parser, ParserRequest\n\n class NewCompanyParser(Parser):\n def __init__(self, invoice_number, config):\n super(NewCompanyParser, self).__init__(invoice_number, config)\n # Describe the information about the website or web API provided by the delivery company\n parser_request = ParserRequest(url='http://thecompany.co.kr/tracking?invno=%s' % self.invoice_number)\n self.add_request(parser_request)\n\n # Actually occurred parsing the website or web API provided above\n def parse(self, parser):\n tables = parser.find_all('tbody')\n\n parcel = Parcel()\n parcel.sender = ... # Sender's name\n parcel.receiver = ... # Receiver's name\n parcel.address = ... # Receive address\n parcel.note = ... # Describe about the parcel\n self.parcel = parcel # Store the information about the parcel!\n\n trs = tables[1].find_all('tr')\n for tr in trs:\n track = Track()\n track.status = ... # Status of the delivery history\n track.time = ... # Time of the delivery history\n track.location = ... # Location the parcel where it is\n track.phone1 = ... # Contact of the location\n track.phone2 = ... # Contact of the location\n self.add_track(track) # Add the tracking information!\n\n| And, make a ``Company`` instance that describe the company.\n| Finally, register this ``Company`` object with the ``Parser`` class\n you made above.\n\n.. code:: python\n\n from armatis import Armatis, Company\n\n tracker = Armatis()\n\n # Make a Company instance that describe the company\n the_new_company = Company('\uc0c8\ub85c\uc6b4\ud68c\uc0ac', 'nc', '1234-5678', [10, 12])\n # Register the Company object with the Parser class you made\n tracker.parser_manager.register_parser(the_new_company, NewCompanyParser)\n\nDocumentation\n-------------\n\nCompleted documentation for Armatis is available on\n`ReadtheDocs `__.\n\nContributing\n------------\n\nWelcome contributions! If you would like to contribute on Armatis,\nplease follow these steps:\n\n1. Fork this repository\n2. Make your changes\n3. Install the requirements using ``pip install -r requirements.txt``\n4. Submit a pull request after running ``make ready``\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iBluemind/armatis", "keywords": "parcel delivery korea", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "armatis", "package_url": "https://pypi.org/project/armatis/", "platform": "", "project_url": "https://pypi.org/project/armatis/", "project_urls": { "Homepage": "https://github.com/iBluemind/armatis" }, "release_url": "https://pypi.org/project/armatis/1.1.1/", "requires_dist": [ "beautifulsoup4", "lxml", "requests", "six" ], "requires_python": "", "summary": "Armatis parses the website or web API response of Korean parcel delivery service company for tracking the parcel.", "version": "1.1.1" }, "last_serial": 2556734, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "69127d5a51bb9a7ba33ca22210a6acef", "sha256": "8526bdd19fb16915e2f825a64048f0c247d0dbf76ee694426442da6f0c8ff096" }, "downloads": -1, "filename": "armatis-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "69127d5a51bb9a7ba33ca22210a6acef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18932, "upload_time": "2016-12-10T12:44:12", "url": "https://files.pythonhosted.org/packages/a8/b2/555b797e9a51f06e29872a5105c64afa0f50558e53361c297e0d0d2fd1b1/armatis-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c421bc399472d2b2ab54610f015e591e", "sha256": "40e3d2dbef1a3f153f744887d04e21f7ea5a07d317179b4e0fb7ee4c093ebfda" }, "downloads": -1, "filename": "armatis-1.0.2.tar.gz", "has_sig": false, "md5_digest": "c421bc399472d2b2ab54610f015e591e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11708, "upload_time": "2016-12-10T12:44:14", "url": "https://files.pythonhosted.org/packages/77/a9/6f1d38b5f0ef8422e6548cd25763ec7172db9552b087fd7c9888ad35d17c/armatis-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "18def87264e40a9c285bfdb1bd617e22", "sha256": "ad353421453c0f77a1920da0b1fe2d599d5906bd017f369f1c52e2c377337fdf" }, "downloads": -1, "filename": "armatis-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18def87264e40a9c285bfdb1bd617e22", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18991, "upload_time": "2017-01-02T07:31:18", "url": "https://files.pythonhosted.org/packages/7a/20/34b21efbfb6e6d11f202fc370c5d40e514457e2855fa24651b721727e9f9/armatis-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "174620462b45f3723a73b0acca2b5ec7", "sha256": "c8d3f44d1cef31c53f981b8a130ee6cf42f37a29107b60db3875870f83d4528c" }, "downloads": -1, "filename": "armatis-1.1.0.tar.gz", "has_sig": false, "md5_digest": "174620462b45f3723a73b0acca2b5ec7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11918, "upload_time": "2017-01-02T07:31:20", "url": "https://files.pythonhosted.org/packages/ba/91/1db54a59b5d6d2fcc46c8573e4eb21acf008e01c6d42b571a5e6df7e6c1f/armatis-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "96874f6a62680cee9a9d5ff16865dfbf", "sha256": "0f724bd4601bdf27076d0d1a14df2b175e4acbb5ee69c42d9fb46411934c045e" }, "downloads": -1, "filename": "armatis-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96874f6a62680cee9a9d5ff16865dfbf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18595, "upload_time": "2017-01-05T23:28:51", "url": "https://files.pythonhosted.org/packages/e7/fc/cc7b1ddf838641cf081059f4037621a0fa4aeaea746a254e2a6fe39ab192/armatis-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc34818d562b0d83bc7eb1c566ffd33a", "sha256": "4f532c8c5d79b3c9c4b5a0efe0c0947868e38b131a4f4e6717f7c89dc965670d" }, "downloads": -1, "filename": "armatis-1.1.1.tar.gz", "has_sig": false, "md5_digest": "dc34818d562b0d83bc7eb1c566ffd33a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11357, "upload_time": "2017-01-05T23:28:52", "url": "https://files.pythonhosted.org/packages/14/76/7e4350a60aceddc172bb9385b92db8abeaf8544c975d1d026163399060c9/armatis-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "96874f6a62680cee9a9d5ff16865dfbf", "sha256": "0f724bd4601bdf27076d0d1a14df2b175e4acbb5ee69c42d9fb46411934c045e" }, "downloads": -1, "filename": "armatis-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96874f6a62680cee9a9d5ff16865dfbf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18595, "upload_time": "2017-01-05T23:28:51", "url": "https://files.pythonhosted.org/packages/e7/fc/cc7b1ddf838641cf081059f4037621a0fa4aeaea746a254e2a6fe39ab192/armatis-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc34818d562b0d83bc7eb1c566ffd33a", "sha256": "4f532c8c5d79b3c9c4b5a0efe0c0947868e38b131a4f4e6717f7c89dc965670d" }, "downloads": -1, "filename": "armatis-1.1.1.tar.gz", "has_sig": false, "md5_digest": "dc34818d562b0d83bc7eb1c566ffd33a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11357, "upload_time": "2017-01-05T23:28:52", "url": "https://files.pythonhosted.org/packages/14/76/7e4350a60aceddc172bb9385b92db8abeaf8544c975d1d026163399060c9/armatis-1.1.1.tar.gz" } ] }