Spaces:
Running
Running
# 设置默认值 | |
MUSIC_DIR=${MUSIC_DIR:-/music} | |
DATASET_MUSIC_NAME=${DATASET_MUSIC_NAME:-"your-username/music-dataset"} | |
MUSIC_TOKEN=${MUSIC_TOKEN:-""} | |
BACKUP_DATASET_ID=${BACKUP_DATASET_ID:-"your-username/navidrome-backup"} | |
BACKUP_INTERVAL=${BACKUP_INTERVAL:-3600} # 默认1小时备份一次 | |
MUSIC_UPDATE_INTERVAL=${MUSIC_UPDATE_INTERVAL:-3600} # 默认1小时更新一次音乐 | |
echo "[INFO] Starting Navidrome setup" | |
# 确保目录存在并有正确权限 | |
mkdir -p ${MUSIC_DIR} | |
mkdir -p /data/cache | |
mkdir -p /.cache | |
chmod -R 755 ${MUSIC_DIR} | |
chmod -R 755 /data | |
chmod -R 755 /.cache | |
# 激活Python虚拟环境 | |
source /venv/bin/activate | |
# 恢复备份(如果存在) | |
if [ -n "$BACKUP_DATASET_ID" ] && [ -n "$MUSIC_TOKEN" ]; then | |
echo "[INFO] Attempting to restore from backup..." | |
python /backup.py download "$MUSIC_TOKEN" "$BACKUP_DATASET_ID" "/data" | |
fi | |
# 启动音乐更新进程 | |
if [ -n "$DATASET_MUSIC_NAME" ] && [ -n "$MUSIC_TOKEN" ]; then | |
echo "[INFO] Starting music update process..." | |
python /update_music.py "$DATASET_MUSIC_NAME" "$MUSIC_TOKEN" "$MUSIC_DIR" "$MUSIC_UPDATE_INTERVAL" "false" & | |
MUSIC_UPDATE_PID=$! | |
echo "[INFO] Music update process started with PID: $MUSIC_UPDATE_PID" | |
else | |
echo "[WARNING] Music update disabled. Set DATASET_MUSIC_NAME and MUSIC_TOKEN to enable." | |
fi | |
# 检查音乐目录 | |
echo "[INFO] Checking music directory..." | |
ls -la ${MUSIC_DIR} | |
# 备份函数 | |
backup_data() { | |
while true; do | |
echo "[INFO] Starting backup process $(date)" | |
if [ -d "/data" ]; then | |
echo "[INFO] Backing up Navidrome data to HuggingFace..." | |
python /backup.py upload "$MUSIC_TOKEN" "$BACKUP_DATASET_ID" "/data" | |
else | |
echo "[WARNING] Data directory does not exist, skipping backup..." | |
fi | |
echo "[INFO] Next backup in ${BACKUP_INTERVAL} seconds..." | |
sleep $BACKUP_INTERVAL | |
done | |
} | |
# 如果设置了备份数据集ID,则启动备份进程 | |
if [ -n "$BACKUP_DATASET_ID" ] && [ -n "$MUSIC_TOKEN" ]; then | |
echo "[INFO] Starting backup process with dataset: ${BACKUP_DATASET_ID}" | |
backup_data & | |
BACKUP_PID=$! | |
echo "[INFO] Backup process started with PID: $BACKUP_PID" | |
else | |
echo "[WARNING] Backup disabled. Set BACKUP_DATASET_ID and MUSIC_TOKEN to enable." | |
fi | |
# 找到navidrome可执行文件的路径 | |
NAVIDROME_PATH=$(which navidrome || find /app -name navidrome -type f 2>/dev/null | head -1) | |
if [ -z "$NAVIDROME_PATH" ]; then | |
echo "[ERROR] Could not find navidrome executable" | |
exit 1 | |
else | |
echo "[INFO] Found navidrome at: $NAVIDROME_PATH" | |
# 启动Navidrome | |
echo "[INFO] Starting Navidrome..." | |
exec $NAVIDROME_PATH | |
fi |