90 lines
4.5 KiB
Markdown
90 lines
4.5 KiB
Markdown
---
|
|
type: "note"
|
|
created: "2024-06-18T14:10:21.565Z"
|
|
updated: "2024-06-19T06:27:30.466Z"
|
|
---
|
|
|
|
# Amazon Photos Python
|
|
|
|
- [pypi](https://pypi.org/project/amazon-photos/)
|
|
- [github](https://github.com/trevorhobenshield/amazon_photos)
|
|
|
|
```python
|
|
from amazon_photos import AmazonPhotos
|
|
|
|
ap = AmazonPhotos(
|
|
# see cookie examples above
|
|
cookies={
|
|
'at_main': 'Atza|IwEBIKaTt-nbq8GY6MaHFmoPREguVxq0XCPFIPhqdaXNnWl8ZNSkq7xRHRN7RDKyyWcpRrAj1hu2TyB1dRPAi9VeUO_EihstUpc3ZK5ui1UjpOFo0x50sBeo-hCLZrAWd-UNjSbCBJn4mrZajaaC0S9EnM54W1Pyxg2hITlqqXRDAHrNVCQOQ-Nk5_LiE6jvppTV3uLpe4gahDCsTz1UqFBt42iLe9atrWMAPeJ5JnZm6OsfPL0cLMtTiknkwnkV5l_sk61rbWwITXtALSlJaxfW8k5dwzXD2y7p1OOtMw02bdXX2A',
|
|
'csd-key': 'eyJ3YXNtVGVzdGVkIjp0cnVlLCJ3YXNtQ29tcGF0aWJsZSI6dHJ1ZSwid2ViQ3J5cHRvVGVzdGVkIjpmYWxzZSwidiI6MSwia2lkIjoiMzNlNTBlIiwia2V5IjoiTjhqTWFzcGxmYTVINEZjbTQ4QldVa01JNmExaHVGRytrQTlYQ3NBMlR6RU9YcVBpeFh0SnVmYnk1a3pJQmxHSUxkQ0lLaGRNdThiMW5WR0lvVyt3VkxNMENJUXduY1FxSDR4RldPb0lPZXZ6ejIvV0J6dkRLcnRIelAwSGhmVHdHOHpBUU95ZzZXU1VuZldrRVd2UjNrV1hVTVZRNGNGMkV3aWE2emhFMVR5SGUrWUpsWUNHUWc4WEttbURxdFdzTEUxZHNaZ1JIVGxSMGRXbldLT2NRZ0NtQUdOeEpJMDRGQkNuY1VUWnVNaVF3VHV5NHBTK2p4U2t4TGwxckxocjRhcWwrZ2ZONVRMQVJ3Z3BwWWRGMzA3OWQySGZZYno4TFFlZmpWRG42QXdoY3l2aU5DNExDVXZnY1lKbFY5bDUzTU5zZytzZ0dFMkJ0cHVtWXVnK0VnPT0ifQ==',
|
|
'csm-hit': 'tb:FWHMXQB2N9YR3XD0WD50+ba-4W9NK8V7MQQX19ZBNQMR-EN10GR0C8995B3TXDBW2|1718721855872&t:1718721855872&adb:adblk_no',
|
|
'cwr_s': 'eyJzZXNzaW9uSWQiOiIxOTJhMDBiZC1kMGEyLTRiMjQtOGMwOS03OWUwNWJmMjY4OGUiLCJyZWNvcmQiOnRydWUsImV2ZW50Q291bnQiOjEwMzQsInBhZ2UiOnsicGFnZUlkIjoiL3Bob3Rvcy8iLCJwYXJlbnRQYWdlSWQiOiIvcGhvdG9zL3NldHRpbmdzIiwiaW50ZXJhY3Rpb24iOjM2LCJyZWZlcnJlciI6IiIsInJlZmVycmVyRG9tYWluIjoiIiwic3RhcnQiOjE3MTg3MjE1MjkxMTZ9fQ==',
|
|
'cwr_u': '82367c0a-fd6e-41e0-9a57-24eb6a3b4a61',
|
|
'i18n-prefs': 'USD',
|
|
'JSESSIONID': 'F12B4E4CDFDC2A8F075BD6826B61564A',
|
|
'lc-main': 'lc-main',
|
|
'sess-at-main': 'QjgIr25GpBkN+U7VP7NiwCpyzU1DaRDRtrZBy6lU9MI=',
|
|
'session-id-time': 'session-id-time',
|
|
'session-id': '130-2086422-3631604',
|
|
'session-token': 'g8YwxNbYOociOxFEOkrsTN/lV2WSoAw6MAPSuswF9NnPd30r4wpLKxOQNMPW8j5sAY0NdD11g7tBXTDQS0rlTe8hIlhOnSgbfPUTtrjKO23zz/vOIKoUL6b6359LwO1ltd0juvuKc5aFPJaxeKUzcFcC5Jxm2kSXyCz7eRJeBluyc061RdSchHWL/5SqB0pC9oDih2uF5HDl6pKecF8YiX2CWytqRxlBVn2Q141fezdJ9kUcHsfL7mZZKfrrmvI2qZFfZa2379HB/mpEI1Cw72WM5RX1SsleBN3JRBaEhBzqAPYb1DVE7+GWiU5BFeA9IgyWNgqHm2MiQr7kBY4pEOivhwnaOzL+VJld3ODy57vKS1wPoDznkD5Ok5HEw0eO',
|
|
'sid': 'wZ4+IDpaIn7d2kRmXGxFSg==|r+MfueUTDWes8fZ9LFfeNgIkqxJsXUO3CLKPszvIHaw=',
|
|
'sst-main': '1J2N3VvLsFDH97SkezFcBG@3AoVgPcoV',
|
|
'sst-main': 'Sst1|PQFFb7JpsYltezg6eBdc_j8HCULqNcosQnd-NG41uUhWywHtQufMARZRg4_phg_UoCqM4_d7QbTbFguppSgCejnToCz80Qy7m-TAqMwJj054wkn9uAg-Pr2nF8rMY9gXh-BVvR1RnF4xZwIP9HihcwQbe21QqMDorsbx-GAMoQzzDskFH4bNcBBNBJnbSq7KoRBEtJiLoNh6-MmPl6L2F8nk38putRVLwReRmMPchaeVfeluTFd2jNu6SYjhUMaSfc3f8ZvGOMaiCsPh1AHRsvXTGpzWxO57usZJP0_4LbCY82A',
|
|
'ubid_main': '134-9800184-2401841',
|
|
},
|
|
# optionally cache all intermediate JSON responses
|
|
tmp='tmp',
|
|
# pandas options
|
|
dtype_backend='pyarrow',
|
|
engine='pyarrow',
|
|
# cdproxy_override='https://content-na.drive.amazonaws.com/cdproxy/nodes'
|
|
)
|
|
|
|
# get current usage stats
|
|
ap.usage()
|
|
|
|
# get entire Amazon Photos library
|
|
nodes = ap.query("type:(PHOTOS OR VIDEOS)")
|
|
|
|
# query Amazon Photos library with more filters applied
|
|
nodes = ap.query("type:(PHOTOS OR VIDEOS) AND things:(plant AND beach OR moon) AND timeYear:(2023) AND timeMonth:(8) AND timeDay:(14) AND location:(CAN#BC#Vancouver)")
|
|
|
|
# sample first 10 nodes
|
|
node_ids = nodes.id[:10]
|
|
|
|
# move a batch of images/videos to the trash bin
|
|
ap.trash(node_ids)
|
|
|
|
# get trash bin contents
|
|
ap.trashed()
|
|
|
|
# permanently delete a batch of images/videos
|
|
ap.delete(node_ids)
|
|
|
|
# restore a batch of images/videos from the trash bin
|
|
ap.restore(node_ids)
|
|
|
|
# upload media (preserves local directory structure and copies to Amazon Photos root directory)
|
|
ap.upload('path/to/files')
|
|
|
|
# download a batch of images/videos
|
|
ap.download(node_ids)
|
|
|
|
# convenience method to get photos only
|
|
ap.photos()
|
|
|
|
# convenience method to get videos only
|
|
ap.videos()
|
|
|
|
# get all identifiers calculated by Amazon.
|
|
ap.aggregations(category="all")
|
|
|
|
# get specific identifiers calculated by Amazon.
|
|
ap.aggregations(category="location")
|
|
```
|
|
|
|
```todo
|
|
https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts
|
|
https://www.digitalocean.com/community/tutorials/how-to-host-multiple-web-sites-with-nginx-and-haproxy-using-lxd-on-ubuntu-16-04
|
|
```
|