From da599535960c0ef5ab1ed7d4dce5401c7cac8d3d Mon Sep 17 00:00:00 2001 From: DDSRem <1448139087@qq.com> Date: Tue, 20 Feb 2024 11:38:20 +0800 Subject: [PATCH] feat: cron integrate xiaoya script --- cron/Dockerfile | 4 +- cron/rootfs/app/sync_emby_config.sh | 87 ------------------- .../etc/s6-overlay/s6-rc.d/init-config/run | 33 +++++-- 3 files changed, 29 insertions(+), 95 deletions(-) delete mode 100644 cron/rootfs/app/sync_emby_config.sh diff --git a/cron/Dockerfile b/cron/Dockerfile index 4e7eea95d..af7bbced4 100644 --- a/cron/Dockerfile +++ b/cron/Dockerfile @@ -4,13 +4,11 @@ ENV TZ=Asia/Shanghai RUN set -ex && \ apk add --no-cache \ - jq \ bash \ curl \ docker \ s6-overlay \ - tzdata \ - sqlite && \ + tzdata && \ rm -rf \ /var/cache/apk/* \ /tmp/* diff --git a/cron/rootfs/app/sync_emby_config.sh b/cron/rootfs/app/sync_emby_config.sh deleted file mode 100644 index d6ca9b903..000000000 --- a/cron/rootfs/app/sync_emby_config.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/bash - -if [ "$1" ]; then - EMBY_NAME=$1 -else - EMBY_NAME=emby -fi - -if [ "$2" ]; then - RESILIO_NAME=$2 -else - RESILIO_NAME=resilio -fi - -EMBY_URL=$(cat /etc/xiaoya/emby_server.txt) - -echo "Emby 和 Resilio关闭中 ...." -docker stop "${EMBY_NAME}" -docker stop "${RESILIO_NAME}" - -echo "检查同步数据库完整性..." -sleep 4 -if sqlite3 /media/config_sync/data/library.db ".tables" | grep Chapters3 > /dev/null ; then - curl -s "${EMBY_URL}/Users?api_key=e825ed6f7f8f44ffa0563cddaddce14d" > /tmp/emby.response - echo -e "\033[32m同步数据库数据完整\033[0m" - sqlite3 /media/config/data/library.db ".dump UserDatas" > /tmp/emby_user.sql - sqlite3 /media/config/data/library.db ".dump ItemExtradata" > /tmp/emby_library_mediaconfig.sql - rm /media/config/data/library.db* - cp /media/config_sync/data/library.db* /media/config/data/ - sqlite3 /media/config/data/library.db "DROP TABLE IF EXISTS UserDatas;" - sqlite3 /media/config/data/library.db ".read /tmp/emby_user.sql" - sqlite3 /media/config/data/library.db "DROP TABLE IF EXISTS ItemExtradata;" - sqlite3 /media/config/data/library.db ".read /tmp/emby_library_mediaconfig.sql" - echo "保存用户信息完成" - cp -rf /media/config_sync/cache/* /media/config/cache/ - cp -rf /media/config_sync/metadata/* /media/config/metadata/ - chmod -R 777 \ - /media/config/data \ - /media/config/cache \ - /media/config/metadata - echo "复制 config_sync 至 config 完成" - echo "Emby 和 Resilio 重启中 ...." - docker start "${EMBY_NAME}" - docker start "${RESILIO_NAME}" -else - echo -e "\033[35m同步数据库不完整,跳过复制...\033[0m" - echo "Emby 和 Resilio 重启中 ...." - docker start "${EMBY_NAME}" - docker start "${RESILIO_NAME}" - exit 0 -fi - -start_time=$(date +%s) -CONTAINER_NAME=${EMBY_NAME} -TARGET_LOG_LINE_SUCCESS="All entry points have started" -while true; do - line=$(docker logs "$CONTAINER_NAME" 2>&1| tail -n 10) - echo "$line" - if [[ "$line" == *"$TARGET_LOG_LINE_SUCCESS"* ]]; then - break - fi - current_time=$(date +%s) - elapsed_time=$((current_time - start_time)) - if [ "$elapsed_time" -gt 300 ]; then - echo "Emby未正常启动超时 5分钟,终止执行更新用户Policy" - exit - fi - sleep 3 -done - -USER_COUNT=$(jq '.[].Name' /tmp/emby.response |wc -l) -for ((i = 0; i < USER_COUNT; i++)) -do - if [[ "$USER_COUNT" -gt 9 ]]; then - exit - fi - read -r id <<< "$(jq -r ".[$i].Id" /tmp/emby.response)" - read -r name <<< "$(jq -r ".[$i].Name" /tmp/emby.response)" - read -r policy <<< "$(jq -r ".[$i].Policy | to_entries | from_entries | tojson" /tmp/emby.response)" - USER_URL_2="${EMBY_URL}/Users/$id/Policy?api_key=e825ed6f7f8f44ffa0563cddaddce14d" - status_code=$(curl -s -w "%{http_code}" -H "Content-Type: application/json" -X POST -d "$policy" "$USER_URL_2") - if [ "$status_code" == "204" ]; then - echo "成功更新 $name 用户Policy" - else - echo "返回错误代码 $status_code" - fi -done diff --git a/cron/rootfs/etc/s6-overlay/s6-rc.d/init-config/run b/cron/rootfs/etc/s6-overlay/s6-rc.d/init-config/run index ee1580b3e..86f0fd5ff 100644 --- a/cron/rootfs/etc/s6-overlay/s6-rc.d/init-config/run +++ b/cron/rootfs/etc/s6-overlay/s6-rc.d/init-config/run @@ -1,17 +1,40 @@ #!/usr/bin/with-contenv bash # shellcheck shell=bash +Green="\033[32m" +Red="\033[31m" +Yellow='\033[33m' +Font="\033[0m" +INFO="[${Green}INFO${Font}]" +ERROR="[${Red}ERROR${Font}]" +WARN="[${Yellow}WARN${Font}]" +function INFO() { + echo -e "${INFO} ${1}" +} +function ERROR() { + echo -e "${ERROR} ${1}" +} +function WARN() { + echo -e "${WARN} ${1}" +} + +if [ ! -d /app ]; then + mkdir /app +fi cd /app || exit crontab -r -echo "${CRON} bash /app/sync_emby_config.sh ${EMBY} ${RESILIO} >> /config/cron.log 2>&1" > /app/cronjob.list -echo "${CRON} bash /app/sync_emby_config.sh ${EMBY} ${RESILIO} >> /config/cron.log 2>&1" -echo "bash /app/sync_emby_config.sh ${EMBY} ${RESILIO}" > /app/command.sh +CRON_COMMAND="bash -c \"\$(curl http://docker.xiaoya.pro/sync_emby_config.sh)\" -s /media /etc/xiaoya ${EMBY} ${RESILIO}" + +echo -e "${CRON} ${CRON_COMMAND} >> /config/cron.log 2>&1" > /app/cronjob.list +echo -e "${CRON_COMMAND}" > /app/command.sh + +INFO "$(cat /app/cronjob.list)" if crontab /app/cronjob.list; then - echo "定时任务添加成功" + INFO "定时任务添加成功" else - echo "定时任务添加失败" + ERROR "定时任务添加失败" exit 1 fi \ No newline at end of file