{ "info": { "author": "Aaron Bach", "author_email": "bachya1208@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "# python-eufy-security\n\n[![CI](https://github.com/fuzzymistborn/python-eufy-security/workflows/CI/badge.svg)](https://github.com/fuzzymistborn/python-eufy-security/actions)\n[![PyPi](https://img.shields.io/pypi/v/python-eufy-security.svg)](https://pypi.python.org/pypi/python-eufy-security)\n[![Version](https://img.shields.io/pypi/pyversions/python-eufy-security.svg)](https://pypi.python.org/pypi/python-eufy-security)\n[![License](https://img.shields.io/pypi/l/python-eufy-security.svg)](https://github.com/fuzzymistborn/python-eufy-security/blob/master/LICENSE)\n[![Code Coverage](https://codecov.io/gh/fuzzymistborn/python-eufy-security/branch/master/graph/badge.svg)](https://codecov.io/gh/fuzzymistborn/python-eufy-security)\n[![Say Thanks](https://img.shields.io/badge/SayThanks-!-1EAEDB.svg)](https://saythanks.io/to/fuzzymistborn)\n\nThis is an experimental Python library for Eufy Security devices (cameras, doorbells, \netc.).\n\n# Python Versions\n\nThe library is currently supported on\n\n* Python 3.6\n* Python 3.7\n* Python 3.8\n\n# Installation\n\n```bash\npip install python-eufy-security\n```\n\n# Account Information\n\nBecause of the way the Eufy Security private API works, an email/password combo cannot\nwork with _both_ the Eufy Security mobile app _and_ this library. It is recommended to\nuse the mobile app to create a secondary \"guest\" account with a separate email address\nand use it with this library.\n\n# Usage\n\nEverything starts with an:\n[aiohttp](https://aiohttp.readthedocs.io/en/stable/) `ClientSession`:\n\n```python\nimport asyncio\n\nfrom aiohttp import ClientSession\n\n\nasync def main() -> None:\n \"\"\"Create the aiohttp session and run the example.\"\"\"\n async with ClientSession() as websession:\n # YOUR CODE HERE\n\n\nasyncio.get_event_loop().run_until_complete(main())\n```\n\nLogin and get to work:\n\n```python\nimport asyncio\n\nfrom aiohttp import ClientSession\n\nfrom eufy_security import async_login\n\n\nasync def main() -> None:\n \"\"\"Create the aiohttp session and run the example.\"\"\"\n async with ClientSession() as websession:\n # Create an API client:\n api = await async_login(EUFY_EMAIL, EUFY_PASSWORD, websession)\n\n # Loop through the cameras associated with the account:\n for camera in api.cameras.values():\n print(\"------------------\")\n print(\"Camera Name: %s\", camera.name)\n print(\"Serial Number: %s\", camera.serial)\n print(\"Station Serial Number: %s\", camera.station_serial)\n print(\"Last Camera Image URL: %s\", camera.last_camera_image_url)\n\n print(\"Starting RTSP Stream\")\n stream_url = await camera.async_start_stream()\n print(\"Stream URL: %s\", stream_url)\n\n print(\"Stopping RTSP Stream\")\n stream_url = await camera.async_stop_stream()\n\n\nasyncio.get_event_loop().run_until_complete(main())\n```\n\nCheck out `example.py`, the tests, and the source files themselves for method\nsignatures and more examples.\n\n# Contributing\n\n1. [Check for open features/bugs](https://github.com/FuzzyMistborn/python-eufy-security/issues)\n or [initiate a discussion on one](https://github.com/FuzzyMistborn/python-eufy-security/issues/new).\n2. [Fork the repository](https://github.com/FuzzyMistborn/python-eufy-security/fork).\n3. Install the dev environment: `make init`.\n4. Enter the virtual environment: `source ./venv/bin/activate`\n5. Code your new feature or bug fix.\n6. Write a test that covers your new functionality.\n7. Update `README.md` with any new documentation.\n8. Run tests and ensure 100% code coverage: `make coverage`\n9. Ensure you have no linting errors: `make lint`\n10. Ensure you have typed your code correctly: `make typing`\n11. Submit a pull request!\n", "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/FuzzyMistborn/python-eufy-security", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "python-eufy-security", "package_url": "https://pypi.org/project/python-eufy-security/", "platform": "", "project_url": "https://pypi.org/project/python-eufy-security/", "project_urls": { "Homepage": "https://github.com/FuzzyMistborn/python-eufy-security", "Repository": "https://github.com/FuzzyMistborn/python-eufy-security" }, "release_url": "https://pypi.org/project/python-eufy-security/0.3.1/", "requires_dist": [ "aiohttp (==3.6.1)" ], "requires_python": ">=3.6.1,<4.0.0", "summary": "A Python library for Eufy Security devices", "version": "0.3.1", "yanked": false, "yanked_reason": null }, "last_serial": 6613230, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c0681daaf42980b640e792010d283722", "sha256": "8a8bf8eeb6ae58d1431e62ec88c9bac483c295dd7417be61d4be77f67775af0f" }, "downloads": -1, "filename": "python_eufy_security-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c0681daaf42980b640e792010d283722", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9465, "upload_time": "2019-10-30T22:46:36", "upload_time_iso_8601": "2019-10-30T22:46:36.270752Z", "url": "https://files.pythonhosted.org/packages/19/71/2ad0deb5c5d625149dd0a9f5c2bcd01cb4ed2d4aa18ef361fa3d1d537a82/python_eufy_security-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a26d078a17101cb0f60947d870c27859", "sha256": "360dcecdbaa32b4e49c2f99159873006088c68702d189404a6dc3d7f949fc696" }, "downloads": -1, "filename": "python-eufy-security-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a26d078a17101cb0f60947d870c27859", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8096, "upload_time": "2019-10-30T22:46:38", "upload_time_iso_8601": "2019-10-30T22:46:38.590780Z", "url": "https://files.pythonhosted.org/packages/5e/5c/65ce9811497803631c33865b255580ce58dea176610a8359f36100466ebf/python-eufy-security-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "08c8835799b01ce2656d2342062f09db", "sha256": "8d2701360d2ab9a0b7a7b534e29097db93ab7c67554cff021eb94dd1ca8cbf8c" }, "downloads": -1, "filename": "python_eufy_security-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "08c8835799b01ce2656d2342062f09db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9546, "upload_time": "2019-11-01T01:04:23", "upload_time_iso_8601": "2019-11-01T01:04:23.119272Z", "url": "https://files.pythonhosted.org/packages/eb/ea/8b044edb1423a59ddddb32dd971b016f1cc2cf2ab235b7467593c40bb0cf/python_eufy_security-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a9e4c885716f34828a77ba6b92f879ff", "sha256": "0a8e7fbcb78db5d119bd054e28ddc295f93cf515ce339aa619eeb211f2c30f14" }, "downloads": -1, "filename": "python-eufy-security-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a9e4c885716f34828a77ba6b92f879ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8231, "upload_time": "2019-11-01T01:04:24", "upload_time_iso_8601": "2019-11-01T01:04:24.892672Z", "url": "https://files.pythonhosted.org/packages/04/09/0467df84f9021a08f3c95e13a572b6aa63b656a3f86a83b61cdc90f24431/python-eufy-security-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b6c8f62905c7e021b4369c720539992d", "sha256": "016c3574c652c5f633848c3be34199287d1830b57d4b16450c5726022e4508c3" }, "downloads": -1, "filename": "python_eufy_security-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b6c8f62905c7e021b4369c720539992d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9678, "upload_time": "2019-11-01T03:03:50", "upload_time_iso_8601": "2019-11-01T03:03:50.914343Z", "url": "https://files.pythonhosted.org/packages/3e/e9/e3a6a2b835811859c460de69bf916ab12bc3fa5e7e83088130cf665a0c65/python_eufy_security-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "993ab0b532a461ecce12ab9f4ca98ea6", "sha256": "297cfbce61fd95447b3695a1f8c1f26e7fb7e1f9738cff93596f92d8d6080aa1" }, "downloads": -1, "filename": "python-eufy-security-0.1.1.tar.gz", "has_sig": false, "md5_digest": "993ab0b532a461ecce12ab9f4ca98ea6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8339, "upload_time": "2019-11-01T03:03:52", "upload_time_iso_8601": "2019-11-01T03:03:52.680236Z", "url": "https://files.pythonhosted.org/packages/1a/d4/f1d3404b8c2421d3c75852f16825ee3f754046eb63a50a59c808c80bc03f/python-eufy-security-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "25ddbe16720dbb31c44c0fdaa5207330", "sha256": "fd8545982ec7399982bd87c6b1fe1d7c80fb2a38cd432342235f58f61bf912aa" }, "downloads": -1, "filename": "python_eufy_security-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "25ddbe16720dbb31c44c0fdaa5207330", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.1,<4.0.0", "size": 7658, "upload_time": "2019-12-10T21:11:03", "upload_time_iso_8601": "2019-12-10T21:11:03.839701Z", "url": "https://files.pythonhosted.org/packages/58/cc/3042994fbb5f033c91a96037b8565384c6ac7bbf60603289b210111a287b/python_eufy_security-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b06be33afefce5f52a6bda86bd899a43", "sha256": "17bf6253354c6d1de2cea2a46336aa3c8823f173762561c75b9f6dc2e9305f2d" }, "downloads": -1, "filename": "python-eufy-security-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b06be33afefce5f52a6bda86bd899a43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.1,<4.0.0", "size": 6920, "upload_time": "2019-12-10T21:11:02", "upload_time_iso_8601": "2019-12-10T21:11:02.719569Z", "url": "https://files.pythonhosted.org/packages/6f/56/cf17f8a11a7dbe855b5fc2a7f4581b32eb443c7e46e32ea64435547a31a4/python-eufy-security-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e12624c2cb473bea55f48b16e78e4101", "sha256": "88b07f8fbb890c4029167286ed7ccb0c75eec13c70f67dfb13d4bbfa4ceb860b" }, "downloads": -1, "filename": "python_eufy_security-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e12624c2cb473bea55f48b16e78e4101", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.1,<4.0.0", "size": 7734, "upload_time": "2019-12-12T14:54:02", "upload_time_iso_8601": "2019-12-12T14:54:02.804981Z", "url": "https://files.pythonhosted.org/packages/0f/60/e70db3fdc6c3b009d299b3ba4c7826900f5eae5291cf2af963f843e5cc30/python_eufy_security-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "58cdfb9a6077660f8ef626447e8e32c8", "sha256": "6b745370861ee014c8efba4d82b1b75cd5238c48f6b53cef694653d0796abb6f" }, "downloads": -1, "filename": "python-eufy-security-0.3.0.tar.gz", "has_sig": false, "md5_digest": "58cdfb9a6077660f8ef626447e8e32c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.1,<4.0.0", "size": 6997, "upload_time": "2019-12-12T14:54:01", "upload_time_iso_8601": "2019-12-12T14:54:01.297175Z", "url": "https://files.pythonhosted.org/packages/11/31/d1a68c12b838a02ed0114e0b895666feaed9886ee01d42a4c7b789792957/python-eufy-security-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a8dea73c621d914c9eedf7a369d82364", "sha256": "c2175fb2cdc3c8643599d6567de7ac2e7fb19a5739eb86cf766376734d59ea58" }, "downloads": -1, "filename": "python_eufy_security-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a8dea73c621d914c9eedf7a369d82364", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.1,<4.0.0", "size": 7980, "upload_time": "2020-02-11T23:19:07", "upload_time_iso_8601": "2020-02-11T23:19:07.208818Z", "url": "https://files.pythonhosted.org/packages/95/54/bf36f1f0a18a4f75416832c6d63605335f65602b5ef912385e2e9c527992/python_eufy_security-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e4529f321da9758e28cfb0ad2eb572e3", "sha256": "55074e6ac07be20cb97573d1667fe710ef38343368855d181ad17ec5e084ddbb" }, "downloads": -1, "filename": "python-eufy-security-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e4529f321da9758e28cfb0ad2eb572e3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.1,<4.0.0", "size": 7459, "upload_time": "2020-02-11T23:19:05", "upload_time_iso_8601": "2020-02-11T23:19:05.943796Z", "url": "https://files.pythonhosted.org/packages/1b/bd/5f06496684b9229c220c66ac3e4e851c3b31b2d5d0b4ff1fb36d12f45308/python-eufy-security-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a8dea73c621d914c9eedf7a369d82364", "sha256": "c2175fb2cdc3c8643599d6567de7ac2e7fb19a5739eb86cf766376734d59ea58" }, "downloads": -1, "filename": "python_eufy_security-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a8dea73c621d914c9eedf7a369d82364", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.1,<4.0.0", "size": 7980, "upload_time": "2020-02-11T23:19:07", "upload_time_iso_8601": "2020-02-11T23:19:07.208818Z", "url": "https://files.pythonhosted.org/packages/95/54/bf36f1f0a18a4f75416832c6d63605335f65602b5ef912385e2e9c527992/python_eufy_security-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e4529f321da9758e28cfb0ad2eb572e3", "sha256": "55074e6ac07be20cb97573d1667fe710ef38343368855d181ad17ec5e084ddbb" }, "downloads": -1, "filename": "python-eufy-security-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e4529f321da9758e28cfb0ad2eb572e3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.1,<4.0.0", "size": 7459, "upload_time": "2020-02-11T23:19:05", "upload_time_iso_8601": "2020-02-11T23:19:05.943796Z", "url": "https://files.pythonhosted.org/packages/1b/bd/5f06496684b9229c220c66ac3e4e851c3b31b2d5d0b4ff1fb36d12f45308/python-eufy-security-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }