diff --git a/src/meta_api_grabber/scheduled_grabber.py b/src/meta_api_grabber/scheduled_grabber.py index 6bdaafa..aa934ca 100644 --- a/src/meta_api_grabber/scheduled_grabber.py +++ b/src/meta_api_grabber/scheduled_grabber.py @@ -336,17 +336,28 @@ class ScheduledInsightsGrabber: ) count = 0 + campaigns_without_name = [] for campaign in campaigns: + campaign_id = campaign['id'] + campaign_name = campaign.get('name') + + # Track campaigns without names for debugging + if not campaign_name: + campaigns_without_name.append(campaign_id) + print(f" WARNING: Campaign {campaign_id} has no name. Raw data: {dict(campaign)}") + await self.db.upsert_campaign( - campaign_id=campaign['id'], + campaign_id=campaign_id, account_id=account_id, - campaign_name=campaign.get('name', 'Unknown'), + campaign_name=campaign_name or 'Unknown', status=campaign.get('status'), objective=campaign.get('objective'), ) count += 1 print(f" {count} campaigns cached for {account_id}") + if campaigns_without_name: + print(f" ⚠️ {len(campaigns_without_name)} campaigns without names: {campaigns_without_name}") async def cache_adsets_metadata(self, account_id: str, limit: int = 100): """ diff --git a/src/meta_api_grabber/test_ad_accounts.py b/src/meta_api_grabber/test_ad_accounts.py index e11be62..7d281b1 100644 --- a/src/meta_api_grabber/test_ad_accounts.py +++ b/src/meta_api_grabber/test_ad_accounts.py @@ -41,12 +41,31 @@ async def test_ad_accounts(): access_token=access_token, ) - # Connect to database - print("Connecting to database...") - db = TimescaleDBClient() - await db.connect() + print("\nFetching all ad accounts accessible to this token...") + me = User(fbid='me') + account_fields = ['name', 'currency', 'timezone_name', 'account_status'] + + ad_accounts = me.get_ad_accounts(fields=account_fields) + + print(f"Found {len(ad_accounts)} ad account(s)\n") + + stored_count = 0 + for account in ad_accounts: + account_id = account['id'] + print(f"Ad Account {stored_count + 1}:") + print(f" ID: {account_id}") + print(f" Name: {account.get('name', 'N/A')}") + print(f" Currency: {account.get('currency', 'N/A')}") + print(f" Timezone: {account.get('timezone_name', 'N/A')}") + print(f" Status: {account.get('account_status', 'N/A')}") + try: + + # Connect to database + print("Connecting to database...") + db = TimescaleDBClient() + await db.connect() # Initialize schema print("\nInitializing database schema...") await db.initialize_schema()