BestCDN/enhance_results.sh
2025-07-27 15:41:51 +08:00

76 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Enhanced Results Script - Automatic Geolocation Enhancement (Offline)
# Automatically finds the latest accessible IPs file and adds geolocation data using QQWry database
set -e
echo "🌍 BestCDN Results Enhancement Script (Offline QQWry)"
echo "===================================================="
# Find the latest cpp_accessible file
LATEST_FILE=$(find results/ -name "cpp_accessible_*.txt" -type f -printf '%T@ %p\n' 2>/dev/null | sort -n | tail -1 | cut -d' ' -f2-)
if [ -z "$LATEST_FILE" ]; then
echo "❌ No accessible results files found in results/ directory"
echo " Please run the C++ tester first: ./run_cpp.sh"
exit 1
fi
echo "📁 Found latest results file: $LATEST_FILE"
# Check if Python is available
if ! command -v python3 &> /dev/null; then
echo "❌ Python3 is required but not installed"
exit 1
fi
# Check if offline geolocation script exists
if [ ! -f "add_geolocation_offline.py" ]; then
echo "❌ Offline geolocation script not found: add_geolocation_offline.py"
exit 1
fi
# Check if QQWry database exists, if not it will be downloaded automatically
if [ ! -f "qqwry.dat" ]; then
echo "📥 QQWry database not found, will be downloaded automatically..."
fi
# Generate output filename
BASENAME=$(basename "$LATEST_FILE" .txt)
OUTPUT_FILE="results/${BASENAME}_geo.txt"
echo "🔍 Adding geolocation data using offline QQWry database..."
echo " Input: $LATEST_FILE"
echo " Output: $OUTPUT_FILE"
# Run the offline geolocation enhancement
python3 add_geolocation_offline.py "$LATEST_FILE" "$OUTPUT_FILE"
if [ $? -eq 0 ]; then
echo ""
echo "✅ Enhancement completed successfully!"
echo "📊 Enhanced results saved to: $OUTPUT_FILE"
echo ""
echo "📈 Quick stats:"
TOTAL_IPS=$(grep -v '^#' "$OUTPUT_FILE" | grep -v '^$' | wc -l)
echo " Total enhanced IPs: $TOTAL_IPS"
# Show sample results
echo ""
echo "🔍 Sample enhanced results:"
echo " $(head -n 20 "$OUTPUT_FILE" | grep -v '^#' | head -n 5)"
if [ $TOTAL_IPS -gt 5 ]; then
echo " ... and $(($TOTAL_IPS - 5)) more"
fi
echo ""
echo "💡 Offline database advantages:"
echo " ✓ No network requests required"
echo " ✓ Ultra-fast lookups (1000+ IPs/second)"
echo " ✓ No API rate limits"
echo " ✓ Works in restricted network environments"
else
echo "❌ Enhancement failed"
exit 1
fi