← back to Dear Bubbe Nextjs

scripts/view-social-logs.sh

99 lines

#!/bin/bash

# View social media post logs

LOG_FILE="/root/Projects/dear-bubbe-nextjs/logs/social-posts-detailed.log"

if [ ! -f "$LOG_FILE" ]; then
    echo "❌ No log file found at: $LOG_FILE"
    echo "Run a test post first: node social-autoposter.js --test"
    exit 1
fi

echo "📝 Social Media Post Logs"
echo "========================="
echo ""

# Check for arguments
if [ "$1" == "--tail" ]; then
    # Follow the log in real-time
    echo "Following log file (Ctrl+C to exit)..."
    tail -f "$LOG_FILE" | while read line; do
        echo "$line" | jq '.' 2>/dev/null || echo "$line"
    done
elif [ "$1" == "--last" ]; then
    # Show last N entries (default 10)
    COUNT=${2:-10}
    echo "Last $COUNT log entries:"
    echo ""
    tail -n "$COUNT" "$LOG_FILE" | while read line; do
        echo "$line" | jq '.' 2>/dev/null || echo "$line"
    done
elif [ "$1" == "--success" ]; then
    # Show only successful posts
    echo "Successful posts:"
    echo ""
    grep '"status":"success"' "$LOG_FILE" | while read line; do
        echo "$line" | jq '.' 2>/dev/null || echo "$line"
    done
elif [ "$1" == "--failed" ]; then
    # Show only failed posts
    echo "Failed posts:"
    echo ""
    grep '"status":"failed"' "$LOG_FILE" | while read line; do
        echo "$line" | jq '.' 2>/dev/null || echo "$line"
    done
elif [ "$1" == "--summary" ]; then
    # Show summary statistics
    TOTAL=$(wc -l < "$LOG_FILE")
    SUCCESS=$(grep -c '"status":"success"' "$LOG_FILE" 2>/dev/null || echo "0")
    FAILED=$(grep -c '"status":"failed"' "$LOG_FILE" 2>/dev/null || echo "0")
    TWITTER_SUCCESS=$(grep '"platform":"twitter"' "$LOG_FILE" | grep -c '"status":"success"' 2>/dev/null || echo "0")
    TWITTER_FAILED=$(grep '"platform":"twitter"' "$LOG_FILE" | grep -c '"status":"failed"' 2>/dev/null || echo "0")
    BLUESKY_SUCCESS=$(grep '"platform":"bluesky"' "$LOG_FILE" | grep -c '"status":"success"' 2>/dev/null || echo "0")
    BLUESKY_FAILED=$(grep '"platform":"bluesky"' "$LOG_FILE" | grep -c '"status":"failed"' 2>/dev/null || echo "0")
    
    echo "📊 Summary Statistics"
    echo "-------------------"
    echo "Total log entries: $TOTAL"
    echo ""
    echo "Overall:"
    echo "  ✅ Successful posts: $SUCCESS"
    echo "  ❌ Failed posts: $FAILED"
    echo ""
    echo "Twitter/X:"
    echo "  ✅ Successful: $TWITTER_SUCCESS"
    echo "  ❌ Failed: $TWITTER_FAILED"
    echo ""
    echo "Bluesky:"
    echo "  ✅ Successful: $BLUESKY_SUCCESS"
    echo "  ❌ Failed: $BLUESKY_FAILED"
    echo ""
    echo "Log file: $LOG_FILE"
    echo "File size: $(du -h "$LOG_FILE" | cut -f1)"
elif [ "$1" == "--raw" ]; then
    # Show raw log file
    cat "$LOG_FILE"
else
    # Default: show formatted recent entries
    echo "Recent log entries (use --help for options):"
    echo ""
    tail -n 20 "$LOG_FILE" | while read line; do
        echo "$line" | jq '.' 2>/dev/null || echo "$line"
        echo "---"
    done
    
    if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then
        echo ""
        echo "Usage: ./view-social-logs.sh [option]"
        echo ""
        echo "Options:"
        echo "  --tail        Follow log file in real-time"
        echo "  --last N      Show last N entries (default 10)"
        echo "  --success     Show only successful posts"
        echo "  --failed      Show only failed posts"
        echo "  --summary     Show summary statistics"
        echo "  --raw         Show raw log file (no formatting)"
        echo "  --help        Show this help message"
    fi
fi