Added Docker awareness
Added more clear user hints for how to run the container for creating/deleting albums depending on whether the script is running bare python or in Docker
This commit is contained in:
parent
1f0332f121
commit
6638166e05
2 changed files with 24 additions and 5 deletions
|
@ -6,6 +6,6 @@ COPY immich_auto_album.py requirements.txt docker/immich_auto_album.sh docker/se
|
|||
RUN pip install --no-cache-dir -r /script/requirements.txt \
|
||||
&& chmod +x /script/setup_cron.sh /script/immich_auto_album.sh \
|
||||
&& rm -rf /tmp/* /var/tmp/* /var/cache/apk/* /var/cache/distfiles/*
|
||||
|
||||
ENV IS_DOCKER=1
|
||||
WORKDIR /script
|
||||
CMD ["sh", "-c", "/script/setup_cron.sh && crond -f"]
|
|
@ -3,6 +3,7 @@ import requests
|
|||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
from collections import defaultdict
|
||||
import urllib3
|
||||
|
@ -23,6 +24,8 @@ SCRIPT_MODE_CREATE = "CREATE"
|
|||
SCRIPT_MODE_CLEANUP = "CLEANUP"
|
||||
# Delete ALL albums
|
||||
SCRIPT_MODE_DELETE_ALL = "DELETE_ALL"
|
||||
# Environment variable to check if the script is running inside Docker
|
||||
ENV_IS_DOCKER = "IS_DOCKER"
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="Create Immich Albums from an external library path based on the top level folders", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
|
@ -45,6 +48,7 @@ args = vars(parser.parse_args())
|
|||
logging.basicConfig(level=args["log_level"], stream=sys.stdout, format='time=%(asctime)s level=%(levelname)s msg=%(message)s')
|
||||
logging.Formatter.formatTime = (lambda self, record, datefmt=None: datetime.datetime.fromtimestamp(record.created, datetime.timezone.utc).astimezone().isoformat(sep="T",timespec="milliseconds"))
|
||||
|
||||
|
||||
root_paths = args["root_path"]
|
||||
root_url = args["api_url"]
|
||||
api_key = args["api_key"]
|
||||
|
@ -64,6 +68,8 @@ delete_confirm = args["delete_confirm"]
|
|||
if mode != SCRIPT_MODE_CREATE:
|
||||
unattended = False
|
||||
|
||||
is_docker = os.environ.get(ENV_IS_DOCKER, False)
|
||||
|
||||
logging.debug("root_path = %s", root_paths)
|
||||
logging.debug("root_url = %s", root_url)
|
||||
logging.debug("api_key = %s", api_key)
|
||||
|
@ -77,6 +83,7 @@ logging.debug("insecure = %s", insecure)
|
|||
logging.debug("ignore = %s", ignore_albums)
|
||||
logging.debug("mode = %s", mode)
|
||||
logging.debug("delete_confirm = %s", delete_confirm)
|
||||
logging.debug("is_docker = %s", is_docker)
|
||||
|
||||
# Verify album levels
|
||||
if is_integer(album_levels) and album_levels == 0:
|
||||
|
@ -357,8 +364,12 @@ if mode == SCRIPT_MODE_DELETE_ALL:
|
|||
album_names = []
|
||||
for album in albums:
|
||||
album_names.append(album['albumName'])
|
||||
print("Would delete the following albums (ALL albums!). Call with --delete-confirm to actually delete albums!")
|
||||
print("Would delete the following albums (ALL albums!):")
|
||||
print(album_names)
|
||||
if is_docker:
|
||||
print("Run the container with environment variable DELETE_CONFIRM set to 1 to actually delete these albums!")
|
||||
else:
|
||||
print("Call with --delete-confirm to actually delete albums!")
|
||||
exit(0)
|
||||
cpt = 0
|
||||
for album in albums:
|
||||
|
@ -412,8 +423,12 @@ logging.info("%d albums identified", len(album_to_assets))
|
|||
logging.info("Album list: %s", list(album_to_assets.keys()))
|
||||
|
||||
if not unattended and mode == SCRIPT_MODE_CREATE:
|
||||
print("Press enter to create these albums, Ctrl+C to abort")
|
||||
input()
|
||||
if is_docker:
|
||||
print("Check that this is the list of albums you want to create. Run the container with environment variable UNATTENDED set to 1 to actually create these albums.")
|
||||
exit(0)
|
||||
else:
|
||||
print("Press enter to create these albums, Ctrl+C to abort")
|
||||
input()
|
||||
|
||||
album_to_id = {}
|
||||
|
||||
|
@ -427,8 +442,12 @@ logging.info("%d existing albums identified", len(albums))
|
|||
if mode == SCRIPT_MODE_CLEANUP:
|
||||
# Delete Confirm check
|
||||
if not delete_confirm:
|
||||
print("Would delete the following albums. Call with --delete-confirm to actually delete albums!")
|
||||
print("Would delete the following albums:")
|
||||
print(list(album_to_id.keys()))
|
||||
if is_docker:
|
||||
print("Run the container with environment variable DELETE_CONFIRM set to 1 to actually delete these albums!")
|
||||
else:
|
||||
print(" Call with --delete-confirm to actually delete albums!")
|
||||
exit(0)
|
||||
|
||||
cpt = 0
|
||||
|
|
Loading…
Reference in a new issue