![](logo.png)
# arlo ![](https://img.shields.io/badge/python-3+-blue.svg)
> Python module for interacting with Netgear's Arlo camera system.
>### Now supports MFA!
>MFA using this library relies on using the Gmail API to retrieve MFA codes. Please see the [Wiki](https://github.com/jeffreydwalter/arlo/wiki/Configuring-MFA-via-Gmail) for detailed instructions for configuring MFA via Gmail.
>### Now in Golang!
>If you love the Go programming language, check out [arlo-golang](https://github.com/jeffreydwalter/arlo-golang).
>My goal is to bring parity to the Python version asap. If you know what you're doing in Go, I would appreciate any feedback on the >general structure of the library, and contributions, etc.
---
### GETTING STARTED
Check out the [API DOCS](https://github.com/jeffreydwalter/arlo/tree/master/docs)
**IMPORTANT:** There is a regression in `sseclient 0.0.24` that breaks this package. Please ensure you have `seeclient 0.0.22` installed.
**IMPORTANT:** Please ensure you don't have ANY other `sseclient` packages installed in addition to `sseclient 0.0.22`! This may cause this package to fail in unexpected ways. A common one that is known to cause issues is the `sseclient-py 1.7` package. If you have a hard requirement to have more than one, please let me know and we can look into making that work.
**IMPORTANT:** my.arlo.com requires TLS 1.2 for their API. So, if you're getting ssl errors, it's most likely related to your version of openssl. You may need to upgrade your openssl library.
If you're running this library on OSX or macOS, they ship with `openssl v0.9.x` which does not support TLS 1.2. You should follow the instructions found [here](https://comeroutewithme.com/2016/03/13/python-osx-openssl-issue/) to upgrade your openssl library.
---
### Filing an Issue
Please read the [Issue Guidelines and Policies](https://github.com/jeffreydwalter/arlo/wiki/Issue-Guidelines-and-Policies) wiki page **BEFORE** you file an issue. Thanks.
---
## Install
```bash
# Install latest stable package
$ pip install arlo
--or--
# Install from master branch
$ pip install git+https://github.com/jeffreydwalter/arlo
```
---
This just a personal utility that I created out of necessity. It is by no means complete, although it does expose quite a bit of the Arlo interface in an easy to use Python package. As such, this package does not come with unit tests (feel free to add them) or guarantees.
**All [contributions](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are welcome and appreciated!**
--
**If you have a specific Arlo device that you want to improve support for, please consider sending me one! Since this project is solely maintained by yours truely and I don't have unlimited funds to support it, I can only really test and debug the code with the first gen Arlo cameras and basestation that I have. I also highly encourage and appreciate Pull Requests!**
**Please, feel free to [contribute](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) to this repo or buy Jeff a beer!** [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=R77B7UXMLA6ML&lc=US&item_name=Jeff%20Needs%20Beer&item_number=buyjeffabeer¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)
---
### Generous Benefactors (Thank you!)
* [sfederman](https://github.com/sfederman) - 🍺🍺🍺🍺
* [DerekEwing](https://github.com/DerekEwing) - 🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺 - THANK YOU!!! * hickup *
* [apsteinmetz](https://github.com/apsteinmetz) - 🍺
* [mhallikainen](https://github.com/mhallikainen) - 🍺🍺
* [tinsheep](https://github.com/tinsheep) - 🍺🍺
* [cubewot](https://github.com/cubewot) - 🍺🍺
* [imopen](https://github.com/imopen) - 🍺
* [notalifeform](https://github.com/notalifeform) - 🍺🍺
* [anonymous](https://github.com/jeffreydwalter/arlo) - 🍺🍺🍺🍺
* [kewashi](https://github.com/kewashi) - 🍺
---
### Awesomely Smart Contributors (Thank you!)
* [sfederman](https://github.com/sfederman) - Aug 3, 2021 - Helped to debug and fix EventStream in MFA branch.
* [neilferreira](https://github.com/neilferreira) - Jun 4, 2021 - Pointed out missing schemaVersoin header.
* [timgates42](https://github.com/timgates42) - Mar 3, 2021 - Fixed crappy spelling in README.
* [Kerl1310](https://github.com/Kerl1310) - Jan 11, 2020 - Added automated unit tests. THANK YOU!
* [Kerl1310](https://github.com/Kerl1310) - Jan 8, 2020 - Added comments and a method to get account information.
* [fleicher](https://github.com/fleicher) - Mar 29, 2020 - Added a helper method to get devices by name.
* [apsteinmetz](https://github.com/apsteinmetz) - Feb 12, 2020 - Added an example of timestamping Arlo snapshots to the wiki.
* [alvin-chang](https://github.com/alvin-chang) - Dec 15, 2019 - Updated some print statements to work with Python 3 in an example script.
* [pabloNZ](https://github.com/pabloNZ) - Jun 4, 2019 - Added the Arlo doorbell, Ultra camera and basestation schemas to the wiki.
* [m3ntalsp00n](https://github.com/m3ntalsp00n) - May 18, 2019 - Expanded ArloQ device support.
* [burken-](https://github.com/burken-) - Apr 17, 2019 - Fixed arming/disarming ArloQ devices.
* [m0urs](https://github.com/m0urs) - Apr 16, 2019 - Updated fqdn to new Arlo domain.
* [kimc78](https://github.com/kimc78) - Aug 16, 2018 - Added method to get CVR recording list.
* [jurgenweber](https://github.com/jurgenweber) - Apr 25, 2018 - Added Arlo Baby APIs!
* [pliablepixels](https://github.com/pliablepixels) - Apr 3, 2018 - Fixed up issues with the README.
* [manluk](https://github.com/manluk) - Mar 2, 2018 - Squashed a couple of bugs.
* [notalifeform](https://github.com/notalifeform) - Feb 10, 2018 - Fixed bug and formatting in example script.
* [erosen](https://github.com/erosen) - Jan 27, 2018 - Added the ArloQ camera schema to the wiki.
* [deanmcguire](https://github.com/deanmcguire) - Dec 7, 2017 - Unravelled the mysteries of RTSP streaming video.
* [andijakl](https://github.com/andijakl) - Jul 24, 2017 - Added Python 3 support and cleaned up examples.
* [cemeyer2](https://github.com/cemeyer2) - Nov 26, 2016 - Fixed setup issues.
* [LenShustek](https://github.com/LenShustek) - Sep 14, 2016, - Added Logout().
If You'd like to make a difference in the world and get your name on this most prestigious list, have a look at our [help wanted](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) section!
After installing all of the required libraries, you can import and use this library like so:
```python
from arlo import Arlo
from datetime import timedelta, date
import datetime
import sys
USERNAME = 'user@example.com'
PASSWORD = 'supersecretpassword'
try:
# Instantiating the Arlo object automatically calls Login(), which returns an oAuth token that gets cached.
# Subsequent successful calls to login will update the oAuth token.
arlo = Arlo(USERNAME, PASSWORD)
# At this point you're logged into Arlo.
today = (date.today()-timedelta(days=0)).strftime("%Y%m%d")
seven_days_ago = (date.today()-timedelta(days=7)).strftime("%Y%m%d")
# Get all of the recordings for a date range.
library = arlo.GetLibrary(seven_days_ago, today)
# Iterate through the recordings in the library.
for recording in library:
videofilename = datetime.datetime.fromtimestamp(int(recording['name'])//1000).strftime('%Y-%m-%d %H-%M-%S') + ' ' + recording['uniqueId'] + '.mp4'
##
# The videos produced by Arlo are pretty small, even in their longest, best quality settings,
# but you should probably prefer the chunked stream (see below).
###
# # Download the whole video into memory as a single chunk.
# video = arlo.GetRecording(recording['presignedContentUrl'])
# with open('videos/'+videofilename, 'wb') as f:
# f.write(video)
# f.close()
# Or:
#
# Get video as a chunked stream; this function returns a generator.
stream = arlo.StreamRecording(recording['presignedContentUrl'])
with open('videos/'+videofilename, 'wb') as f:
for chunk in stream:
f.write(chunk)
f.close()
print('Downloaded video '+videofilename+' from '+recording['createdDate']+'.')
# Delete all of the videos you just downloaded from the Arlo library.
# Notice that you can pass the "library" object we got back from the GetLibrary() call.
result = arlo.BatchDeleteRecordings(library)
# If we made it here without an exception, then the videos were successfully deleted.
print('Batch deletion of videos completed successfully.')
except Exception as e:
print(e)
```
**For more code examples check out the [wiki](https://github.com/jeffreydwalter/arlo/wiki)**
Raw data
{
"_id": null,
"home_page": "https://github.com/jeffreydwalter/arlo",
"name": "arlo",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "arlo,camera,home automation,netgear,python",
"author": "Jeffrey D. Walter",
"author_email": "jeffreydwalter@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f1/d9/1ec432394722f6cc662ffe99f2efeb5c9606ca64b33968f1fda3e0f99e37/arlo-1.2.64.tar.gz",
"platform": null,
"description": "![](logo.png)\t\n# arlo ![](https://img.shields.io/badge/python-3+-blue.svg)\n> Python module for interacting with Netgear's Arlo camera system.\n>### Now supports MFA!\n>MFA using this library relies on using the Gmail API to retrieve MFA codes. Please see the [Wiki](https://github.com/jeffreydwalter/arlo/wiki/Configuring-MFA-via-Gmail) for detailed instructions for configuring MFA via Gmail.\n>### Now in Golang!\n>If you love the Go programming language, check out [arlo-golang](https://github.com/jeffreydwalter/arlo-golang).\n>My goal is to bring parity to the Python version asap. If you know what you're doing in Go, I would appreciate any feedback on the >general structure of the library, and contributions, etc.\n\n---\n### GETTING STARTED\nCheck out the [API DOCS](https://github.com/jeffreydwalter/arlo/tree/master/docs)\n\n**IMPORTANT:** There is a regression in `sseclient 0.0.24` that breaks this package. Please ensure you have `seeclient 0.0.22` installed.\n\n**IMPORTANT:** Please ensure you don't have ANY other `sseclient` packages installed in addition to `sseclient 0.0.22`! This may cause this package to fail in unexpected ways. A common one that is known to cause issues is the `sseclient-py 1.7` package. If you have a hard requirement to have more than one, please let me know and we can look into making that work.\n\n**IMPORTANT:** my.arlo.com requires TLS 1.2 for their API. So, if you're getting ssl errors, it's most likely related to your version of openssl. You may need to upgrade your openssl library.\nIf you're running this library on OSX or macOS, they ship with `openssl v0.9.x` which does not support TLS 1.2. You should follow the instructions found [here](https://comeroutewithme.com/2016/03/13/python-osx-openssl-issue/) to upgrade your openssl library.\n\n---\n### Filing an Issue\nPlease read the [Issue Guidelines and Policies](https://github.com/jeffreydwalter/arlo/wiki/Issue-Guidelines-and-Policies) wiki page **BEFORE** you file an issue. Thanks.\n\n---\n## Install\n```bash\n# Install latest stable package\n$ pip install arlo\n\n--or--\n\n# Install from master branch\n$ pip install git+https://github.com/jeffreydwalter/arlo\n```\n\n---\nThis just a personal utility that I created out of necessity. It is by no means complete, although it does expose quite a bit of the Arlo interface in an easy to use Python package. As such, this package does not come with unit tests (feel free to add them) or guarantees.\n**All [contributions](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are welcome and appreciated!**\n--\n**If you have a specific Arlo device that you want to improve support for, please consider sending me one! Since this project is solely maintained by yours truely and I don't have unlimited funds to support it, I can only really test and debug the code with the first gen Arlo cameras and basestation that I have. I also highly encourage and appreciate Pull Requests!**\n\n**Please, feel free to [contribute](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) to this repo or buy Jeff a beer!** [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=R77B7UXMLA6ML&lc=US&item_name=Jeff%20Needs%20Beer&item_number=buyjeffabeer¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)\n\n---\n### Generous Benefactors (Thank you!)\n* [sfederman](https://github.com/sfederman) - \ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\n* [DerekEwing](https://github.com/DerekEwing) - \ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a - THANK YOU!!! * hickup *\n* [apsteinmetz](https://github.com/apsteinmetz) - \ud83c\udf7a\n* [mhallikainen](https://github.com/mhallikainen) - \ud83c\udf7a\ud83c\udf7a\n* [tinsheep](https://github.com/tinsheep) - \ud83c\udf7a\ud83c\udf7a\n* [cubewot](https://github.com/cubewot) - \ud83c\udf7a\ud83c\udf7a \n* [imopen](https://github.com/imopen) - \ud83c\udf7a \n* [notalifeform](https://github.com/notalifeform) - \ud83c\udf7a\ud83c\udf7a\n* [anonymous](https://github.com/jeffreydwalter/arlo) - \ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\ud83c\udf7a\n* [kewashi](https://github.com/kewashi) - \ud83c\udf7a\n\n---\n### Awesomely Smart Contributors (Thank you!)\n* [sfederman](https://github.com/sfederman) - Aug 3, 2021 - Helped to debug and fix EventStream in MFA branch.\n* [neilferreira](https://github.com/neilferreira) - Jun 4, 2021 - Pointed out missing schemaVersoin header.\n* [timgates42](https://github.com/timgates42) - Mar 3, 2021 - Fixed crappy spelling in README.\n* [Kerl1310](https://github.com/Kerl1310) - Jan 11, 2020 - Added automated unit tests. THANK YOU!\n* [Kerl1310](https://github.com/Kerl1310) - Jan 8, 2020 - Added comments and a method to get account information.\n* [fleicher](https://github.com/fleicher) - Mar 29, 2020 - Added a helper method to get devices by name.\n* [apsteinmetz](https://github.com/apsteinmetz) - Feb 12, 2020 - Added an example of timestamping Arlo snapshots to the wiki.\n* [alvin-chang](https://github.com/alvin-chang) - Dec 15, 2019 - Updated some print statements to work with Python 3 in an example script.\n* [pabloNZ](https://github.com/pabloNZ) - Jun 4, 2019 - Added the Arlo doorbell, Ultra camera and basestation schemas to the wiki.\n* [m3ntalsp00n](https://github.com/m3ntalsp00n) - May 18, 2019 - Expanded ArloQ device support.\n* [burken-](https://github.com/burken-) - Apr 17, 2019 - Fixed arming/disarming ArloQ devices.\n* [m0urs](https://github.com/m0urs) - Apr 16, 2019 - Updated fqdn to new Arlo domain.\n* [kimc78](https://github.com/kimc78) - Aug 16, 2018 - Added method to get CVR recording list.\n* [jurgenweber](https://github.com/jurgenweber) - Apr 25, 2018 - Added Arlo Baby APIs!\n* [pliablepixels](https://github.com/pliablepixels) - Apr 3, 2018 - Fixed up issues with the README.\n* [manluk](https://github.com/manluk) - Mar 2, 2018 - Squashed a couple of bugs.\n* [notalifeform](https://github.com/notalifeform) - Feb 10, 2018 - Fixed bug and formatting in example script.\n* [erosen](https://github.com/erosen) - Jan 27, 2018 - Added the ArloQ camera schema to the wiki.\n* [deanmcguire](https://github.com/deanmcguire) - Dec 7, 2017 - Unravelled the mysteries of RTSP streaming video.\n* [andijakl](https://github.com/andijakl) - Jul 24, 2017 - Added Python 3 support and cleaned up examples.\n* [cemeyer2](https://github.com/cemeyer2) - Nov 26, 2016 - Fixed setup issues.\n* [LenShustek](https://github.com/LenShustek) - Sep 14, 2016, - Added Logout().\n\nIf You'd like to make a difference in the world and get your name on this most prestigious list, have a look at our [help wanted](https://github.com/jeffreydwalter/arlo/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) section!\n\nAfter installing all of the required libraries, you can import and use this library like so:\n\n```python\nfrom arlo import Arlo\n\nfrom datetime import timedelta, date\nimport datetime\nimport sys\n\nUSERNAME = 'user@example.com'\nPASSWORD = 'supersecretpassword'\n\ntry:\n\t# Instantiating the Arlo object automatically calls Login(), which returns an oAuth token that gets cached.\n\t# Subsequent successful calls to login will update the oAuth token.\n\tarlo = Arlo(USERNAME, PASSWORD)\n\t# At this point you're logged into Arlo.\n\n\ttoday = (date.today()-timedelta(days=0)).strftime(\"%Y%m%d\")\n\tseven_days_ago = (date.today()-timedelta(days=7)).strftime(\"%Y%m%d\")\n\n\t# Get all of the recordings for a date range.\n\tlibrary = arlo.GetLibrary(seven_days_ago, today)\n\n\t# Iterate through the recordings in the library.\n\tfor recording in library:\n\n\t\tvideofilename = datetime.datetime.fromtimestamp(int(recording['name'])//1000).strftime('%Y-%m-%d %H-%M-%S') + ' ' + recording['uniqueId'] + '.mp4'\n\t\t##\n\t\t# The videos produced by Arlo are pretty small, even in their longest, best quality settings,\n\t\t# but you should probably prefer the chunked stream (see below). \n\t\t### \n\t\t# # Download the whole video into memory as a single chunk.\n\t\t# video = arlo.GetRecording(recording['presignedContentUrl'])\n\t\t#\t with open('videos/'+videofilename, 'wb') as f:\n\t\t# f.write(video)\n\t\t# f.close()\n\t\t# Or:\n\t\t#\n\t\t# Get video as a chunked stream; this function returns a generator.\n\t\tstream = arlo.StreamRecording(recording['presignedContentUrl'])\n\t\twith open('videos/'+videofilename, 'wb') as f:\n\t\t\tfor chunk in stream:\n\t\t\t\tf.write(chunk)\n\t\t\tf.close()\n\n\t\tprint('Downloaded video '+videofilename+' from '+recording['createdDate']+'.')\n\n\t# Delete all of the videos you just downloaded from the Arlo library.\n\t# Notice that you can pass the \"library\" object we got back from the GetLibrary() call.\n\tresult = arlo.BatchDeleteRecordings(library)\n\n\t# If we made it here without an exception, then the videos were successfully deleted.\n\tprint('Batch deletion of videos completed successfully.')\n\nexcept Exception as e:\n print(e)\n```\n\n**For more code examples check out the [wiki](https://github.com/jeffreydwalter/arlo/wiki)**\n",
"bugtrack_url": null,
"license": "Apache Software License",
"summary": "Python Arlo is a library written in Python 2.7/3x which exposes the Netgear Arlo cameras via the apis that are consumed by their website.",
"version": "1.2.64",
"split_keywords": [
"arlo",
"camera",
"home automation",
"netgear",
"python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5c26220d4b24b4dabc80839f0521c182c7f6de5d57fac33137e0e3d6eb507c04",
"md5": "bb59c0ef070c0ea15cff579b51e00e19",
"sha256": "c70b5dad2b849270656192e186552c5ab463c0c09373b693a6f47b735420cba3"
},
"downloads": -1,
"filename": "arlo-1.2.64-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb59c0ef070c0ea15cff579b51e00e19",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 29257,
"upload_time": "2023-04-05T15:16:36",
"upload_time_iso_8601": "2023-04-05T15:16:36.169607Z",
"url": "https://files.pythonhosted.org/packages/5c/26/220d4b24b4dabc80839f0521c182c7f6de5d57fac33137e0e3d6eb507c04/arlo-1.2.64-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f1d91ec432394722f6cc662ffe99f2efeb5c9606ca64b33968f1fda3e0f99e37",
"md5": "64dbf20eaa05303705875f6e8139c686",
"sha256": "0ebd7cb3e5dff42563e3f4c04553ec0143c409de41b804a24e48a501944ea3be"
},
"downloads": -1,
"filename": "arlo-1.2.64.tar.gz",
"has_sig": false,
"md5_digest": "64dbf20eaa05303705875f6e8139c686",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 28624,
"upload_time": "2023-04-05T15:16:39",
"upload_time_iso_8601": "2023-04-05T15:16:39.127319Z",
"url": "https://files.pythonhosted.org/packages/f1/d9/1ec432394722f6cc662ffe99f2efeb5c9606ca64b33968f1fda3e0f99e37/arlo-1.2.64.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-05 15:16:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "jeffreydwalter",
"github_project": "arlo",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "arlo"
}