mirror of
https://github.com/permissionlesstech/georelays.git
synced 2026-07-25 15:05:19 +00:00
remove duplicate existing relays check
This commit is contained in:
@@ -106,7 +106,7 @@ class NostrRelayDiscovery:
|
|||||||
|
|
||||||
def normalize_relay_url(self, url: str) -> str:
|
def normalize_relay_url(self, url: str) -> str:
|
||||||
"""Normalize relay URL (remove trailing slashes, etc.)"""
|
"""Normalize relay URL (remove trailing slashes, etc.)"""
|
||||||
url = url.strip()
|
url = url.strip().lower()
|
||||||
match = re.match(r'^(wss://[^/]+)/?$', url)
|
match = re.match(r'^(wss://[^/]+)/?$', url)
|
||||||
|
|
||||||
if match:
|
if match:
|
||||||
@@ -307,35 +307,14 @@ class NostrRelayDiscovery:
|
|||||||
logger.info(f"Found {len(existing_relays)} existing functioning relays to verify")
|
logger.info(f"Found {len(existing_relays)} existing functioning relays to verify")
|
||||||
|
|
||||||
if not existing_relays:
|
if not existing_relays:
|
||||||
logger.info("No existing functioning relays found, starting fresh")
|
logger.info("No existing relays found, starting fresh")
|
||||||
self.to_visit.append((self.initial_relay, 0))
|
self.to_visit.append((self.initial_relay, 0))
|
||||||
self.to_visit_set.add(self.initial_relay)
|
self.to_visit_set.add(self.initial_relay)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Verify existing relays still work
|
|
||||||
verified_relays = await self.verify_existing_relays(existing_relays)
|
|
||||||
|
|
||||||
if verified_relays:
|
|
||||||
logger.info(f"Successfully verified {len(verified_relays)} existing relays")
|
|
||||||
# Use verified relays as starting points for discovery
|
|
||||||
for relay in verified_relays:
|
|
||||||
self.to_visit.append((relay, 0))
|
|
||||||
self.to_visit_set.add(relay)
|
|
||||||
self.functioning_relays.add(relay)
|
|
||||||
self.stats.functioning_relays += 1
|
|
||||||
|
|
||||||
# Also preserve other statistics if available
|
|
||||||
if 'statistics' in data:
|
|
||||||
old_stats = data['statistics']
|
|
||||||
self.stats.total_relays_found = old_stats.get('total_relays_found', len(verified_relays))
|
|
||||||
self.stats.events_processed = old_stats.get('events_processed', 0)
|
|
||||||
|
|
||||||
return True
|
|
||||||
else:
|
else:
|
||||||
logger.warning("No existing relays could be verified, starting fresh")
|
logger.info("Existing relays found, building on the previous results")
|
||||||
self.to_visit.append((self.initial_relay, 0))
|
self.to_visit.append((existing_relays, 0))
|
||||||
self.to_visit_set.add(self.initial_relay)
|
self.to_visit_set.update(existing_relays)
|
||||||
return False
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error loading existing results: {e}")
|
logger.error(f"Error loading existing results: {e}")
|
||||||
@@ -344,46 +323,6 @@ class NostrRelayDiscovery:
|
|||||||
self.to_visit_set.add(self.initial_relay)
|
self.to_visit_set.add(self.initial_relay)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def verify_existing_relays(self, existing_relays: List[str]) -> List[str]:
|
|
||||||
"""Verify that existing relays still work and filter out non-working ones"""
|
|
||||||
verified_relays = []
|
|
||||||
|
|
||||||
logger.info(f"Verifying {len(existing_relays)} existing relays...")
|
|
||||||
|
|
||||||
# Test relays in batches to avoid overwhelming connections
|
|
||||||
batch_size = 10
|
|
||||||
for i in range(0, len(existing_relays), batch_size):
|
|
||||||
batch = existing_relays[i:i + batch_size]
|
|
||||||
batch_tasks = []
|
|
||||||
|
|
||||||
for relay in batch:
|
|
||||||
if self.is_valid_relay_url(relay):
|
|
||||||
batch_tasks.append(self.test_relay_connection(relay))
|
|
||||||
else:
|
|
||||||
logger.warning(f"Invalid relay URL in existing results: {relay}")
|
|
||||||
self.stats.existing_relays_failed += 1
|
|
||||||
|
|
||||||
if batch_tasks:
|
|
||||||
# Run batch tests concurrently
|
|
||||||
batch_results = await asyncio.gather(*batch_tasks, return_exceptions=True)
|
|
||||||
|
|
||||||
for j, result in enumerate(batch_results):
|
|
||||||
relay = batch[j]
|
|
||||||
if isinstance(result, bool) and result:
|
|
||||||
verified_relays.append(relay)
|
|
||||||
self.stats.existing_relays_verified += 1
|
|
||||||
logger.info(f"✓ Verified existing relay: {relay}")
|
|
||||||
else:
|
|
||||||
self.stats.existing_relays_failed += 1
|
|
||||||
logger.warning(f"✗ Existing relay failed verification: {relay}")
|
|
||||||
|
|
||||||
# Small delay between batches to be nice to the relays
|
|
||||||
if i + batch_size < len(existing_relays):
|
|
||||||
await asyncio.sleep(0.5)
|
|
||||||
|
|
||||||
logger.info(f"Verification complete: {len(verified_relays)}/{len(existing_relays)} relays still functioning")
|
|
||||||
return verified_relays
|
|
||||||
|
|
||||||
async def discover_relays(self) -> Set[str]:
|
async def discover_relays(self) -> Set[str]:
|
||||||
"""Main discovery method using breadth-first search"""
|
"""Main discovery method using breadth-first search"""
|
||||||
# First, try to load existing results and verify them
|
# First, try to load existing results and verify them
|
||||||
|
|||||||
@@ -7,9 +7,7 @@ if [ "$#" -ne 1 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
output_file="$1"
|
output_file="$1"
|
||||||
if [ ! -f "$output_file" ] || [ ! -s "$output_file" ]; then
|
echo "Relay URL,Latitude,Longitude" > "$output_file"
|
||||||
echo "Relay URL,Latitude,Longitude" > "$output_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
while IFS= read -r url; do
|
while IFS= read -r url; do
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user