#!/bin/bash set -e echo "[boot] Configuring Kaggle credentials..." if [ -n "$KAGGLE_USERNAME" ] && [ -n "$KAGGLE_KEY" ]; then mkdir -p ~/.kaggle printf '{"username":"%s","key":"%s"}' "$KAGGLE_USERNAME" "$KAGGLE_KEY" > ~/.kaggle/kaggle.json chmod 600 ~/.kaggle/kaggle.json fi echo "[boot] Configuring YouTube client secrets..." if [ -n "$YOUTUBE_CLIENT_ID" ] && [ -n "$YOUTUBE_CLIENT_SECRET" ]; then python3 -c " import json,os d={'installed':{'client_id':os.environ['YOUTUBE_CLIENT_ID'],'project_id':'yt-ai-bot','auth_uri':'https://accounts.google.com/o/oauth2/auth','token_uri':'https://oauth2.googleapis.com/token','auth_provider_x509_cert_url':'https://www.googleapis.com/oauth2/v1/certs','client_secret':os.environ['YOUTUBE_CLIENT_SECRET'],'redirect_uris':['http://localhost']}} open('/app/client_secrets.json','w').write(json.dumps(d)) print('[boot] client_secrets.json written')" fi echo "[boot] Pulling state + key pool from HF Dataset..." python3 -c " import sys; sys.path.insert(0,'/app') try: from sync_hub import pull_state from pathlib import Path pull_state(Path('/app')) except Exception as e: print(f'[boot] Hub pull skipped: {e}') try: from key_pool import download_pool download_pool() from key_pool import pool print(f'[boot] Key pool loaded: {sum(len(v) for v in pool.values())} keys') except Exception as e: print(f'[boot] Key pool not loaded: {e}') " echo "[boot] Starting nginx..." nginx echo "[boot] Starting status server on port 8080..." python3 /app/status_server.py & echo "[boot] Starting key pool background service..." python3 -c " from key_pool import start start() " & echo "[boot] Starting pipeline..." python3 /app/automation.py >> /app/pipeline.log 2>&1 & echo "[boot] Pipeline PID: $!" sleep infinity