Files
post2bsky/sync_runner.sh
2026-03-29 17:44:14 +02:00

77 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Exit immediately if a command fails (except when we explicitly allow it later)
set -e
echo "🚀 Starting Twitter to Bluesky Sync Job..."
# 1. Navigate to the directory containing the script
# (Uncomment and change the path below if running via cron so it knows where to look)
# cd /path/to/your/meteocatrss2bsky || exit
# 2. Load environment variables (Mimicking GitHub Secrets)
if [ -f ".env" ]; then
echo "📂 Loading secrets from .env file..."
export $(grep -v '^#' .env | xargs)
else
echo "⚠️ No .env file found. Make sure environment variables are exported manually!"
fi
# 3. Set up Python Virtual Environment (Mimicking actions/setup-python)
if [ ! -d "venv" ]; then
echo "🐍 Creating Python virtual environment..."
python3 -m venv venv
fi
echo "🔄 Activating virtual environment..."
source venv/bin/activate
# 4. Install dependencies
echo "📦 Installing dependencies..."
pip install --upgrade pip -q
pip install atproto tweety-ns playwright httpx arrow python-dotenv -q
# Install the browser
playwright install chromium
# Install the required Linux system libraries
playwright install-deps chromium
# 5. Run the script
echo "▶️ Running the sync script..."
# Temporarily disable "exit on error" so we can catch a script crash and save the screenshot
set +e
python3 twitter2bsky_daemon.py \
--twitter-username "$TWITTER_USERNAME" \
--twitter-password "$TWITTER_PASSWORD" \
--twitter-email "$TWITTER_EMAIL" \
--twitter-handle "$TWITTER_HANDLE" \
--bsky-handle "$BSKY_HANDLE" \
--bsky-password "$BSKY_APP_PASSWORD"
EXIT_CODE=$?
# Re-enable "exit on error"
set -e
# 6. Handle Errors and Screenshots (Mimicking actions/upload-artifact)
if [ $EXIT_CODE -ne 0 ]; then
echo "❌ Script failed with exit code $EXIT_CODE."
# Check if any screenshots were generated by Playwright
if ls screenshot_*.png 1> /dev/null 2>&1; then
echo "📸 Error screenshots found. Moving them to 'error_artifacts' folder..."
mkdir -p error_artifacts
mv screenshot_*.png error_artifacts/
echo "✅ Screenshots saved in ./error_artifacts/"
else
echo "⚠️ No screenshots found."
fi
exit $EXIT_CODE
fi
echo "✅ Sync job completed successfully!"