Added force_download.py to examples
This commit is contained in:
42
examples/force_download.py
Normal file
42
examples/force_download.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
""" use osxphotos to force the download of photos from iCloud
|
||||||
|
downloads images to a temporary directory then deletes them
|
||||||
|
resulting in the photo being downloaded to Photos library
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
import osxphotos
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
photosdb = osxphotos.PhotosDB()
|
||||||
|
tempdir = tempfile.TemporaryDirectory()
|
||||||
|
photos = photosdb.photos()
|
||||||
|
downloaded = 0
|
||||||
|
missing = [photo for photo in photos if photo.ismissing and not photo.shared]
|
||||||
|
|
||||||
|
if not missing:
|
||||||
|
print(f"Did not find any missing photos to download")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
print(f"Downloading {len(missing)} photos")
|
||||||
|
for photo in missing:
|
||||||
|
if photo.ismissing:
|
||||||
|
print(f"Downloading photo {photo.original_filename}")
|
||||||
|
downloaded += 1
|
||||||
|
exported = photo.export(tempdir.name, use_photos_export=True, timeout=300)
|
||||||
|
if photo.hasadjustments:
|
||||||
|
exported.extend(
|
||||||
|
photo.export(tempdir.name, use_photos_export=True, edited=True, timeout=300)
|
||||||
|
)
|
||||||
|
for filename in exported:
|
||||||
|
print(f"Removing temporary file {filename}")
|
||||||
|
os.unlink(filename)
|
||||||
|
print(f"Downloaded {downloaded} photos")
|
||||||
|
tempdir.cleanup()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user