86 lines
1.5 KiB
Bash
Executable file
86 lines
1.5 KiB
Bash
Executable file
#!/bin/sh
|
|
# Sync icloud photos to machine using a
|
|
# simple wrapper for tmux and icloudpd
|
|
|
|
# Check if icloudpd is available
|
|
if ! type icloudpd >/dev/null; then
|
|
echo "please install icloud photo downloader."
|
|
echo "See: https://github.com/icloud-photos-downloader/icloud_photos_downloader"
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure environment variables are set
|
|
if [[ -z "$ICLOUD_DIR" ]]; then
|
|
echo 'please set $ICLOUD_DIR'
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "$ICLOUD_USERNAME" ]]; then
|
|
echo 'please set $ICLOUD_USERNAME'
|
|
exit 1
|
|
fi
|
|
|
|
# tmux session name
|
|
session="icloudsync"
|
|
|
|
attach () {
|
|
tmux attach-session -t $session
|
|
}
|
|
|
|
check_session () {
|
|
tmux has-session -t $session 2>/dev/null
|
|
if [ $? == 0 ]; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
start_sync () {
|
|
if check_session 0; then
|
|
tmux new-session -d -s $session
|
|
tmux send-keys -t $session 'icloudpd --directory=$ICLOUD_DIR --username $ICLOUD_USERNAME --watch-with-interval 3600' C-m
|
|
echo started
|
|
else
|
|
echo already active
|
|
fi
|
|
}
|
|
|
|
stop_sync () {
|
|
if check_session 0; then
|
|
echo inactive
|
|
else
|
|
tmux send-keys -t $session C-c exit C-m
|
|
echo stopped
|
|
fi
|
|
}
|
|
|
|
status () {
|
|
if check_session 0; then
|
|
echo inactive
|
|
else
|
|
tmux capture-pane -t icloudsync -p -S -1 | tail -1
|
|
fi
|
|
}
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
echo "Available commands are: start, stop, attach, status"
|
|
fi
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
start)
|
|
start_sync
|
|
;;
|
|
stop)
|
|
stop_sync
|
|
;;
|
|
attach)
|
|
attach
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
esac
|
|
exit
|
|
done
|