{ "info": { "author": "DomainTools", "author_email": "timothy@domaintools.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 6 - Mature", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "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", "Topic :: Utilities" ], "description": "|domaintools|\n=============\n\n|PyPI version| |Build Status| |Coverage Status| |License|\n\nDomainTools' Official Python API\n\n.. figure:: https://github.com/DomainTools/python_api/raw/master/artwork/example.gif\n :alt: domaintools Example\n\n domaintools Example\n\nInstalling the DomainTools' API\n===============================\n\nTo install the API run\n\n.. code:: bash\n\n pip install domaintools_api --upgrade\n\nIdeally, within a virtual environment.\n\nUsing the API\n=============\n\nTo start out create an instance of the API - passing in your credentials\n\n.. code:: python\n\n\n from domaintools import API\n\n\n api = API(USER_NAME, KEY)\n\nEvery API endpoint is then exposed as a method on the API object, with\nany parameters that should be passed into that endpoint being passed in\nas method arguments:\n\n.. code:: python\n\n api.domain_search('google', exclude='photos')\n\nYou can get an overview of every endpoint that you can interact with\nusing the builtin help function:\n\n.. code:: python\n\n help(api)\n\nIf applicable, native Python looping can be used directly to loop\nthrough any results:\n\n.. code:: python\n\n for result in api.domain_search('google', exclude='photos'):\n print(result['sld'])\n\nYou can also use a context manager to ensure processing on the results\nonly occurs if the request is successfully made:\n\n.. code:: python\n\n with api.domain_search('google', exclude='photos') as results:\n print(results)\n\nFor API calls where a single item is expected to be returned, you can\ndirectly interact with the result:\n\n.. code:: python\n\n profile = api.domain_profile('google.com')\n title = profile['website_data']['title']\n\nFor any API call where a single type of data is expected you can\ndirectly cast to the desired type:\n\n.. code:: python\n\n float(api.reputation('google.com')) == 0.0\n int(api.reputation('google.com')) == 0\n\nThe entire structure returned from DomainTools can be retrieved by doing\n``.data()`` while just the actionable response information can be\nretrieved by doing ``.response()``:\n\n.. code:: python\n\n api.domain_search('google').data() == {'response': { ... }}\n api.domain_search('google').response() == { ... }\n\nYou can directly get the html, xml, or json version of the response by\ncalling ``.(html|xml|json)()``:\n\n.. code:: python\n\n html = str(api.domain_search('google').json())\n xml = str(api.domain_search('google').xml())\n html = str(api.domain_search('google').html())\n\nIf any API call is unsuccesfull, one of the exceptions defined in\n``domaintools.exceptions`` will be raised:\n\n.. code:: python\n\n api.domain_profile('notvalid').data()\n\n\n ---------------------------------------------------------------------------\n BadRequestException Traceback (most recent call last)\n in ()\n ----> 1 api.domain_profile('google').data()\n\n /home/tcrosley/projects/external/python_api/venv/lib/python3.5/site-packages/domaintools-0.0.1-py3.5.egg/domaintools/base_results.py in data(self)\n 25 self.api._request_session = Session()\n 26 results = self.api._request_session.get(self.url, params=self.kwargs)\n ---> 27 self.status = results.status_code\n 28 if self.kwargs.get('format', 'json') == 'json':\n 29 self._data = results.json()\n\n /home/tcrosley/projects/external/python_api/venv/lib/python3.5/site-packages/domaintools-0.0.1-py3.5.egg/domaintools/base_results.py in status(self, code)\n 44\n 45 elif code == 400:\n ---> 46 raise BadRequestException()\n 47 elif code == 403:\n 48 raise NotAuthorizedException()\n\n BadRequestException:\n\nthe exception will contain the status code and the reason for the\nexception:\n\n.. code:: python\n\n try:\n api.domain_profile('notvalid').data()\n except Exception as e:\n assert e.code == 400\n assert 'We could not understand your request' in e.reason['error']['message']\n\nYou can get the status code of a response outside of exception handling\nby doing ``.status``:\n\n.. code:: python\n\n\n api.domain_profile('google.com').status == 200\n\nUsing the API Asynchronously\n============================\n\n.. figure:: https://github.com/DomainTools/python_api/raw/master/artwork/example_async.gif\n :alt: domaintools Async Example\n\n domaintools Async Example\n\nIf you are running on Python 3.5+ the DomainTools' API automatically\nsupports async usage:\n\n.. code:: python\n\n\n search_results = await api.domain_search('google')\n\nThere is built-in support for async context managers:\n\n.. code:: python\n\n async with api.domain_search('google') as search_results:\n # do things\n\nAnd direct async for loops:\n\n.. code:: python\n\n async for result in api.domain_search('google'):\n print(result)\n\nAll async operations can safely be intermixed with non async ones - with\noptimal performance achieved if the async call is done first:\n\n.. code:: python\n\n profile = api.domain_profile('google.com')\n await profile\n title = profile['website_data']['title']\n\nInteracting with the API via the command line client\n====================================================\n\n.. figure:: https://github.com/DomainTools/python_api/raw/master/artwork/example_cli.gif\n :alt: domaintools CLI Example\n\n domaintools CLI Example\n\nImmediately after installing ``domaintools_api`` with pip, a\n``domaintools`` command line client will become available to you:\n\n.. code:: bash\n\n domaintools --help\n\nTo use - simply pass in the api\\_call you would like to make along with\nthe parameters that it takes and your credentials:\n\n.. code:: bash\n\n domaintools domain_search google --max_length 10 -u $TEST_USER -k $TEST_KEY\n\nOptionally, you can specify the desired format (html, xml, json, or\nlist) of the results:\n\n.. code:: bash\n\n domaintools domain_search google --max_length 10 -u $TEST_USER -k $TEST_KEY -f html\n\nTo avoid having to type in your API key repeatedly, you can specify them\nin ``~/.dtapi`` separated by a new line:\n\n.. code:: bash\n\n API_USER\n API_KEY\n\n.. |domaintools| image:: https://github.com/DomainTools/python_api/raw/master/artwork/logo.png\n.. |PyPI version| image:: https://badge.fury.io/py/domaintools_api.svg\n :target: http://badge.fury.io/py/domaintools_api\n.. |Build Status| image:: https://travis-ci.org/DomainTools/python_api.svg?branch=master\n :target: https://travis-ci.org/DomainTools/python_api\n.. |Coverage Status| image:: https://coveralls.io/repos/github/DomainTools/python_api/badge.svg?branch=master\n :target: https://coveralls.io/github/DomainTools/python_api?branch=master\n.. |License| image:: https://img.shields.io/github/license/mashape/apistatus.svg\n :target: https://pypi.python.org/pypi/domaintools_api/\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/domaintools/python_api", "keywords": "Python", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "domaintools_api", "package_url": "https://pypi.org/project/domaintools_api/", "platform": "", "project_url": "https://pypi.org/project/domaintools_api/", "project_urls": { "Homepage": "https://github.com/domaintools/python_api" }, "release_url": "https://pypi.org/project/domaintools_api/0.3.3/", "requires_dist": null, "requires_python": "", "summary": "DomainTools' Official Python API", "version": "0.3.3" }, "last_serial": 4597339, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "bd9ed6c6ec48fa8acaf8729acdcb3b97", "sha256": "fd2a06d7ed77e724d6ccf51a2936cb40d32dee6c2d6fed7e0b6a814412978178" }, "downloads": -1, "filename": "domaintools_api-0.0.1.tar.gz", "has_sig": false, "md5_digest": "bd9ed6c6ec48fa8acaf8729acdcb3b97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9570, "upload_time": "2016-10-14T22:44:16", "url": "https://files.pythonhosted.org/packages/87/4e/eae1195ede3d6b534df3731e6398ecf44963b8aba88ba7342f6625400ced/domaintools_api-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d783d85bf7ea68a08131001bb592fec3", "sha256": "574b59bdc10d0fa8a31473eaa99009ac59ecfc41811018923b43c313071a33ab" }, "downloads": -1, "filename": "domaintools_api-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d783d85bf7ea68a08131001bb592fec3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11918, "upload_time": "2016-10-18T00:11:57", "url": "https://files.pythonhosted.org/packages/37/ff/4b7d03e3558c4cef285719fb1972a7bbdc9e208001d9b967f874997b5282/domaintools_api-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "70f78a952bb94b090358a8fc3b54c153", "sha256": "fe7395b15c3bf2c054656199dec09a0614dfc0185f7909a6dbdca4787c53b029" }, "downloads": -1, "filename": "domaintools_api-0.1.1.tar.gz", "has_sig": false, "md5_digest": "70f78a952bb94b090358a8fc3b54c153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11929, "upload_time": "2016-10-18T00:48:24", "url": "https://files.pythonhosted.org/packages/de/e9/7c01b8769d378f479ce4ede0eb16134dcf941c4b1c265bc16c93e6b3c57e/domaintools_api-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "9ebec3d1d0654605b4d5f2e6bb12c69a", "sha256": "f29cc744e6175b710ecc7ddec22ff314628b4114755ae16d97e9c4fc60f0387d" }, "downloads": -1, "filename": "domaintools_api-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9ebec3d1d0654605b4d5f2e6bb12c69a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12325, "upload_time": "2016-11-08T23:02:17", "url": "https://files.pythonhosted.org/packages/7c/d6/f11bc80adc4b0fe134f4cd5dd69baedc32c50a5111aec15d2fb564e96a25/domaintools_api-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bd4743adf7c78a5caf0379ba785e62ef", "sha256": "83dc8e0adcd4ad67a0e2d97acc5383a99c589e222c4fb2b4db859730361d73c1" }, "downloads": -1, "filename": "domaintools_api-0.1.3.tar.gz", "has_sig": false, "md5_digest": "bd4743adf7c78a5caf0379ba785e62ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12347, "upload_time": "2016-11-09T23:22:36", "url": "https://files.pythonhosted.org/packages/40/5e/eb91e6a22b8639733b376d8f374933e349cf397edbafb5681df567974396/domaintools_api-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "3b9d62fb31cff728c08ba9fd88d445ee", "sha256": "33945c0d3885b17ddc096afd14b3e8cd041ca7da4773c527ead0aadb9784fc84" }, "downloads": -1, "filename": "domaintools_api-0.1.4.tar.gz", "has_sig": false, "md5_digest": "3b9d62fb31cff728c08ba9fd88d445ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12412, "upload_time": "2016-11-21T22:12:14", "url": "https://files.pythonhosted.org/packages/30/75/773b76d564e87fd36341398aa34078a4b1cdaec53f2e2460df0fea92bdf0/domaintools_api-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "7e4c256c475ecd4a607fb4fdc9bde283", "sha256": "b9ff221fab47a433251eb44745d7dcf8437de4f83703aab9c127e26c25ebb05a" }, "downloads": -1, "filename": "domaintools_api-0.1.5.tar.gz", "has_sig": false, "md5_digest": "7e4c256c475ecd4a607fb4fdc9bde283", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12421, "upload_time": "2016-11-28T22:24:10", "url": "https://files.pythonhosted.org/packages/13/87/53dc00eff4a0c0c291b378704870f42793517897277725affd74ceaefb6d/domaintools_api-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "61723c1430a2343d1359fc2b88ae84ad", "sha256": "d328ac20d1915cee1c2dccd6e834d131cfc0f2ffa7065ac54fb0f9c768c68502" }, "downloads": -1, "filename": "domaintools_api-0.1.6.tar.gz", "has_sig": false, "md5_digest": "61723c1430a2343d1359fc2b88ae84ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12619, "upload_time": "2017-02-03T23:42:59", "url": "https://files.pythonhosted.org/packages/7a/06/504c6994dd3384566d8e3d7f731b66adc4dec00721a23c157f3a305c2c31/domaintools_api-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "10aa6561e20e96f4e416e9c4aa976054", "sha256": "69dff00c3c5db8383b5d6a46c05764fd2735d6e3c1dd6d2a20a000c12c235458" }, "downloads": -1, "filename": "domaintools_api-0.1.7.tar.gz", "has_sig": false, "md5_digest": "10aa6561e20e96f4e416e9c4aa976054", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12624, "upload_time": "2017-05-08T17:33:40", "url": "https://files.pythonhosted.org/packages/64/d0/bb1198a5cb7dc0f11fbcde2a5ce7a18b1326b91d915bf0817d7db7cfc433/domaintools_api-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "75523bd1a06c51b46a6f2909a4e089d3", "sha256": "057985089cc96d02bc1a4fa596fae92c35e20786c441a3ff4bd00710aa311fa7" }, "downloads": -1, "filename": "domaintools_api-0.1.8.tar.gz", "has_sig": false, "md5_digest": "75523bd1a06c51b46a6f2909a4e089d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12618, "upload_time": "2017-08-08T20:25:10", "url": "https://files.pythonhosted.org/packages/c2/17/3fe68271738a33ae6b72681d350ce453fb23bf5b263eb0fa4c161f30f2e6/domaintools_api-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "2d452f2dcc3b9e0491129cb2c05afe9a", "sha256": "85e15ac5f605bd4bb0cb534933c7d0df9ab8013386cddb914fb2f131ff32b7f5" }, "downloads": -1, "filename": "domaintools_api-0.1.9.tar.gz", "has_sig": false, "md5_digest": "2d452f2dcc3b9e0491129cb2c05afe9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12712, "upload_time": "2017-08-16T16:32:26", "url": "https://files.pythonhosted.org/packages/fd/ef/7c9acaa9066be02cf6923410eb12393b06541e0ea41855b9bae61f88f222/domaintools_api-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9d40a4b96a6513b97d4a4f340ca37f3d", "sha256": "377ff792588049d2f573dae7e05d17dda9983e902fe2481c54ba2e547c7b22ea" }, "downloads": -1, "filename": "domaintools_api-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9d40a4b96a6513b97d4a4f340ca37f3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12714, "upload_time": "2017-09-26T23:48:05", "url": "https://files.pythonhosted.org/packages/ce/a4/7c3d82f6617290eca2aa0b4941ef1f175de3f8043abd166f64d70e5bdb26/domaintools_api-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1abc997a6d32949ae4fcb3e66a2addbf", "sha256": "2551f39a411cab066f9d61f83a79135abcd324b51f31e43f7b55daf450a0e5c5" }, "downloads": -1, "filename": "domaintools_api-0.2.1.tar.gz", "has_sig": false, "md5_digest": "1abc997a6d32949ae4fcb3e66a2addbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12613, "upload_time": "2018-03-15T20:10:04", "url": "https://files.pythonhosted.org/packages/eb/6e/3497984dc78602168042753dcc899f35e4faf8401a83d22982a5d087dfd7/domaintools_api-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "43e731337dd5790b5154e34e8ee13d2e", "sha256": "7747bc1e9fe2b0f3082d75210b076e9909af2f20477bbef1b9da3b7238b73420" }, "downloads": -1, "filename": "domaintools_api-0.2.2.tar.gz", "has_sig": false, "md5_digest": "43e731337dd5790b5154e34e8ee13d2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12729, "upload_time": "2018-03-27T18:07:32", "url": "https://files.pythonhosted.org/packages/4e/dd/76062085b6c60fe507c0ba8a01386fae43bf24046b921b6f1b0fa07084d2/domaintools_api-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "729a74dad2cc2f0ea63ff5b6d5fc7bc0", "sha256": "4328d896d389757374ea8783d39641316a1af95e60bcf49dc59f90926ae236ad" }, "downloads": -1, "filename": "domaintools_api-0.2.3.tar.gz", "has_sig": false, "md5_digest": "729a74dad2cc2f0ea63ff5b6d5fc7bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15666, "upload_time": "2018-07-27T19:59:17", "url": "https://files.pythonhosted.org/packages/39/3e/738774da3cb56debff9d95197113fd9366397b282dca7ac5a23d34dc104c/domaintools_api-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d8724edc7466b25f1bc39499e8462cfe", "sha256": "2cc10501ba149d721c05397ce8089e9c1045237d3adaf399b13b504328353107" }, "downloads": -1, "filename": "domaintools_api-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d8724edc7466b25f1bc39499e8462cfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15699, "upload_time": "2018-09-13T00:13:02", "url": "https://files.pythonhosted.org/packages/7b/46/bbeec58c5163924a971db28f057e618c767e1771c2ac9ade9cadc5174491/domaintools_api-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "13721237853f61822c33f9a2d644e7de", "sha256": "4537a84be90f8f695f2758fb485122f58343449f573e5485f3d0879596dc7693" }, "downloads": -1, "filename": "domaintools_api-0.3.0.tar.gz", "has_sig": false, "md5_digest": "13721237853f61822c33f9a2d644e7de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15738, "upload_time": "2018-10-22T22:56:07", "url": "https://files.pythonhosted.org/packages/2a/6d/cf6bcb7123b3a6f89566ef59c992eff7f0014eb73c349810039ad408079f/domaintools_api-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "13874bf0cc29ad71cf263e10d3fa9455", "sha256": "77bee42cc11033c8eb01de725bc29545a699a6224edb4bbe5ae47133b2c8b56a" }, "downloads": -1, "filename": "domaintools_api-0.3.1.tar.gz", "has_sig": false, "md5_digest": "13874bf0cc29ad71cf263e10d3fa9455", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15788, "upload_time": "2018-10-24T15:26:42", "url": "https://files.pythonhosted.org/packages/fa/c3/f23df6d8acae43b4f01ac0e5b83eafb604cbcab43886eb76dabffe1c6a88/domaintools_api-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "40f0e3c98d3f9ca653ec61d3779ca498", "sha256": "dfb02e58f0a6ce1d8be63d5bb13853565c0c55138fbed5ffe6744752346dd2f3" }, "downloads": -1, "filename": "domaintools_api-0.3.2.tar.gz", "has_sig": false, "md5_digest": "40f0e3c98d3f9ca653ec61d3779ca498", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15794, "upload_time": "2018-12-13T23:23:27", "url": "https://files.pythonhosted.org/packages/12/be/2c6c7c9259465de7d6fa7ea60b555c5f0ba00c95a01896ddf8dd05517d27/domaintools_api-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "f1e5a929865b4480523a040b38d8f87d", "sha256": "f567f407b8997e947df5badf7c2bea64fdfd33c54ade24eab36ef575fb71ccb7" }, "downloads": -1, "filename": "domaintools_api-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f1e5a929865b4480523a040b38d8f87d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15770, "upload_time": "2018-12-13T23:34:01", "url": "https://files.pythonhosted.org/packages/34/9f/2876b2080b2f9e4d550a7c41f24e7db9dba6047856f9243442fca109ba53/domaintools_api-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f1e5a929865b4480523a040b38d8f87d", "sha256": "f567f407b8997e947df5badf7c2bea64fdfd33c54ade24eab36ef575fb71ccb7" }, "downloads": -1, "filename": "domaintools_api-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f1e5a929865b4480523a040b38d8f87d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15770, "upload_time": "2018-12-13T23:34:01", "url": "https://files.pythonhosted.org/packages/34/9f/2876b2080b2f9e4d550a7c41f24e7db9dba6047856f9243442fca109ba53/domaintools_api-0.3.3.tar.gz" } ] }