parent
3351bdc3a5
commit
f457d67f1d
1 changed files with 89 additions and 0 deletions
@ -0,0 +1,89 @@ |
||||
#!/bin/bash |
||||
|
||||
# Directory to monitor |
||||
BASE_DIR="/home/shane/foodie_automator" |
||||
CHECKSUM_FILE="$BASE_DIR/.file_checksum" |
||||
LOG_FILE="$BASE_DIR/manage_scripts.log" |
||||
|
||||
# Log function |
||||
log() { |
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" |
||||
} |
||||
|
||||
# Calculate checksum of files (excluding logs, JSON files, and venv) |
||||
calculate_checksum() { |
||||
find "$BASE_DIR" -type f \ |
||||
-not -path "$BASE_DIR/*.log" \ |
||||
-not -path "$BASE_DIR/*.json" \ |
||||
-not -path "$BASE_DIR/.file_checksum" \ |
||||
-not -path "$BASE_DIR/venv/*" \ |
||||
-exec sha256sum {} \; | sort | sha256sum | awk '{print $1}' |
||||
} |
||||
|
||||
# Check if scripts are running |
||||
check_running() { |
||||
pgrep -f "python3.*foodie_automator" > /dev/null |
||||
} |
||||
|
||||
# Stop scripts |
||||
stop_scripts() { |
||||
log "Stopping scripts..." |
||||
pkill -TERM -f "python3.*foodie_automator" || true |
||||
sleep 10 |
||||
pkill -9 -f "python3.*foodie_automator" || true |
||||
log "Scripts stopped." |
||||
} |
||||
|
||||
# Start scripts |
||||
start_scripts() { |
||||
log "Starting scripts..." |
||||
cd "$BASE_DIR" |
||||
source venv/bin/activate |
||||
python3 foodie_automator_reddit.py & python3 foodie_automator_rss.py & python3 foodie_automator_google.py & |
||||
log "Scripts started." |
||||
} |
||||
|
||||
# Update dependencies |
||||
update_dependencies() { |
||||
log "Updating dependencies..." |
||||
cd "$BASE_DIR" |
||||
# Create venv if it doesn't exist |
||||
if [ ! -d "venv" ]; then |
||||
python3 -m venv venv |
||||
fi |
||||
source venv/bin/activate |
||||
pip install --upgrade pip |
||||
pip install -r requirements.txt || (pip install requests openai beautifulsoup4 feedparser praw duckduckgo_search selenium Pillow pytesseract webdriver-manager && log "Fallback: Installed core dependencies") |
||||
log "Dependencies updated." |
||||
} |
||||
|
||||
# Main logic |
||||
log "Checking for file changes..." |
||||
CURRENT_CHECKSUM=$(calculate_checksum) |
||||
|
||||
if [ -f "$CHECKSUM_FILE" ]; then |
||||
PREVIOUS_CHECKSUM=$(cat "$CHECKSUM_FILE") |
||||
else |
||||
PREVIOUS_CHECKSUM="" |
||||
fi |
||||
|
||||
if [ "$CURRENT_CHECKSUM" != "$PREVIOUS_CHECKSUM" ]; then |
||||
log "File changes detected. Previous checksum: $PREVIOUS_CHECKSUM, Current checksum: $CURRENT_CHECKSUM" |
||||
|
||||
# Stop scripts if running |
||||
if check_running; then |
||||
stop_scripts |
||||
fi |
||||
|
||||
# Update dependencies |
||||
update_dependencies |
||||
|
||||
# Start scripts |
||||
start_scripts |
||||
|
||||
# Update checksum |
||||
echo "$CURRENT_CHECKSUM" > "$CHECKSUM_FILE" |
||||
log "Checksum updated." |
||||
else |
||||
log "No file changes detected." |
||||
fi |
||||
Loading…
Reference in new issue