auto-claude: subtask-2-3 - Update SocialMediaAuditor to use GooglePlacesSearcher

- Add google_places_searcher attribute to SocialMediaAuditor
- Initialize GooglePlacesSearcher if GOOGLE_PLACES_API_KEY env var is set
- Update audit_company() to use Places API directly when available
- Fallback to Brave Search when API key not configured
- Log which data source is being used for reviews

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Maciej Pienczyn 2026-01-08 20:31:22 +01:00
parent b389287697
commit 3bdbde1621

View File

@ -839,6 +839,15 @@ class SocialMediaAuditor:
self.website_auditor = WebsiteAuditor()
self.brave_searcher = BraveSearcher()
# Initialize Google Places searcher if API key is available
google_places_api_key = os.getenv('GOOGLE_PLACES_API_KEY')
if google_places_api_key:
self.google_places_searcher = GooglePlacesSearcher(api_key=google_places_api_key)
logger.info('Google Places API key found - using Places API for reviews')
else:
self.google_places_searcher = None
logger.info('GOOGLE_PLACES_API_KEY not set - falling back to Brave Search for reviews')
def get_companies(self, company_ids: Optional[List[int]] = None,
batch_start: Optional[int] = None,
batch_end: Optional[int] = None) -> List[Dict]:
@ -916,11 +925,31 @@ class SocialMediaAuditor:
result['social_media'] = website_social
# 4. Google reviews search
# 4. Google reviews search - prefer Google Places API if available
try:
result['google_reviews'] = self.brave_searcher.search_google_reviews(
company['name'], city
)
if self.google_places_searcher:
# Use Google Places API directly for accurate data
place_id = self.google_places_searcher.find_place(company['name'], city)
if place_id:
details = self.google_places_searcher.get_place_details(place_id)
result['google_reviews'] = {
'google_rating': details.get('google_rating'),
'google_reviews_count': details.get('google_reviews_count'),
'opening_hours': details.get('opening_hours'),
'business_status': details.get('business_status'),
}
else:
result['google_reviews'] = {
'google_rating': None,
'google_reviews_count': None,
'opening_hours': None,
'business_status': None,
}
else:
# Fallback to Brave Search
result['google_reviews'] = self.brave_searcher.search_google_reviews(
company['name'], city
)
except Exception as e:
result['errors'].append(f'Google reviews search failed: {str(e)}')