Skip to content

Instantly share code, notes, and snippets.

@meub
Last active January 17, 2025 21:57
Show Gist options
  • Save meub/767da97925d413f57f55c42ef4325d90 to your computer and use it in GitHub Desktop.
Save meub/767da97925d413f57f55c42ef4325d90 to your computer and use it in GitHub Desktop.
This is a simple script to bulk download all the photos from an Aura digital picture frame (auraframes.com). Aura provides no easy way to bulk download photos off of frames so I created this for use with Python 3.
# I created a repo for this project here: https://github.com/meub/aura-frame-downloader
@kjb
Copy link

kjb commented Dec 31, 2022

Pull request: https://gist.github.com/kjb/9c792f90a923b87978bf4e90cd2f6556/revisions to create the images/ folder if needed.

@meub
Copy link
Author

meub commented Jan 3, 2023

Thanks @kjb, I updated the gist with these changes.

@shermanpark
Copy link

Hello, the script is great, but will only download the first 1000 pics.

@doc10101
Copy link

Can you explain how to run this? When I installed Python 3 and ran the module, I get the error ModuleNotFoundError: No module named 'requests'

Thanks!

@shermanpark
Copy link

Hello,

I had to install the "requests" module after installing Python3 on Windows.

Also, I added the line: elif item["file_name"].endswith(".jpg"):
new_filename = new_filename + ".jpg"
to the script as some files were jpg

@doc10101
Copy link

Thanks! How do you install the requests module?

@shermanpark
Copy link

shermanpark commented Jan 17, 2023 via email

@meub
Copy link
Author

meub commented Jan 18, 2023

New repo for this project here: https://github.com/meub/aura-frame-downloader

@doc10101
Copy link

This is great; downloading now! The key to getting this to work was to use the command:

"python3" rather than "python" in terminal, and drag the python script from the finder window into terminal so the script could execute from the path where I had it on my system.

So my actual command line in terminal (on a Mac) was as follows:

python3 /Users/rich/Downloads/aura-frame-downloader-main/download-aura-photos.py

Thank you for creating this excellent tool!

@bourgLind
Copy link

It's been a while since I have done any kind of programming, and I'm not familiar with Python. I'm getting the following error:

= RESTART: C:\Users\ljlod\AppData\Local\Programs\Python\Python311\Scripts\download-aura-photos.py
Login Success
Traceback (most recent call last):
File "C:\Users\ljlod\AppData\Local\Programs\Python\Python311\Scripts\download-aura-photos.py", line 101, in
total = download_photos_from_aura( email, password, frame_id)
File "C:\Users\ljlod\AppData\Local\Programs\Python\Python311\Scripts\download-aura-photos.py", line 58, in download_photos_from_aura
for item in json_data["assets"]:
KeyError: 'assets'

Any suggestions would be helpful,
Thanks

@meub
Copy link
Author

meub commented Jan 18, 2023

Did you change the limit parameter to a value other than 1000? It needs to be set to 1000 or else the API will return an error

@bourgLind
Copy link

No, the limit is still 1000 as seen below:

frame_url = "https://api.pushd.com/v5/frames/" + frame_id + "/assets.json?limit=1000&side_load_users=false"

@doc10101
Copy link

As noted by another user, while the script worked, it only downloaded 1000 pictures; I have over 2000 on the frame. Is there any way to change the limiter?

@meub
Copy link
Author

meub commented Jan 18, 2023

I don't have a frame with that many photos so I can't really test this. Also, the API fails if I just increase the limit over 1000 so I'll have to investigate this further. Could you open an issue on this repo please and continue the discussion there? https://github.com/meub/aura-frame-downloader

@fredrossperry
Copy link

This is great! Thank you.

@dimitrigarder
Copy link

Nice job. Do you know the API verb to upload images? Is the Aura API documented somewhere?

@wmlandherr
Copy link

Thank you for taking the time to develop this utility. I'm sure there are many like me who are disappointed that Aura does not make downloading of photos easier.

I am able to login to my Aura account successfully (see below) but then encounter a series of errors that I don't understand. Hoping you can provide some insight.

Thanks!!

Login Success
Traceback (most recent call last):
File "C:\Users\bill\Downloads\download-aura-photos.py", line 116, in
total = download_photos_from_aura(email, password, frame_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bill\Downloads\download-aura-photos.py", line 53, in download_photos_from_aura
json_data = json.loads(r.text)
^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\Lib\json_init_.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1264.0_x64__qbz5n2kfra8p0\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

@BoCoKeith
Copy link

Thank you! Thank you! Thank you!

@HPNutty
Copy link

HPNutty commented Dec 25, 2024

Really appreciate this capability you have created. I'm new to Python but programmed in many other languages. I'm having a hard time getting pass the config processing. The frame name is "Gigi's Frame". I keep getting the "Invalid frame name" error message.

I don't know if the issue is with the frame name, frame id or file path. I have changed the frame name in the config file to have no quotes, no spaces, all lowercase, all uppercase and called it appropriately on the command line. I have even hardcoded the frame name section in the script. I verified twice I have the correct frame ID in the ini file. The file path is ./images but I have even hardcoded the file path name in the script with no success.

Here is the section in the .ini file (frame_id modified)

[Gigi's Frame]
frame_id = c4a2f245-da81-4f81-a8b2-xxxxxxxexxxx
file_path = ./images

Any help you could provide would be appreciated!

Edit: I hard-coded everything, bypassed the config process and load 1529 photos. Thanks!

@meub
Copy link
Author

meub commented Jan 17, 2025

@HPNutty Sorry this was such a pain for you. For me on Mac it works with spaces or quotes even as long as I put the frame in quotes in the command. But regardless, the frame name is just an arbirtrary identifier and doesn't need to match anything. You could just call your frame [test] in the config file and then type python3 download-aura-photos.py test and it would also work. Glad you got it working though! I could try to make this more clear in the readme.

@HPNutty
Copy link

HPNutty commented Jan 17, 2025

No worries! You saved us a ton of time as the first frame we gave my parents could not maintain a connection. We ordered a second frame and uploaded all the downloaded images from the first frame. Considering those photos came from six different persons it would have been a miserable and sort of embarrassing act to ask them to upload the photos again. Thank you again for developing this script.

@meub
Copy link
Author

meub commented Jan 17, 2025

Great to hear! Glad it was useful 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment