2026-07-30 12:54:44,382 INFO [apscheduler.scheduler] Adding job tentatively -- it will be properly scheduled when the scheduler starts 2026-07-30 12:54:44,383 INFO [apscheduler.scheduler] Added job "sync_job" to job store "default" 2026-07-30 12:54:44,383 INFO [apscheduler.scheduler] Scheduler started 2026-07-30 12:54:44,385 WARNING [fb-sync] data/ is NOT a persistent volume - history and logs will be lost on the next rebuild. Map /app/data as a Caprover persistent directory. 2026-07-30 12:54:44,385 INFO [fb-sync] Starting dashboard on port 80, sync every 1h UTC | log=/app/data/logs/fb-sync.log retention=30d persistent=False 2026-07-30 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 14:00:00 UTC)" (scheduled at 2026-07-30 13:00:00+00:00) 2026-07-30 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-30 13:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 13:00:01,400 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 13:00:01,401 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 13:00:01,406 INFO [fb-sync.worker] New articles: 2 | skips: {'duplicate_exact': 48} 2026-07-30 13:00:01,407 INFO [fb-sync.worker] Publishing [1/2] Mercedes-Benz sáhl po hliníku ze šrotu.... 2026-07-30 13:00:01,452 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1813 content_type=home.BlogPostPage path=/home/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:01,623 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1813 revision_id=3599 2026-07-30 13:00:01,727 INFO [home.signals] Starting auto-translation for blog post: Mercedes-Benz sáhl po hliníku ze šrotu. (ID: 1813) 2026-07-30 13:00:01,732 INFO [home.signals] Creating new en translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:07,081 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:08,086 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:08,213 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1814 content_type=home.BlogPostPage path=/home-1/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:08,224 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1814 revision_id=3600 2026-07-30 13:00:08,229 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1814 from=1813 2026-07-30 13:00:08,360 INFO [wagtail] Page edited: "Mercedes-Benz reached for aluminum from scrap." id=1814 revision_id=3601 2026-07-30 13:00:08,402 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes-Benz reached for aluminum from scrap.' id=1814 2026-07-30 13:00:08,734 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:08,806 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz reached for aluminum from scrap. (en) 2026-07-30 13:00:08,822 INFO [wagtail] Published: "Mercedes-Benz reached for aluminum from scrap." pk=1814 revision_id=3601 2026-07-30 13:00:08,832 INFO [home.signals] ✓ Successfully processed en: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:08,835 INFO [home.signals] Creating new de translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:13,275 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:14,301 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:14,442 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1815 content_type=home.BlogPostPage path=/startseite/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:14,465 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1815 revision_id=3602 2026-07-30 13:00:14,474 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1815 from=1813 2026-07-30 13:00:14,669 INFO [wagtail] Page edited: "Mercedes‑Benz griff nach Aluminium aus Schrott zurück." id=1815 revision_id=3603 2026-07-30 13:00:14,742 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes‑Benz griff nach Aluminium aus Schrott zurück.' id=1815 2026-07-30 13:00:14,814 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:14,986 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes‑Benz griff nach Aluminium aus Schrott zurück. (de) 2026-07-30 13:00:15,005 INFO [wagtail] Published: "Mercedes‑Benz griff nach Aluminium aus Schrott zurück." pk=1815 revision_id=3603 2026-07-30 13:00:15,021 INFO [home.signals] ✓ Successfully processed de: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:15,026 INFO [home.signals] Creating new sk translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:21,346 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:22,482 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:22,626 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1816 content_type=home.BlogPostPage path=/domov/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:22,642 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1816 revision_id=3604 2026-07-30 13:00:22,648 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1816 from=1813 2026-07-30 13:00:22,763 INFO [wagtail] Page edited: "Mercedes-Benz sáhol po hliník zo šrotu." id=1816 revision_id=3605 2026-07-30 13:00:22,814 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes-Benz sáhol po hliník zo šrotu.' id=1816 2026-07-30 13:00:22,871 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:23,001 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz sáhol po hliník zo šrotu. (sk) 2026-07-30 13:00:23,020 INFO [wagtail] Published: "Mercedes-Benz sáhol po hliník zo šrotu." pk=1816 revision_id=3605 2026-07-30 13:00:23,030 INFO [home.signals] ✓ Successfully processed sk: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:23,035 INFO [home.signals] Creating new zh-Hans translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:27,302 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:28,219 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:28,400 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1817 content_type=home.BlogPostPage path=/zh-hans/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:28,420 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1817 revision_id=3606 2026-07-30 13:00:28,427 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1817 from=1813 2026-07-30 13:00:28,614 INFO [wagtail] Page edited: "梅赛德斯-奔驰开始使用废旧铝材。" id=1817 revision_id=3607 2026-07-30 13:00:28,837 INFO [home.signals] Skipping auto-translation for non-Czech page: 梅赛德斯-奔驰开始使用废旧铝材。 (zh-Hans) 2026-07-30 13:00:28,860 INFO [wagtail] Published: "梅赛德斯-奔驰开始使用废旧铝材。" pk=1817 revision_id=3607 2026-07-30 13:00:28,874 INFO [home.signals] ✓ Successfully processed zh-Hans: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:28,881 INFO [home.signals] Creating new tr translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:33,739 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:35,114 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:35,281 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1818 content_type=home.BlogPostPage path=/anasayfa/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:35,298 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1818 revision_id=3608 2026-07-30 13:00:35,305 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1818 from=1813 2026-07-30 13:00:35,499 INFO [wagtail] Page edited: "Mercedes-Benz hurda alüminyumdan yararlandı." id=1818 revision_id=3609 2026-07-30 13:00:35,569 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes-Benz hurda alüminyumdan yararlandı.' id=1818 2026-07-30 13:00:35,666 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:35,864 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz hurda alüminyumdan yararlandı. (tr) 2026-07-30 13:00:35,896 INFO [wagtail] Published: "Mercedes-Benz hurda alüminyumdan yararlandı." pk=1818 revision_id=3609 2026-07-30 13:00:35,915 INFO [home.signals] ✓ Successfully processed tr: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:35,923 INFO [home.signals] Creating new vi translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:40,686 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:41,869 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:42,076 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1819 content_type=home.BlogPostPage path=/trang-chu/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:42,101 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1819 revision_id=3610 2026-07-30 13:00:42,110 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1819 from=1813 2026-07-30 13:00:42,261 INFO [wagtail] Page edited: "Mercedes-Benz đã lấy nhôm từ phế liệu." id=1819 revision_id=3611 2026-07-30 13:00:42,460 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz đã lấy nhôm từ phế liệu. (vi) 2026-07-30 13:00:42,489 INFO [wagtail] Published: "Mercedes-Benz đã lấy nhôm từ phế liệu." pk=1819 revision_id=3611 2026-07-30 13:00:42,507 INFO [home.signals] ✓ Successfully processed vi: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:42,513 INFO [home.signals] Creating new hi translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:47,690 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:48,939 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:49,142 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1820 content_type=home.BlogPostPage path=/hi/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:49,158 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1820 revision_id=3612 2026-07-30 13:00:49,166 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1820 from=1813 2026-07-30 13:00:49,355 INFO [wagtail] Page edited: "Mercedes-Benz ने स्क्रैप से एल्यूमीनियम का उपयोग किया।" id=1820 revision_id=3613 2026-07-30 13:00:49,415 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes-Benz ने स्क्रैप से एल्यूमीनियम का उपयोग किया।' id=1820 2026-07-30 13:00:49,458 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:49,613 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz ने स्क्रैप से एल्यूमीनियम का उपयोग किया। (hi) 2026-07-30 13:00:49,633 INFO [wagtail] Published: "Mercedes-Benz ने स्क्रैप से एल्यूमीनियम का उपयोग किया।" pk=1820 revision_id=3613 2026-07-30 13:00:49,645 INFO [home.signals] ✓ Successfully processed hi: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:49,650 INFO [home.signals] Creating new fr translation for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:54,405 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:55,393 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:00:55,575 INFO [wagtail] Page created: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1821 content_type=home.BlogPostPage path=/home-fr/blog/mercedes-benz-sahl-po-hliniku-ze-srotu/ 2026-07-30 13:00:55,588 INFO [wagtail] Page edited: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1821 revision_id=3614 2026-07-30 13:00:55,596 INFO [wagtail] Page copied: "Mercedes-Benz sáhl po hliníku ze šrotu." id=1821 from=1813 2026-07-30 13:00:55,783 INFO [wagtail] Page edited: "Mercedes-Benz a puisé dans l'aluminium provenant de ferraille." id=1821 revision_id=3615 2026-07-30 13:00:55,826 INFO [wagtail.contrib.redirects.signal_handlers] Creating redirects for page: 'Mercedes-Benz a puisé dans l'aluminium provenant de ferraille.' id=1821 2026-07-30 13:00:55,887 INFO [wagtail.contrib.redirects.signal_handlers] 1/1 redirects were created successfully. 2026-07-30 13:00:56,030 INFO [home.signals] Skipping auto-translation for non-Czech page: Mercedes-Benz a puisé dans l'aluminium provenant de ferraille. (fr) 2026-07-30 13:00:56,055 INFO [wagtail] Published: "Mercedes-Benz a puisé dans l'aluminium provenant de ferraille." pk=1821 revision_id=3615 2026-07-30 13:00:56,074 INFO [home.signals] ✓ Successfully processed fr: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:56,075 INFO [home.signals] Completed auto-translation workflow for: Mercedes-Benz sáhl po hliníku ze šrotu. 2026-07-30 13:00:56,095 INFO [wagtail] Published: "Mercedes-Benz sáhl po hliníku ze šrotu." pk=1813 revision_id=3599 2026-07-30 13:01:01,096 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 13:01:03,973 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:03,976 INFO [fb-sync.free_images] Photo queries: ['Mercedes electric car', 'recycled aluminum ingots', 'aluminum recycling plant', 'hydroelectric power plant'] 2026-07-30 13:01:10,874 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:17,938 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:21,755 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:30,009 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:32,321 INFO [httpx] HTTP Request: POST https://api.groq.com/openai/v1/chat/completions "HTTP/1.1 200 OK" 2026-07-30 13:01:32,325 INFO [fb-sync.free_images] Image chosen: pexels "A white Mercedes-Benz EQB-Class parked outdoors showcasing l" (Pexels Licence) 2026-07-30 13:01:33,229 INFO [fb-sync.worker] Image added ID=1813: stock:pexels (Pexels Licence) 2026-07-30 13:01:34,242 INFO [fb-sync] Sync done: 1 new posts in 94s (source=graph_api, scraped=50, skips={'duplicate_exact': 48, 'empty_body': 1}) 2026-07-30 13:01:34,244 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 14:00:00 UTC)" executed successfully 2026-07-30 14:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 15:00:00 UTC)" (scheduled at 2026-07-30 14:00:00+00:00) 2026-07-30 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-30 14:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 14:00:01,193 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 14:00:01,194 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 14:00:01,196 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 14:00:01,196 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 14:00:01,198 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 14:00:01,199 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 15:00:00 UTC)" executed successfully 2026-07-30 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 16:00:00 UTC)" (scheduled at 2026-07-30 15:00:00+00:00) 2026-07-30 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-07-30 15:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 15:00:01,477 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 15:00:01,478 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 15:00:01,482 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 15:00:01,482 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 15:00:01,485 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 15:00:01,486 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 16:00:00 UTC)" executed successfully 2026-07-30 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 17:00:00 UTC)" (scheduled at 2026-07-30 16:00:00+00:00) 2026-07-30 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-30 16:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 16:00:01,329 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 16:00:01,330 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 16:00:01,334 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 16:00:01,334 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 16:00:01,337 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 16:00:01,338 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 17:00:00 UTC)" executed successfully 2026-07-30 17:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 18:00:00 UTC)" (scheduled at 2026-07-30 17:00:00+00:00) 2026-07-30 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-30 17:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 17:00:01,807 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 17:00:01,808 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 17:00:01,811 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 17:00:01,812 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 17:00:01,814 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 17:00:01,816 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 18:00:00 UTC)" executed successfully 2026-07-30 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 19:00:00 UTC)" (scheduled at 2026-07-30 18:00:00+00:00) 2026-07-30 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-30 18:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 18:00:01,042 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 18:00:01,043 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 18:00:01,045 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 18:00:01,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 18:00:01,047 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 18:00:01,048 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 19:00:00 UTC)" executed successfully 2026-07-30 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 20:00:00 UTC)" (scheduled at 2026-07-30 19:00:00+00:00) 2026-07-30 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-30 19:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 19:00:01,115 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 19:00:01,116 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 19:00:01,119 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 19:00:01,119 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 19:00:01,121 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 19:00:01,121 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 20:00:00 UTC)" executed successfully 2026-07-30 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 21:00:00 UTC)" (scheduled at 2026-07-30 20:00:00+00:00) 2026-07-30 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-30 20:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 20:00:01,506 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 20:00:01,509 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 20:00:01,513 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 20:00:01,513 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 20:00:01,517 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 20:00:01,518 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 21:00:00 UTC)" executed successfully 2026-07-30 21:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 22:00:00 UTC)" (scheduled at 2026-07-30 21:00:00+00:00) 2026-07-30 21:00:00,008 INFO [fb-sync] Starting FB sync... 2026-07-30 21:00:00,106 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 21:00:01,021 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 21:00:01,023 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 21:00:01,026 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 21:00:01,026 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 21:00:01,030 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 21:00:01,030 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 22:00:00 UTC)" executed successfully 2026-07-30 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 23:00:00 UTC)" (scheduled at 2026-07-30 22:00:00+00:00) 2026-07-30 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-07-30 22:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 22:00:03,338 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 22:00:03,340 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 22:00:03,343 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 22:00:03,344 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 22:00:03,346 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 22:00:03,347 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-30 23:00:00 UTC)" executed successfully 2026-07-30 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 00:00:00 UTC)" (scheduled at 2026-07-30 23:00:00+00:00) 2026-07-30 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-07-30 23:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-30 23:00:01,131 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-30 23:00:01,132 INFO [fb-sync.worker] Scraped 50 posts 2026-07-30 23:00:01,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-30 23:00:01,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-30 23:00:01,136 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-30 23:00:01,137 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 00:00:00 UTC)" executed successfully 2026-07-31 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 01:00:00 UTC)" (scheduled at 2026-07-31 00:00:00+00:00) 2026-07-31 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 00:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 00:00:01,033 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 00:00:01,035 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 00:00:01,038 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 00:00:01,038 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 00:00:01,040 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 00:00:01,042 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 01:00:00 UTC)" executed successfully 2026-07-31 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 02:00:00 UTC)" (scheduled at 2026-07-31 01:00:00+00:00) 2026-07-31 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-31 01:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 01:00:01,383 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 01:00:01,384 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 01:00:01,386 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 01:00:01,386 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 01:00:01,390 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 01:00:01,392 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 02:00:00 UTC)" executed successfully 2026-07-31 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 03:00:00 UTC)" (scheduled at 2026-07-31 02:00:00+00:00) 2026-07-31 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-07-31 02:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 02:00:01,437 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 02:00:01,439 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 02:00:01,443 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 02:00:01,443 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 02:00:01,446 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 02:00:01,447 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 03:00:00 UTC)" executed successfully 2026-07-31 03:00:00,028 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 04:00:00 UTC)" (scheduled at 2026-07-31 03:00:00+00:00) 2026-07-31 03:00:00,034 INFO [fb-sync] Starting FB sync... 2026-07-31 03:00:00,107 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 03:00:01,265 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 03:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 03:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 03:00:01,271 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 03:00:01,276 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 03:00:01,277 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 04:00:00 UTC)" executed successfully 2026-07-31 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 05:00:00 UTC)" (scheduled at 2026-07-31 04:00:00+00:00) 2026-07-31 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-07-31 04:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 04:00:01,328 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 04:00:01,330 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 04:00:01,333 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 04:00:01,333 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 04:00:01,336 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 04:00:01,337 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 05:00:00 UTC)" executed successfully 2026-07-31 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 06:00:00 UTC)" (scheduled at 2026-07-31 05:00:00+00:00) 2026-07-31 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 05:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 05:00:01,102 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 05:00:01,104 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 05:00:01,108 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 05:00:01,108 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 05:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 05:00:01,113 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 06:00:00 UTC)" executed successfully 2026-07-31 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 07:00:00 UTC)" (scheduled at 2026-07-31 06:00:00+00:00) 2026-07-31 06:00:00,006 INFO [fb-sync] Starting FB sync... 2026-07-31 06:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 06:00:01,726 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 06:00:01,728 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 06:00:01,732 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 06:00:01,732 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 06:00:01,737 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 06:00:01,739 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 07:00:00 UTC)" executed successfully 2026-07-31 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 08:00:00 UTC)" (scheduled at 2026-07-31 07:00:00+00:00) 2026-07-31 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-31 07:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 07:00:02,353 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 07:00:02,355 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 07:00:02,357 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 07:00:02,357 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 07:00:02,360 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 07:00:02,361 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 08:00:00 UTC)" executed successfully 2026-07-31 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 09:00:00 UTC)" (scheduled at 2026-07-31 08:00:00+00:00) 2026-07-31 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-31 08:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 08:00:01,924 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 08:00:01,926 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 08:00:01,929 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 08:00:01,929 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 08:00:01,932 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 08:00:01,933 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 09:00:00 UTC)" executed successfully 2026-07-31 09:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 10:00:00 UTC)" (scheduled at 2026-07-31 09:00:00+00:00) 2026-07-31 09:00:00,014 INFO [fb-sync] Starting FB sync... 2026-07-31 09:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 09:00:02,063 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 09:00:02,065 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 09:00:02,066 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 09:00:02,067 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 09:00:02,070 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 09:00:02,071 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 10:00:00 UTC)" executed successfully 2026-07-31 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 11:00:00 UTC)" (scheduled at 2026-07-31 10:00:00+00:00) 2026-07-31 10:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 10:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 10:00:03,514 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 10:00:03,515 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 10:00:03,517 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 10:00:03,518 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 10:00:03,520 INFO [fb-sync] Sync done: 0 new posts in 4s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 10:00:03,521 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 11:00:00 UTC)" executed successfully 2026-07-31 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 12:00:00 UTC)" (scheduled at 2026-07-31 11:00:00+00:00) 2026-07-31 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-31 11:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 11:00:01,283 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 11:00:01,284 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 11:00:01,287 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 11:00:01,287 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 11:00:01,293 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 11:00:01,295 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 12:00:00 UTC)" executed successfully 2026-07-31 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 13:00:00 UTC)" (scheduled at 2026-07-31 12:00:00+00:00) 2026-07-31 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 12:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 12:00:01,604 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 12:00:01,604 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 12:00:01,607 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 12:00:01,607 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 12:00:01,612 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 12:00:01,613 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 13:00:00 UTC)" executed successfully 2026-07-31 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 14:00:00 UTC)" (scheduled at 2026-07-31 13:00:00+00:00) 2026-07-31 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-31 13:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 13:00:01,966 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 13:00:01,968 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 13:00:01,972 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 13:00:01,972 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 13:00:01,978 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 13:00:01,981 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 14:00:00 UTC)" executed successfully 2026-07-31 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 15:00:00 UTC)" (scheduled at 2026-07-31 14:00:00+00:00) 2026-07-31 14:00:00,014 INFO [fb-sync] Starting FB sync... 2026-07-31 14:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 14:00:01,671 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 14:00:01,672 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 14:00:01,676 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 14:00:01,676 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 14:00:01,684 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 14:00:01,687 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 15:00:00 UTC)" executed successfully 2026-07-31 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 16:00:00 UTC)" (scheduled at 2026-07-31 15:00:00+00:00) 2026-07-31 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 15:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 15:00:01,252 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 15:00:01,254 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 15:00:01,258 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 15:00:01,258 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 15:00:01,261 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 15:00:01,263 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 16:00:00 UTC)" executed successfully 2026-07-31 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 17:00:00 UTC)" (scheduled at 2026-07-31 16:00:00+00:00) 2026-07-31 16:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-31 16:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 16:00:02,839 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 16:00:02,840 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 16:00:02,843 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 16:00:02,843 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 16:00:02,848 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 16:00:02,849 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 17:00:00 UTC)" executed successfully 2026-07-31 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 18:00:00 UTC)" (scheduled at 2026-07-31 17:00:00+00:00) 2026-07-31 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-07-31 17:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 17:00:01,674 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 17:00:01,675 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 17:00:01,678 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 17:00:01,679 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 17:00:01,684 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 17:00:01,686 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 18:00:00 UTC)" executed successfully 2026-07-31 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 19:00:00 UTC)" (scheduled at 2026-07-31 18:00:00+00:00) 2026-07-31 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 18:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 18:00:03,956 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 18:00:03,957 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 18:00:03,959 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 18:00:03,960 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 18:00:03,963 INFO [fb-sync] Sync done: 0 new posts in 4s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 18:00:03,964 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 19:00:00 UTC)" executed successfully 2026-07-31 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 20:00:00 UTC)" (scheduled at 2026-07-31 19:00:00+00:00) 2026-07-31 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-07-31 19:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 19:00:01,386 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 19:00:01,388 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 19:00:01,390 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 19:00:01,391 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 19:00:01,396 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 19:00:01,399 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 20:00:00 UTC)" executed successfully 2026-07-31 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 21:00:00 UTC)" (scheduled at 2026-07-31 20:00:00+00:00) 2026-07-31 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-07-31 20:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 20:00:01,849 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 20:00:01,850 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 20:00:01,853 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 20:00:01,853 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 20:00:01,861 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 20:00:01,864 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 21:00:00 UTC)" executed successfully 2026-07-31 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 22:00:00 UTC)" (scheduled at 2026-07-31 21:00:00+00:00) 2026-07-31 21:00:00,009 INFO [fb-sync] Starting FB sync... 2026-07-31 21:00:00,062 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 21:00:01,901 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 21:00:01,901 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 21:00:01,905 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 21:00:01,905 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 21:00:01,911 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 21:00:01,914 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 22:00:00 UTC)" executed successfully 2026-07-31 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 23:00:00 UTC)" (scheduled at 2026-07-31 22:00:00+00:00) 2026-07-31 22:00:00,012 INFO [fb-sync] Starting FB sync... 2026-07-31 22:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 22:00:01,201 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 22:00:01,203 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 22:00:01,207 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 22:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 22:00:01,214 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 22:00:01,216 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-07-31 23:00:00 UTC)" executed successfully 2026-07-31 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 00:00:00 UTC)" (scheduled at 2026-07-31 23:00:00+00:00) 2026-07-31 23:00:00,011 INFO [fb-sync] Starting FB sync... 2026-07-31 23:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-07-31 23:00:03,373 INFO [fb-sync.worker] Graph API returned 50 posts 2026-07-31 23:00:03,375 INFO [fb-sync.worker] Scraped 50 posts 2026-07-31 23:00:03,378 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-07-31 23:00:03,378 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-07-31 23:00:03,383 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-07-31 23:00:03,386 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 00:00:00 UTC)" executed successfully 2026-08-01 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 01:00:00 UTC)" (scheduled at 2026-08-01 00:00:00+00:00) 2026-08-01 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-01 00:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 00:00:01,034 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 00:00:01,036 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 00:00:01,039 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 00:00:01,040 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 00:00:01,045 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 00:00:01,047 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 01:00:00 UTC)" executed successfully 2026-08-01 01:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 02:00:00 UTC)" (scheduled at 2026-08-01 01:00:00+00:00) 2026-08-01 01:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-01 01:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 01:00:01,186 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 01:00:01,187 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 01:00:01,189 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 01:00:01,189 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 01:00:01,193 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 01:00:01,195 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 02:00:00 UTC)" executed successfully 2026-08-01 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 03:00:00 UTC)" (scheduled at 2026-08-01 02:00:00+00:00) 2026-08-01 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-01 02:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 02:00:01,151 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 02:00:01,152 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 02:00:01,155 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 02:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 02:00:01,161 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 02:00:01,163 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 03:00:00 UTC)" executed successfully 2026-08-01 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 04:00:00 UTC)" (scheduled at 2026-08-01 03:00:00+00:00) 2026-08-01 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-01 03:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 03:00:05,707 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 03:00:05,708 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 03:00:05,712 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 03:00:05,712 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 03:00:05,717 INFO [fb-sync] Sync done: 0 new posts in 6s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 03:00:05,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 04:00:00 UTC)" executed successfully 2026-08-01 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 05:00:00 UTC)" (scheduled at 2026-08-01 04:00:00+00:00) 2026-08-01 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-01 04:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 04:00:01,170 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 04:00:01,171 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 04:00:01,173 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 04:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 04:00:01,177 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 04:00:01,178 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 05:00:00 UTC)" executed successfully 2026-08-01 05:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 06:00:00 UTC)" (scheduled at 2026-08-01 05:00:00+00:00) 2026-08-01 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 05:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 05:00:02,034 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 05:00:02,035 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 05:00:02,037 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 05:00:02,038 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 05:00:02,041 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 05:00:02,043 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 06:00:00 UTC)" executed successfully 2026-08-01 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 07:00:00 UTC)" (scheduled at 2026-08-01 06:00:00+00:00) 2026-08-01 06:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 06:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 06:00:01,175 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 06:00:01,176 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 06:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 06:00:01,179 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 06:00:01,184 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 06:00:01,186 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 07:00:00 UTC)" executed successfully 2026-08-01 07:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 08:00:00 UTC)" (scheduled at 2026-08-01 07:00:00+00:00) 2026-08-01 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-01 07:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 07:00:01,210 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 07:00:01,212 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 07:00:01,220 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 07:00:01,221 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 07:00:01,230 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 07:00:01,234 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 08:00:00 UTC)" executed successfully 2026-08-01 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 09:00:00 UTC)" (scheduled at 2026-08-01 08:00:00+00:00) 2026-08-01 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 08:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 08:00:01,116 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 08:00:01,118 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 08:00:01,122 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 08:00:01,122 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 08:00:01,126 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 08:00:01,128 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 09:00:00 UTC)" executed successfully 2026-08-01 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 10:00:00 UTC)" (scheduled at 2026-08-01 09:00:00+00:00) 2026-08-01 09:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-01 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 09:00:01,380 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 09:00:01,382 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 09:00:01,385 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 09:00:01,386 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 09:00:01,396 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 09:00:01,400 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 10:00:00 UTC)" executed successfully 2026-08-01 10:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 11:00:00 UTC)" (scheduled at 2026-08-01 10:00:00+00:00) 2026-08-01 10:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-01 10:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 10:00:01,152 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 10:00:01,154 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 10:00:01,157 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 10:00:01,157 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 10:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 10:00:01,165 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 11:00:00 UTC)" executed successfully 2026-08-01 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 12:00:00 UTC)" (scheduled at 2026-08-01 11:00:00+00:00) 2026-08-01 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 11:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 11:00:01,555 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 11:00:01,557 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 11:00:01,561 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 11:00:01,561 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 11:00:01,568 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 11:00:01,571 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 12:00:00 UTC)" executed successfully 2026-08-01 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 13:00:00 UTC)" (scheduled at 2026-08-01 12:00:00+00:00) 2026-08-01 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-01 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 12:00:01,109 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 12:00:01,111 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 12:00:01,114 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 12:00:01,114 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 12:00:01,120 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 12:00:01,122 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 13:00:00 UTC)" executed successfully 2026-08-01 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 14:00:00 UTC)" (scheduled at 2026-08-01 13:00:00+00:00) 2026-08-01 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-01 13:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 13:00:01,778 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 13:00:01,780 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 13:00:01,784 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 13:00:01,784 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 13:00:01,791 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 13:00:01,794 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 14:00:00 UTC)" executed successfully 2026-08-01 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 15:00:00 UTC)" (scheduled at 2026-08-01 14:00:00+00:00) 2026-08-01 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-01 14:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 14:00:01,237 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 14:00:01,238 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 14:00:01,242 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 14:00:01,242 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 14:00:01,249 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 14:00:01,252 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 15:00:00 UTC)" executed successfully 2026-08-01 15:00:00,023 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 16:00:00 UTC)" (scheduled at 2026-08-01 15:00:00+00:00) 2026-08-01 15:00:00,025 INFO [fb-sync] Starting FB sync... 2026-08-01 15:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 15:00:01,720 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 15:00:01,722 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 15:00:01,726 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 15:00:01,726 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 15:00:01,733 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 15:00:01,737 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 16:00:00 UTC)" executed successfully 2026-08-01 16:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 17:00:00 UTC)" (scheduled at 2026-08-01 16:00:00+00:00) 2026-08-01 16:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-01 16:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 16:00:01,191 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 16:00:01,192 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 16:00:01,195 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 16:00:01,196 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 16:00:01,203 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 16:00:01,206 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 17:00:00 UTC)" executed successfully 2026-08-01 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 18:00:00 UTC)" (scheduled at 2026-08-01 17:00:00+00:00) 2026-08-01 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-01 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 17:00:01,327 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 17:00:01,329 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 17:00:01,334 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 17:00:01,334 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 17:00:01,341 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 17:00:01,344 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 18:00:00 UTC)" executed successfully 2026-08-01 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 19:00:00 UTC)" (scheduled at 2026-08-01 18:00:00+00:00) 2026-08-01 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 18:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 18:00:01,206 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 18:00:01,208 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 18:00:01,211 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 18:00:01,211 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 18:00:01,218 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 18:00:01,221 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 19:00:00 UTC)" executed successfully 2026-08-01 19:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 20:00:00 UTC)" (scheduled at 2026-08-01 19:00:00+00:00) 2026-08-01 19:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-01 19:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 19:00:01,129 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 19:00:01,130 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 19:00:01,134 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 19:00:01,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 19:00:01,142 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 19:00:01,146 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 20:00:00 UTC)" executed successfully 2026-08-01 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 20:00:00 UTC)" (scheduled at 2026-08-01 20:00:00+00:00) 2026-08-01 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-01 20:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 20:00:02,041 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 20:00:02,043 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 20:00:02,046 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 20:00:02,046 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 20:00:02,054 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 20:00:02,056 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 21:00:00 UTC)" executed successfully 2026-08-01 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 22:00:00 UTC)" (scheduled at 2026-08-01 21:00:00+00:00) 2026-08-01 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-01 21:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 21:00:01,032 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 21:00:01,034 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 21:00:01,037 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 21:00:01,037 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 21:00:01,044 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 21:00:01,047 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 22:00:00 UTC)" executed successfully 2026-08-01 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 23:00:00 UTC)" (scheduled at 2026-08-01 22:00:00+00:00) 2026-08-01 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-01 22:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 22:00:01,441 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 22:00:01,444 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 22:00:01,448 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 22:00:01,448 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 22:00:01,457 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 22:00:01,461 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-01 23:00:00 UTC)" executed successfully 2026-08-01 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 00:00:00 UTC)" (scheduled at 2026-08-01 23:00:00+00:00) 2026-08-01 23:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-01 23:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-01 23:00:01,695 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-01 23:00:01,697 INFO [fb-sync.worker] Scraped 50 posts 2026-08-01 23:00:01,700 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-01 23:00:01,700 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-01 23:00:01,708 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-01 23:00:01,711 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 00:00:00 UTC)" executed successfully 2026-08-02 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 01:00:00 UTC)" (scheduled at 2026-08-02 00:00:00+00:00) 2026-08-02 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 00:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 00:00:00,996 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 00:00:00,997 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 00:00:01,000 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 00:00:01,000 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 00:00:01,007 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 00:00:01,009 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 01:00:00 UTC)" executed successfully 2026-08-02 01:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 02:00:00 UTC)" (scheduled at 2026-08-02 01:00:00+00:00) 2026-08-02 01:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-02 01:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 01:00:01,062 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 01:00:01,064 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 01:00:01,068 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 01:00:01,068 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 01:00:01,075 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 01:00:01,079 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 02:00:00 UTC)" executed successfully 2026-08-02 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 03:00:00 UTC)" (scheduled at 2026-08-02 02:00:00+00:00) 2026-08-02 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 02:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 02:00:01,100 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 02:00:01,101 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 02:00:01,104 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 02:00:01,104 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 02:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 02:00:01,116 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 03:00:00 UTC)" executed successfully 2026-08-02 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 04:00:00 UTC)" (scheduled at 2026-08-02 03:00:00+00:00) 2026-08-02 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 03:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 03:00:01,295 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 03:00:01,296 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 03:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 03:00:01,300 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 03:00:01,306 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 03:00:01,308 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 04:00:00 UTC)" executed successfully 2026-08-02 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 05:00:00 UTC)" (scheduled at 2026-08-02 04:00:00+00:00) 2026-08-02 04:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 04:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 04:00:01,135 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 04:00:01,136 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 04:00:01,140 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 04:00:01,140 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 04:00:01,147 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 04:00:01,150 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 05:00:00 UTC)" executed successfully 2026-08-02 05:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 06:00:00 UTC)" (scheduled at 2026-08-02 05:00:00+00:00) 2026-08-02 05:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-02 05:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 05:00:01,569 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 05:00:01,571 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 05:00:01,575 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 05:00:01,575 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 05:00:01,583 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 05:00:01,587 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 06:00:00 UTC)" executed successfully 2026-08-02 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 07:00:00 UTC)" (scheduled at 2026-08-02 06:00:00+00:00) 2026-08-02 06:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-02 06:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 06:00:01,102 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 06:00:01,103 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 06:00:01,106 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 06:00:01,107 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 06:00:01,114 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 06:00:01,118 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 07:00:00 UTC)" executed successfully 2026-08-02 07:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 08:00:00 UTC)" (scheduled at 2026-08-02 07:00:00+00:00) 2026-08-02 07:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-02 07:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 07:00:01,451 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 07:00:01,453 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 07:00:01,457 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 07:00:01,458 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 07:00:01,468 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 07:00:01,473 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 08:00:00 UTC)" executed successfully 2026-08-02 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 09:00:00 UTC)" (scheduled at 2026-08-02 08:00:00+00:00) 2026-08-02 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 08:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 08:00:01,202 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 08:00:01,204 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 08:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 08:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 08:00:01,217 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 08:00:01,221 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 09:00:00 UTC)" executed successfully 2026-08-02 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 10:00:00 UTC)" (scheduled at 2026-08-02 09:00:00+00:00) 2026-08-02 09:00:00,016 INFO [fb-sync] Starting FB sync... 2026-08-02 09:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 09:00:02,185 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 09:00:02,187 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 09:00:02,191 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 09:00:02,191 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 09:00:02,202 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 09:00:02,207 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 10:00:00 UTC)" executed successfully 2026-08-02 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 11:00:00 UTC)" (scheduled at 2026-08-02 10:00:00+00:00) 2026-08-02 10:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-02 10:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 10:00:01,668 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 10:00:01,670 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 10:00:01,675 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 10:00:01,675 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 10:00:01,685 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 10:00:01,690 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 11:00:00 UTC)" executed successfully 2026-08-02 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 12:00:00 UTC)" (scheduled at 2026-08-02 11:00:00+00:00) 2026-08-02 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 11:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 11:00:01,179 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 11:00:01,181 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 11:00:01,185 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 11:00:01,185 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 11:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 11:00:01,200 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 12:00:00 UTC)" executed successfully 2026-08-02 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 13:00:00 UTC)" (scheduled at 2026-08-02 12:00:00+00:00) 2026-08-02 12:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-02 12:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 12:00:01,467 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 12:00:01,468 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 12:00:01,471 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 12:00:01,471 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 12:00:01,478 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 12:00:01,482 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 13:00:00 UTC)" executed successfully 2026-08-02 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 14:00:00 UTC)" (scheduled at 2026-08-02 13:00:00+00:00) 2026-08-02 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-02 13:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 13:00:01,387 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 13:00:01,389 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 13:00:01,393 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 13:00:01,393 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 13:00:01,403 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 13:00:01,407 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 14:00:00 UTC)" executed successfully 2026-08-02 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 15:00:00 UTC)" (scheduled at 2026-08-02 14:00:00+00:00) 2026-08-02 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 14:00:01,654 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 14:00:01,656 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 14:00:01,659 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 14:00:01,660 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 14:00:01,670 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 14:00:01,674 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 15:00:00 UTC)" executed successfully 2026-08-02 15:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 16:00:00 UTC)" (scheduled at 2026-08-02 15:00:00+00:00) 2026-08-02 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-02 15:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 15:00:01,214 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 15:00:01,217 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 15:00:01,221 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 15:00:01,221 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 15:00:01,231 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 15:00:01,236 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 16:00:00 UTC)" executed successfully 2026-08-02 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 17:00:00 UTC)" (scheduled at 2026-08-02 16:00:00+00:00) 2026-08-02 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 16:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 16:00:01,586 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 16:00:01,588 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 16:00:01,591 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 16:00:01,591 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 16:00:01,600 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 16:00:01,604 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 17:00:00 UTC)" executed successfully 2026-08-02 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 18:00:00 UTC)" (scheduled at 2026-08-02 17:00:00+00:00) 2026-08-02 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 17:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 17:00:01,168 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 17:00:01,169 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 17:00:01,173 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 17:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 17:00:01,182 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 17:00:01,186 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 18:00:00 UTC)" executed successfully 2026-08-02 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 19:00:00 UTC)" (scheduled at 2026-08-02 18:00:00+00:00) 2026-08-02 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 18:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 18:00:02,035 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 18:00:02,038 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 18:00:02,041 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 18:00:02,041 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 18:00:02,050 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 18:00:02,054 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 19:00:00 UTC)" executed successfully 2026-08-02 19:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 20:00:00 UTC)" (scheduled at 2026-08-02 19:00:00+00:00) 2026-08-02 19:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-02 19:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 19:00:01,606 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 19:00:01,607 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 19:00:01,610 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 19:00:01,610 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 19:00:01,617 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 19:00:01,619 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 20:00:00 UTC)" executed successfully 2026-08-02 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 21:00:00 UTC)" (scheduled at 2026-08-02 20:00:00+00:00) 2026-08-02 20:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-02 20:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 20:00:01,201 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 20:00:01,203 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 20:00:01,205 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 20:00:01,205 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 20:00:01,212 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 20:00:01,217 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 21:00:00 UTC)" executed successfully 2026-08-02 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 22:00:00 UTC)" (scheduled at 2026-08-02 21:00:00+00:00) 2026-08-02 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 21:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 21:00:02,050 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 21:00:02,052 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 21:00:02,055 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 21:00:02,056 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 21:00:02,065 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 21:00:02,075 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 22:00:00 UTC)" executed successfully 2026-08-02 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 23:00:00 UTC)" (scheduled at 2026-08-02 22:00:00+00:00) 2026-08-02 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-02 22:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 22:00:01,292 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 22:00:01,294 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 22:00:01,298 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 22:00:01,298 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 22:00:01,313 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 22:00:01,315 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-02 23:00:00 UTC)" executed successfully 2026-08-02 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 00:00:00 UTC)" (scheduled at 2026-08-02 23:00:00+00:00) 2026-08-02 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-02 23:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-02 23:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-02 23:00:01,031 INFO [fb-sync.worker] Scraped 50 posts 2026-08-02 23:00:01,034 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-02 23:00:01,034 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-02 23:00:01,041 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-02 23:00:01,044 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 00:00:00 UTC)" executed successfully 2026-08-03 00:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 01:00:00 UTC)" (scheduled at 2026-08-03 00:00:00+00:00) 2026-08-03 00:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-03 00:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 00:00:01,000 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 00:00:01,001 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 00:00:01,004 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 00:00:01,004 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 00:00:01,013 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 00:00:01,015 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 01:00:00 UTC)" executed successfully 2026-08-03 01:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 02:00:00 UTC)" (scheduled at 2026-08-03 01:00:00+00:00) 2026-08-03 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 01:00:01,086 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 01:00:01,087 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 01:00:01,093 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 01:00:01,094 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 01:00:01,105 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 01:00:01,108 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 02:00:00 UTC)" executed successfully 2026-08-03 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 03:00:00 UTC)" (scheduled at 2026-08-03 02:00:00+00:00) 2026-08-03 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-03 02:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 02:00:01,555 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 02:00:01,557 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 02:00:01,560 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 02:00:01,561 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 02:00:01,572 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 02:00:01,578 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 03:00:00 UTC)" executed successfully 2026-08-03 03:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 04:00:00 UTC)" (scheduled at 2026-08-03 03:00:00+00:00) 2026-08-03 03:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-03 03:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 03:00:01,188 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 03:00:01,190 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 03:00:01,195 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 03:00:01,195 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 03:00:01,204 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 03:00:01,208 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 04:00:00 UTC)" executed successfully 2026-08-03 04:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 05:00:00 UTC)" (scheduled at 2026-08-03 04:00:00+00:00) 2026-08-03 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-03 04:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 04:00:01,510 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 04:00:01,512 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 04:00:01,514 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 04:00:01,514 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 04:00:01,525 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 04:00:01,532 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 05:00:00 UTC)" executed successfully 2026-08-03 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 06:00:00 UTC)" (scheduled at 2026-08-03 05:00:00+00:00) 2026-08-03 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 05:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 05:00:01,185 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 05:00:01,187 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 05:00:01,191 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 05:00:01,192 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 05:00:01,206 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 05:00:01,212 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 06:00:00 UTC)" executed successfully 2026-08-03 06:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 07:00:00 UTC)" (scheduled at 2026-08-03 06:00:00+00:00) 2026-08-03 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-03 06:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 06:00:01,044 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 06:00:01,045 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 06:00:01,049 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 06:00:01,049 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 06:00:01,056 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 06:00:01,060 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 07:00:00 UTC)" executed successfully 2026-08-03 07:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 08:00:00 UTC)" (scheduled at 2026-08-03 07:00:00+00:00) 2026-08-03 07:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-03 07:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 07:00:01,454 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 07:00:01,456 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 07:00:01,457 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 07:00:01,458 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 07:00:01,467 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 07:00:01,470 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 08:00:00 UTC)" executed successfully 2026-08-03 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 09:00:00 UTC)" (scheduled at 2026-08-03 08:00:00+00:00) 2026-08-03 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-03 08:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 08:00:01,112 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 08:00:01,113 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 08:00:01,115 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 08:00:01,116 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 08:00:01,125 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 08:00:01,129 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 09:00:00 UTC)" executed successfully 2026-08-03 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 10:00:00 UTC)" (scheduled at 2026-08-03 09:00:00+00:00) 2026-08-03 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-03 09:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 09:00:01,734 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 09:00:01,736 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 09:00:01,740 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 09:00:01,740 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 09:00:01,751 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 09:00:01,756 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 10:00:00 UTC)" executed successfully 2026-08-03 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 11:00:00 UTC)" (scheduled at 2026-08-03 10:00:00+00:00) 2026-08-03 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-03 10:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 10:00:01,841 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 10:00:01,842 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 10:00:01,846 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 10:00:01,846 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 10:00:01,855 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 10:00:01,861 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 11:00:00 UTC)" executed successfully 2026-08-03 11:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 12:00:00 UTC)" (scheduled at 2026-08-03 11:00:00+00:00) 2026-08-03 11:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-03 11:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 11:00:02,754 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 11:00:02,755 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 11:00:02,759 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 11:00:02,759 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 11:00:02,770 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 11:00:02,776 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 12:00:00 UTC)" executed successfully 2026-08-03 12:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 13:00:00 UTC)" (scheduled at 2026-08-03 12:00:00+00:00) 2026-08-03 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 12:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 12:00:01,198 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 12:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 12:00:01,204 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 12:00:01,204 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 12:00:01,213 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 12:00:01,216 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 13:00:00 UTC)" executed successfully 2026-08-03 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 14:00:00 UTC)" (scheduled at 2026-08-03 13:00:00+00:00) 2026-08-03 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 13:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 13:00:01,618 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 13:00:01,620 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 13:00:01,623 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 13:00:01,624 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 13:00:01,635 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 13:00:01,640 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 14:00:00 UTC)" executed successfully 2026-08-03 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 15:00:00 UTC)" (scheduled at 2026-08-03 14:00:00+00:00) 2026-08-03 14:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-03 14:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 14:00:01,287 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 14:00:01,289 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 14:00:01,293 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 14:00:01,294 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 14:00:01,306 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 14:00:01,312 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 15:00:00 UTC)" executed successfully 2026-08-03 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 16:00:00 UTC)" (scheduled at 2026-08-03 15:00:00+00:00) 2026-08-03 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-03 15:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 15:00:02,098 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 15:00:02,099 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 15:00:02,103 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 15:00:02,103 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 15:00:02,115 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 15:00:02,120 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 16:00:00 UTC)" executed successfully 2026-08-03 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 17:00:00 UTC)" (scheduled at 2026-08-03 16:00:00+00:00) 2026-08-03 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-03 16:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 16:00:01,840 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 16:00:01,842 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 16:00:01,846 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 16:00:01,846 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 16:00:01,855 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 16:00:01,861 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 17:00:00 UTC)" executed successfully 2026-08-03 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 18:00:00 UTC)" (scheduled at 2026-08-03 17:00:00+00:00) 2026-08-03 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-03 17:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 17:00:01,743 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 17:00:01,744 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 17:00:01,748 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 17:00:01,748 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 17:00:01,758 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 17:00:01,763 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 18:00:00 UTC)" executed successfully 2026-08-03 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 19:00:00 UTC)" (scheduled at 2026-08-03 18:00:00+00:00) 2026-08-03 18:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-03 18:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 18:00:01,882 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 18:00:01,884 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 18:00:01,888 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 18:00:01,888 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 18:00:01,903 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 18:00:01,909 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 19:00:00 UTC)" executed successfully 2026-08-03 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 20:00:00 UTC)" (scheduled at 2026-08-03 19:00:00+00:00) 2026-08-03 19:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-03 19:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 19:00:01,150 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 19:00:01,152 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 19:00:01,154 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 19:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 19:00:01,165 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 19:00:01,170 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 20:00:00 UTC)" executed successfully 2026-08-03 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 21:00:00 UTC)" (scheduled at 2026-08-03 20:00:00+00:00) 2026-08-03 20:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-03 20:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 20:00:01,794 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 20:00:01,796 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 20:00:01,799 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 20:00:01,799 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 20:00:01,811 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 20:00:01,817 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 21:00:00 UTC)" executed successfully 2026-08-03 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 22:00:00 UTC)" (scheduled at 2026-08-03 21:00:00+00:00) 2026-08-03 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 21:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 21:00:01,197 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 21:00:01,199 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 21:00:01,202 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 21:00:01,203 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 21:00:01,215 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 21:00:01,220 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 22:00:00 UTC)" executed successfully 2026-08-03 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 23:00:00 UTC)" (scheduled at 2026-08-03 22:00:00+00:00) 2026-08-03 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-03 22:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 22:00:01,223 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 22:00:01,224 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 22:00:01,226 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 22:00:01,226 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 22:00:01,235 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 22:00:01,238 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-03 23:00:00 UTC)" executed successfully 2026-08-03 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 00:00:00 UTC)" (scheduled at 2026-08-03 23:00:00+00:00) 2026-08-03 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-03 23:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-03 23:00:01,297 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-03 23:00:01,299 INFO [fb-sync.worker] Scraped 50 posts 2026-08-03 23:00:01,302 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-03 23:00:01,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-03 23:00:01,314 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-03 23:00:01,319 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 00:00:00 UTC)" executed successfully 2026-08-04 00:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 01:00:00 UTC)" (scheduled at 2026-08-04 00:00:00+00:00) 2026-08-04 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-04 00:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 00:00:01,500 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 00:00:01,502 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 00:00:01,503 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 00:00:01,503 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 00:00:01,516 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 00:00:01,521 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 01:00:00 UTC)" executed successfully 2026-08-04 01:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 02:00:00 UTC)" (scheduled at 2026-08-04 01:00:00+00:00) 2026-08-04 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-04 01:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 01:00:01,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 01:00:01,174 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 01:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 01:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 01:00:01,190 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 01:00:01,194 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 02:00:00 UTC)" executed successfully 2026-08-04 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 03:00:00 UTC)" (scheduled at 2026-08-04 02:00:00+00:00) 2026-08-04 02:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-04 02:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 02:00:01,233 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 02:00:01,234 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 02:00:01,237 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 02:00:01,237 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 02:00:01,247 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 02:00:01,252 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 03:00:00 UTC)" executed successfully 2026-08-04 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 04:00:00 UTC)" (scheduled at 2026-08-04 03:00:00+00:00) 2026-08-04 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-04 03:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 03:00:01,180 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 03:00:01,182 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 03:00:01,184 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 03:00:01,184 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 03:00:01,194 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 03:00:01,199 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 04:00:00 UTC)" executed successfully 2026-08-04 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 05:00:00 UTC)" (scheduled at 2026-08-04 04:00:00+00:00) 2026-08-04 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-04 04:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 04:00:01,393 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 04:00:01,394 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 04:00:01,398 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 04:00:01,399 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 04:00:01,413 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 04:00:01,418 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 05:00:00 UTC)" executed successfully 2026-08-04 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 06:00:00 UTC)" (scheduled at 2026-08-04 05:00:00+00:00) 2026-08-04 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-04 05:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 05:00:01,166 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 05:00:01,168 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 05:00:01,171 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 05:00:01,171 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 05:00:01,180 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 05:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 06:00:00 UTC)" executed successfully 2026-08-04 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 07:00:00 UTC)" (scheduled at 2026-08-04 06:00:00+00:00) 2026-08-04 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-04 06:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 06:00:01,465 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 06:00:01,467 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 06:00:01,470 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 06:00:01,471 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 06:00:01,486 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 06:00:01,493 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 07:00:00 UTC)" executed successfully 2026-08-04 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 08:00:00 UTC)" (scheduled at 2026-08-04 07:00:00+00:00) 2026-08-04 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-04 07:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 07:00:01,112 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 07:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 07:00:01,118 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 07:00:01,118 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 07:00:01,135 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 07:00:01,142 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 08:00:00 UTC)" executed successfully 2026-08-04 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 09:00:00 UTC)" (scheduled at 2026-08-04 08:00:00+00:00) 2026-08-04 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-04 08:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 08:00:01,102 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 08:00:01,103 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 08:00:01,105 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 08:00:01,105 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 08:00:01,116 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 08:00:01,119 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 09:00:00 UTC)" executed successfully 2026-08-04 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 10:00:00 UTC)" (scheduled at 2026-08-04 09:00:00+00:00) 2026-08-04 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-04 09:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 09:00:01,255 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 09:00:01,257 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 09:00:01,260 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 09:00:01,260 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 09:00:01,273 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 09:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 10:00:00 UTC)" executed successfully 2026-08-04 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 11:00:00 UTC)" (scheduled at 2026-08-04 10:00:00+00:00) 2026-08-04 10:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-04 10:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 10:00:01,702 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 10:00:01,703 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 10:00:01,705 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 10:00:01,705 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 10:00:01,714 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 10:00:01,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 11:00:00 UTC)" executed successfully 2026-08-04 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 12:00:00 UTC)" (scheduled at 2026-08-04 11:00:00+00:00) 2026-08-04 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-04 11:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 11:00:01,727 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 11:00:01,729 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 11:00:01,731 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 11:00:01,731 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 11:00:01,745 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 11:00:01,751 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 12:00:00 UTC)" executed successfully 2026-08-04 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 13:00:00 UTC)" (scheduled at 2026-08-04 12:00:00+00:00) 2026-08-04 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-04 12:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 12:00:01,258 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 12:00:01,259 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 12:00:01,262 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 12:00:01,263 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 12:00:01,275 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 12:00:01,281 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 13:00:00 UTC)" executed successfully 2026-08-04 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 14:00:00 UTC)" (scheduled at 2026-08-04 13:00:00+00:00) 2026-08-04 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-04 13:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 13:00:02,348 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 13:00:02,350 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 13:00:02,353 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 13:00:02,354 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 13:00:02,367 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 13:00:02,372 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 14:00:00 UTC)" executed successfully 2026-08-04 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 15:00:00 UTC)" (scheduled at 2026-08-04 14:00:00+00:00) 2026-08-04 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-04 14:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 14:00:01,284 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 14:00:01,287 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 14:00:01,290 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 14:00:01,290 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 14:00:01,306 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 14:00:01,311 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 15:00:00 UTC)" executed successfully 2026-08-04 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 16:00:00 UTC)" (scheduled at 2026-08-04 15:00:00+00:00) 2026-08-04 15:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-04 15:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 15:00:01,753 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 15:00:01,755 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 15:00:01,759 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 15:00:01,759 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 15:00:01,777 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 15:00:01,783 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 16:00:00 UTC)" executed successfully 2026-08-04 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 17:00:00 UTC)" (scheduled at 2026-08-04 16:00:00+00:00) 2026-08-04 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-04 16:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 16:00:01,366 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 16:00:01,367 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 16:00:01,369 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 16:00:01,369 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 16:00:01,378 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 16:00:01,384 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 17:00:00 UTC)" executed successfully 2026-08-04 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 18:00:00 UTC)" (scheduled at 2026-08-04 17:00:00+00:00) 2026-08-04 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-04 17:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 17:00:02,573 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 17:00:02,574 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 17:00:02,577 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 17:00:02,578 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 17:00:02,592 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 17:00:02,599 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 18:00:00 UTC)" executed successfully 2026-08-04 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 19:00:00 UTC)" (scheduled at 2026-08-04 18:00:00+00:00) 2026-08-04 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-04 18:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 18:00:01,268 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 18:00:01,270 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 18:00:01,272 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 18:00:01,272 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 18:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 18:00:01,287 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 19:00:00 UTC)" executed successfully 2026-08-04 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 20:00:00 UTC)" (scheduled at 2026-08-04 19:00:00+00:00) 2026-08-04 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-04 19:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 19:00:01,800 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 19:00:01,802 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 19:00:01,805 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 19:00:01,806 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 19:00:01,828 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 19:00:01,832 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 20:00:00 UTC)" executed successfully 2026-08-04 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 21:00:00 UTC)" (scheduled at 2026-08-04 20:00:00+00:00) 2026-08-04 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-04 20:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 20:00:01,224 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 20:00:01,226 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 20:00:01,229 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 20:00:01,229 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 20:00:01,244 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 20:00:01,251 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 21:00:00 UTC)" executed successfully 2026-08-04 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 22:00:00 UTC)" (scheduled at 2026-08-04 21:00:00+00:00) 2026-08-04 21:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-04 21:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 21:00:01,233 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 21:00:01,234 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 21:00:01,236 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 21:00:01,236 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 21:00:01,247 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 21:00:01,252 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 22:00:00 UTC)" executed successfully 2026-08-04 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 23:00:00 UTC)" (scheduled at 2026-08-04 22:00:00+00:00) 2026-08-04 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-04 22:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 22:00:01,586 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 22:00:01,588 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 22:00:01,591 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 22:00:01,591 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 22:00:01,606 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 22:00:01,613 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-04 23:00:00 UTC)" executed successfully 2026-08-04 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 00:00:00 UTC)" (scheduled at 2026-08-04 23:00:00+00:00) 2026-08-04 23:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-04 23:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-04 23:00:01,128 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-04 23:00:01,130 INFO [fb-sync.worker] Scraped 50 posts 2026-08-04 23:00:01,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-04 23:00:01,133 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-04 23:00:01,147 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-04 23:00:01,155 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 00:00:00 UTC)" executed successfully 2026-08-05 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 01:00:00 UTC)" (scheduled at 2026-08-05 00:00:00+00:00) 2026-08-05 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-05 00:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 00:00:01,536 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 00:00:01,539 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 00:00:01,543 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 00:00:01,544 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 00:00:01,565 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 00:00:01,572 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 01:00:00 UTC)" executed successfully 2026-08-05 01:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 02:00:00 UTC)" (scheduled at 2026-08-05 01:00:00+00:00) 2026-08-05 01:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-05 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 01:00:01,416 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 01:00:01,418 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 01:00:01,422 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 01:00:01,422 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 01:00:01,436 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 01:00:01,442 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 02:00:00 UTC)" executed successfully 2026-08-05 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 03:00:00 UTC)" (scheduled at 2026-08-05 02:00:00+00:00) 2026-08-05 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-05 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 02:00:01,298 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 02:00:01,300 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 02:00:01,303 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 02:00:01,303 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 02:00:01,322 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 02:00:01,329 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 03:00:00 UTC)" executed successfully 2026-08-05 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 04:00:00 UTC)" (scheduled at 2026-08-05 03:00:00+00:00) 2026-08-05 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-05 03:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 03:00:01,742 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 03:00:01,744 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 03:00:01,746 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 03:00:01,746 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 03:00:01,759 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 03:00:01,765 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 04:00:00 UTC)" executed successfully 2026-08-05 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 05:00:00 UTC)" (scheduled at 2026-08-05 04:00:00+00:00) 2026-08-05 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 04:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 04:00:01,717 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 04:00:01,719 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 04:00:01,723 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 04:00:01,723 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 04:00:01,740 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 04:00:01,748 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 05:00:00 UTC)" executed successfully 2026-08-05 05:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 06:00:00 UTC)" (scheduled at 2026-08-05 05:00:00+00:00) 2026-08-05 05:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-05 05:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 05:00:01,451 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 05:00:01,453 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 05:00:01,456 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 05:00:01,457 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 05:00:01,472 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 05:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 06:00:00 UTC)" executed successfully 2026-08-05 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 07:00:00 UTC)" (scheduled at 2026-08-05 06:00:00+00:00) 2026-08-05 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 06:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 06:00:01,303 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 06:00:01,305 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 06:00:01,309 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 06:00:01,309 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 06:00:01,326 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 06:00:01,333 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 07:00:00 UTC)" executed successfully 2026-08-05 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 08:00:00 UTC)" (scheduled at 2026-08-05 07:00:00+00:00) 2026-08-05 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 07:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 07:00:01,175 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 07:00:01,177 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 07:00:01,182 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 07:00:01,182 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 07:00:01,198 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 07:00:01,202 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 08:00:00 UTC)" executed successfully 2026-08-05 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 09:00:00 UTC)" (scheduled at 2026-08-05 08:00:00+00:00) 2026-08-05 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-05 08:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 08:00:02,201 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 08:00:02,203 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 08:00:02,206 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 08:00:02,206 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 08:00:02,221 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 08:00:02,228 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 09:00:00 UTC)" executed successfully 2026-08-05 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 10:00:00 UTC)" (scheduled at 2026-08-05 09:00:00+00:00) 2026-08-05 09:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-05 09:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 09:00:01,627 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 09:00:01,629 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 09:00:01,632 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 09:00:01,632 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 09:00:01,650 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 09:00:01,657 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 10:00:00 UTC)" executed successfully 2026-08-05 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 11:00:00 UTC)" (scheduled at 2026-08-05 10:00:00+00:00) 2026-08-05 10:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-05 10:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 10:00:01,589 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 10:00:01,591 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 10:00:01,594 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 10:00:01,594 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 10:00:01,613 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 10:00:01,622 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 11:00:00 UTC)" executed successfully 2026-08-05 11:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 12:00:00 UTC)" (scheduled at 2026-08-05 11:00:00+00:00) 2026-08-05 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-05 11:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 11:00:01,433 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 11:00:01,435 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 11:00:01,441 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 11:00:01,442 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 11:00:01,466 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 11:00:01,480 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 12:00:00 UTC)" executed successfully 2026-08-05 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 13:00:00 UTC)" (scheduled at 2026-08-05 12:00:00+00:00) 2026-08-05 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-05 12:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 12:00:01,368 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 12:00:01,369 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 12:00:01,372 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 12:00:01,372 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 12:00:01,389 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 12:00:01,397 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 13:00:00 UTC)" executed successfully 2026-08-05 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 14:00:00 UTC)" (scheduled at 2026-08-05 13:00:00+00:00) 2026-08-05 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-05 13:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 13:00:01,345 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 13:00:01,348 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 13:00:01,352 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 13:00:01,353 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 13:00:01,373 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 13:00:01,381 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 14:00:00 UTC)" executed successfully 2026-08-05 14:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 15:00:00 UTC)" (scheduled at 2026-08-05 14:00:00+00:00) 2026-08-05 14:00:00,018 INFO [fb-sync] Starting FB sync... 2026-08-05 14:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 14:00:01,785 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 14:00:01,787 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 14:00:01,790 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 14:00:01,791 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 14:00:01,801 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 14:00:01,807 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 15:00:00 UTC)" executed successfully 2026-08-05 15:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 16:00:00 UTC)" (scheduled at 2026-08-05 15:00:00+00:00) 2026-08-05 15:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 15:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 15:00:01,299 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 15:00:01,300 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 15:00:01,303 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 15:00:01,303 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 15:00:01,320 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 15:00:01,328 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 16:00:00 UTC)" executed successfully 2026-08-05 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 17:00:00 UTC)" (scheduled at 2026-08-05 16:00:00+00:00) 2026-08-05 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 16:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 16:00:01,616 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 16:00:01,618 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 16:00:01,621 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 16:00:01,622 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 16:00:01,642 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 16:00:01,651 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 17:00:00 UTC)" executed successfully 2026-08-05 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 18:00:00 UTC)" (scheduled at 2026-08-05 17:00:00+00:00) 2026-08-05 17:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 17:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 17:00:01,415 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 17:00:01,417 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 17:00:01,420 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 17:00:01,420 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 17:00:01,432 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 17:00:01,437 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 18:00:00 UTC)" executed successfully 2026-08-05 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 19:00:00 UTC)" (scheduled at 2026-08-05 18:00:00+00:00) 2026-08-05 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-05 18:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 18:00:01,221 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 18:00:01,222 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 18:00:01,227 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 18:00:01,228 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 18:00:01,243 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 18:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 19:00:00 UTC)" executed successfully 2026-08-05 19:00:00,016 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 20:00:00 UTC)" (scheduled at 2026-08-05 19:00:00+00:00) 2026-08-05 19:00:00,019 INFO [fb-sync] Starting FB sync... 2026-08-05 19:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 19:00:01,288 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 19:00:01,289 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 19:00:01,291 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 19:00:01,291 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 19:00:01,304 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 19:00:01,309 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 20:00:00 UTC)" executed successfully 2026-08-05 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 21:00:00 UTC)" (scheduled at 2026-08-05 20:00:00+00:00) 2026-08-05 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-05 20:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 20:00:01,304 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 20:00:01,307 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 20:00:01,311 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 20:00:01,312 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 20:00:01,332 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 20:00:01,337 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 21:00:00 UTC)" executed successfully 2026-08-05 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 22:00:00 UTC)" (scheduled at 2026-08-05 21:00:00+00:00) 2026-08-05 21:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-05 21:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 21:00:01,201 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 21:00:01,203 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 21:00:01,206 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 21:00:01,206 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 21:00:01,224 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 21:00:01,232 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 22:00:00 UTC)" executed successfully 2026-08-05 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 23:00:00 UTC)" (scheduled at 2026-08-05 22:00:00+00:00) 2026-08-05 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-05 22:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 22:00:01,200 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 22:00:01,201 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 22:00:01,204 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 22:00:01,205 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 22:00:01,221 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 22:00:01,228 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-05 23:00:00 UTC)" executed successfully 2026-08-05 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 00:00:00 UTC)" (scheduled at 2026-08-05 23:00:00+00:00) 2026-08-05 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-05 23:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-05 23:00:01,836 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-05 23:00:01,838 INFO [fb-sync.worker] Scraped 50 posts 2026-08-05 23:00:01,841 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-05 23:00:01,841 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-05 23:00:01,856 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-05 23:00:01,862 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 00:00:00 UTC)" executed successfully 2026-08-06 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 01:00:00 UTC)" (scheduled at 2026-08-06 00:00:00+00:00) 2026-08-06 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-06 00:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 00:00:01,156 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 00:00:01,158 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 00:00:01,161 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 00:00:01,161 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 00:00:01,177 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 00:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 01:00:00 UTC)" executed successfully 2026-08-06 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 02:00:00 UTC)" (scheduled at 2026-08-06 01:00:00+00:00) 2026-08-06 01:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-06 01:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 01:00:01,218 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 01:00:01,220 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 01:00:01,224 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 01:00:01,224 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 01:00:01,238 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 01:00:01,243 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 02:00:00 UTC)" executed successfully 2026-08-06 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 03:00:00 UTC)" (scheduled at 2026-08-06 02:00:00+00:00) 2026-08-06 02:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-06 02:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 02:00:01,521 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 02:00:01,523 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 02:00:01,526 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 02:00:01,526 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 02:00:01,544 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 02:00:01,554 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 03:00:00 UTC)" executed successfully 2026-08-06 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 04:00:00 UTC)" (scheduled at 2026-08-06 03:00:00+00:00) 2026-08-06 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 03:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 03:00:01,329 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 03:00:01,330 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 03:00:01,332 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 03:00:01,332 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 03:00:01,344 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 03:00:01,348 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 04:00:00 UTC)" executed successfully 2026-08-06 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 05:00:00 UTC)" (scheduled at 2026-08-06 04:00:00+00:00) 2026-08-06 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-06 04:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 04:00:01,507 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 04:00:01,509 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 04:00:01,513 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 04:00:01,513 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 04:00:01,531 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 04:00:01,538 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 05:00:00 UTC)" executed successfully 2026-08-06 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 06:00:00 UTC)" (scheduled at 2026-08-06 05:00:00+00:00) 2026-08-06 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-06 05:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 05:00:01,786 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 05:00:01,788 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 05:00:01,790 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 05:00:01,790 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 05:00:01,812 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 05:00:01,818 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 06:00:00 UTC)" executed successfully 2026-08-06 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 07:00:00 UTC)" (scheduled at 2026-08-06 06:00:00+00:00) 2026-08-06 06:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-06 06:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 06:00:01,597 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 06:00:01,600 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 06:00:01,605 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 06:00:01,606 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 06:00:01,628 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 06:00:01,639 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 07:00:00 UTC)" executed successfully 2026-08-06 07:00:00,015 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 08:00:00 UTC)" (scheduled at 2026-08-06 07:00:00+00:00) 2026-08-06 07:00:00,018 INFO [fb-sync] Starting FB sync... 2026-08-06 07:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 07:00:01,414 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 07:00:01,416 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 07:00:01,419 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 07:00:01,419 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 07:00:01,438 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 07:00:01,445 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 08:00:00 UTC)" executed successfully 2026-08-06 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 09:00:00 UTC)" (scheduled at 2026-08-06 08:00:00+00:00) 2026-08-06 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 08:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 08:00:01,302 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 08:00:01,303 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 08:00:01,310 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 08:00:01,311 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 08:00:01,322 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 08:00:01,327 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 09:00:00 UTC)" executed successfully 2026-08-06 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 10:00:00 UTC)" (scheduled at 2026-08-06 09:00:00+00:00) 2026-08-06 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 09:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 09:00:01,316 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 09:00:01,318 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 09:00:01,321 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 09:00:01,321 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 09:00:01,336 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 09:00:01,341 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 10:00:00 UTC)" executed successfully 2026-08-06 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 11:00:00 UTC)" (scheduled at 2026-08-06 10:00:00+00:00) 2026-08-06 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 10:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 10:00:01,309 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 10:00:01,310 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 10:00:01,313 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 10:00:01,313 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 10:00:01,331 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 10:00:01,339 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 11:00:00 UTC)" executed successfully 2026-08-06 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 12:00:00 UTC)" (scheduled at 2026-08-06 11:00:00+00:00) 2026-08-06 11:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-06 11:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 11:00:01,361 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 11:00:01,363 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 11:00:01,368 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 11:00:01,368 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 11:00:01,391 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 11:00:01,400 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 12:00:00 UTC)" executed successfully 2026-08-06 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 13:00:00 UTC)" (scheduled at 2026-08-06 12:00:00+00:00) 2026-08-06 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 12:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 12:00:01,350 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 12:00:01,352 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 12:00:01,355 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 12:00:01,355 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 12:00:01,370 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 12:00:01,376 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 13:00:00 UTC)" executed successfully 2026-08-06 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 14:00:00 UTC)" (scheduled at 2026-08-06 13:00:00+00:00) 2026-08-06 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 13:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 13:00:01,411 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 13:00:01,414 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 13:00:01,418 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 13:00:01,418 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 13:00:01,437 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 13:00:01,447 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 14:00:00 UTC)" executed successfully 2026-08-06 14:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 15:00:00 UTC)" (scheduled at 2026-08-06 14:00:00+00:00) 2026-08-06 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-06 14:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 14:00:01,907 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 14:00:01,909 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 14:00:01,913 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 14:00:01,913 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 14:00:01,942 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 14:00:01,950 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 15:00:00 UTC)" executed successfully 2026-08-06 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 16:00:00 UTC)" (scheduled at 2026-08-06 15:00:00+00:00) 2026-08-06 15:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-06 15:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 15:00:02,636 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 15:00:02,638 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 15:00:02,641 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 15:00:02,641 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 15:00:02,662 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 15:00:02,668 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 16:00:00 UTC)" executed successfully 2026-08-06 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 17:00:00 UTC)" (scheduled at 2026-08-06 16:00:00+00:00) 2026-08-06 16:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 16:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 16:00:01,355 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 16:00:01,357 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 16:00:01,360 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 16:00:01,360 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 16:00:01,384 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 16:00:01,394 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 17:00:00 UTC)" executed successfully 2026-08-06 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 18:00:00 UTC)" (scheduled at 2026-08-06 17:00:00+00:00) 2026-08-06 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 17:00:00,113 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 17:00:01,635 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 17:00:01,637 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 17:00:01,641 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 17:00:01,642 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 17:00:01,673 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 17:00:01,683 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 18:00:00 UTC)" executed successfully 2026-08-06 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 19:00:00 UTC)" (scheduled at 2026-08-06 18:00:00+00:00) 2026-08-06 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 18:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 18:00:01,341 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 18:00:01,342 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 18:00:01,345 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 18:00:01,346 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 18:00:01,363 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 18:00:01,372 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 19:00:00 UTC)" executed successfully 2026-08-06 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 20:00:00 UTC)" (scheduled at 2026-08-06 19:00:00+00:00) 2026-08-06 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-06 19:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 19:00:01,243 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 19:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 19:00:01,249 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 19:00:01,249 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 19:00:01,264 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 19:00:01,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 20:00:00 UTC)" executed successfully 2026-08-06 20:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 21:00:00 UTC)" (scheduled at 2026-08-06 20:00:00+00:00) 2026-08-06 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 20:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 20:00:01,210 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 20:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 20:00:01,215 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 20:00:01,215 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 20:00:01,231 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 20:00:01,236 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 21:00:00 UTC)" executed successfully 2026-08-06 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 22:00:00 UTC)" (scheduled at 2026-08-06 21:00:00+00:00) 2026-08-06 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-06 21:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 21:00:01,118 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 21:00:01,119 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 21:00:01,122 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 21:00:01,123 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 21:00:01,142 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 21:00:01,147 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 22:00:00 UTC)" executed successfully 2026-08-06 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 23:00:00 UTC)" (scheduled at 2026-08-06 22:00:00+00:00) 2026-08-06 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-06 22:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 22:00:01,241 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 22:00:01,242 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 22:00:01,244 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 22:00:01,244 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 22:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 22:00:01,272 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-06 23:00:00 UTC)" executed successfully 2026-08-06 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 00:00:00 UTC)" (scheduled at 2026-08-06 23:00:00+00:00) 2026-08-06 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-06 23:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-06 23:00:01,243 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-06 23:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-06 23:00:01,247 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-06 23:00:01,247 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-06 23:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-06 23:00:01,273 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 00:00:00 UTC)" executed successfully 2026-08-07 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 01:00:00 UTC)" (scheduled at 2026-08-07 00:00:00+00:00) 2026-08-07 00:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-07 00:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 00:00:01,276 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 00:00:01,277 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 00:00:01,280 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 00:00:01,280 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 00:00:01,296 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 00:00:01,304 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 01:00:00 UTC)" executed successfully 2026-08-07 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 02:00:00 UTC)" (scheduled at 2026-08-07 01:00:00+00:00) 2026-08-07 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-07 01:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 01:00:01,487 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 01:00:01,489 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 01:00:01,492 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 01:00:01,492 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 01:00:01,515 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 01:00:01,527 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 02:00:00 UTC)" executed successfully 2026-08-07 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 03:00:00 UTC)" (scheduled at 2026-08-07 02:00:00+00:00) 2026-08-07 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-07 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 02:00:01,332 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 02:00:01,333 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 02:00:01,335 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 02:00:01,335 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 02:00:01,355 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 02:00:01,362 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 03:00:00 UTC)" executed successfully 2026-08-07 03:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 04:00:00 UTC)" (scheduled at 2026-08-07 03:00:00+00:00) 2026-08-07 03:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-07 03:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 03:00:02,022 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 03:00:02,023 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 03:00:02,026 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 03:00:02,027 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 03:00:02,044 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 03:00:02,053 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 04:00:00 UTC)" executed successfully 2026-08-07 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 05:00:00 UTC)" (scheduled at 2026-08-07 04:00:00+00:00) 2026-08-07 04:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-07 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 04:00:01,287 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 04:00:01,288 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 04:00:01,290 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 04:00:01,290 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 04:00:01,309 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 04:00:01,315 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 05:00:00 UTC)" executed successfully 2026-08-07 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 06:00:00 UTC)" (scheduled at 2026-08-07 05:00:00+00:00) 2026-08-07 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-07 05:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 05:00:01,495 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 05:00:01,497 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 05:00:01,501 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 05:00:01,501 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 05:00:01,524 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 05:00:01,533 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 06:00:00 UTC)" executed successfully 2026-08-07 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 07:00:00 UTC)" (scheduled at 2026-08-07 06:00:00+00:00) 2026-08-07 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-07 06:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 06:00:02,837 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 06:00:02,839 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 06:00:02,842 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 06:00:02,843 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 06:00:02,862 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 06:00:02,872 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 07:00:00 UTC)" executed successfully 2026-08-07 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 08:00:00 UTC)" (scheduled at 2026-08-07 07:00:00+00:00) 2026-08-07 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-07 07:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 07:00:01,290 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 07:00:01,291 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 07:00:01,294 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 07:00:01,294 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 07:00:01,321 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 07:00:01,329 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 08:00:00 UTC)" executed successfully 2026-08-07 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 09:00:00 UTC)" (scheduled at 2026-08-07 08:00:00+00:00) 2026-08-07 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-07 08:00:00,105 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 08:00:01,726 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 08:00:01,728 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 08:00:01,731 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 08:00:01,732 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 08:00:01,754 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 08:00:01,764 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 09:00:00 UTC)" executed successfully 2026-08-07 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 10:00:00 UTC)" (scheduled at 2026-08-07 09:00:00+00:00) 2026-08-07 09:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-07 09:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 09:00:02,770 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 09:00:02,773 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 09:00:02,777 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 09:00:02,777 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 09:00:02,805 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 09:00:02,817 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 10:00:00 UTC)" executed successfully 2026-08-07 10:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 11:00:00 UTC)" (scheduled at 2026-08-07 10:00:00+00:00) 2026-08-07 10:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-07 10:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 10:00:03,429 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 10:00:03,431 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 10:00:03,435 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 10:00:03,436 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 10:00:03,452 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 10:00:03,459 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 11:00:00 UTC)" executed successfully 2026-08-07 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 12:00:00 UTC)" (scheduled at 2026-08-07 11:00:00+00:00) 2026-08-07 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-07 11:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 11:00:02,128 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 11:00:02,129 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 11:00:02,134 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 11:00:02,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 11:00:02,156 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 11:00:02,164 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 12:00:00 UTC)" executed successfully 2026-08-07 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 13:00:00 UTC)" (scheduled at 2026-08-07 12:00:00+00:00) 2026-08-07 12:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-07 12:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 12:00:02,601 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 12:00:02,602 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 12:00:02,605 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 12:00:02,605 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 12:00:02,628 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 12:00:02,636 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 13:00:00 UTC)" executed successfully 2026-08-07 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 14:00:00 UTC)" (scheduled at 2026-08-07 13:00:00+00:00) 2026-08-07 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-07 13:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 13:00:01,607 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 13:00:01,609 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 13:00:01,613 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 13:00:01,613 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 13:00:01,636 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 13:00:01,645 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 14:00:00 UTC)" executed successfully 2026-08-07 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 15:00:00 UTC)" (scheduled at 2026-08-07 14:00:00+00:00) 2026-08-07 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-07 14:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 14:00:02,028 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 14:00:02,028 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 14:00:02,033 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 14:00:02,033 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 14:00:02,055 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 14:00:02,067 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 15:00:00 UTC)" executed successfully 2026-08-07 15:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 16:00:00 UTC)" (scheduled at 2026-08-07 15:00:00+00:00) 2026-08-07 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-07 15:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 15:00:02,118 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 15:00:02,119 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 15:00:02,123 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 15:00:02,124 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 15:00:02,147 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 15:00:02,158 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 16:00:00 UTC)" executed successfully 2026-08-07 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 17:00:00 UTC)" (scheduled at 2026-08-07 16:00:00+00:00) 2026-08-07 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-07 16:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 16:00:01,845 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 16:00:01,847 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 16:00:01,851 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 16:00:01,852 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 16:00:01,879 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 16:00:01,889 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 17:00:00 UTC)" executed successfully 2026-08-07 17:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 18:00:00 UTC)" (scheduled at 2026-08-07 17:00:00+00:00) 2026-08-07 17:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-07 17:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 17:00:02,355 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 17:00:02,356 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 17:00:02,360 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 17:00:02,360 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 17:00:02,384 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 17:00:02,394 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 18:00:00 UTC)" executed successfully 2026-08-07 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 19:00:00 UTC)" (scheduled at 2026-08-07 18:00:00+00:00) 2026-08-07 18:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-07 18:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 18:00:01,723 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 18:00:01,724 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 18:00:01,726 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 18:00:01,727 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 18:00:01,751 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 18:00:01,762 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 19:00:00 UTC)" executed successfully 2026-08-07 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 20:00:00 UTC)" (scheduled at 2026-08-07 19:00:00+00:00) 2026-08-07 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-07 19:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 19:00:01,425 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 19:00:01,427 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 19:00:01,430 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 19:00:01,430 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 19:00:01,454 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 19:00:01,465 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 20:00:00 UTC)" executed successfully 2026-08-07 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 21:00:00 UTC)" (scheduled at 2026-08-07 20:00:00+00:00) 2026-08-07 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-07 20:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 20:00:01,209 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 20:00:01,210 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 20:00:01,214 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 20:00:01,214 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 20:00:01,225 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 20:00:01,231 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 21:00:00 UTC)" executed successfully 2026-08-07 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 22:00:00 UTC)" (scheduled at 2026-08-07 21:00:00+00:00) 2026-08-07 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-07 21:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 21:00:01,256 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 21:00:01,258 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 21:00:01,260 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 21:00:01,260 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 21:00:01,282 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 21:00:01,288 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 22:00:00 UTC)" executed successfully 2026-08-07 22:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 23:00:00 UTC)" (scheduled at 2026-08-07 22:00:00+00:00) 2026-08-07 22:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-07 22:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 22:00:01,235 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 22:00:01,236 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 22:00:01,239 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 22:00:01,239 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 22:00:01,254 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 22:00:01,260 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-07 23:00:00 UTC)" executed successfully 2026-08-07 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 00:00:00 UTC)" (scheduled at 2026-08-07 23:00:00+00:00) 2026-08-07 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-07 23:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-07 23:00:01,468 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-07 23:00:01,470 INFO [fb-sync.worker] Scraped 50 posts 2026-08-07 23:00:01,473 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-07 23:00:01,473 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-07 23:00:01,496 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-07 23:00:01,505 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 00:00:00 UTC)" executed successfully 2026-08-08 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 01:00:00 UTC)" (scheduled at 2026-08-08 00:00:00+00:00) 2026-08-08 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-08 00:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 00:00:01,228 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 00:00:01,229 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 00:00:01,232 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 00:00:01,232 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 00:00:01,245 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 00:00:01,252 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 01:00:00 UTC)" executed successfully 2026-08-08 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 02:00:00 UTC)" (scheduled at 2026-08-08 01:00:00+00:00) 2026-08-08 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-08 01:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 01:00:01,441 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 01:00:01,443 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 01:00:01,446 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 01:00:01,447 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 01:00:01,469 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 01:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 02:00:00 UTC)" executed successfully 2026-08-08 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 03:00:00 UTC)" (scheduled at 2026-08-08 02:00:00+00:00) 2026-08-08 02:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-08 02:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 02:00:01,334 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 02:00:01,336 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 02:00:01,339 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 02:00:01,339 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 02:00:01,355 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 02:00:01,362 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 03:00:00 UTC)" executed successfully 2026-08-08 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 04:00:00 UTC)" (scheduled at 2026-08-08 03:00:00+00:00) 2026-08-08 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-08 03:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 03:00:02,019 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 03:00:02,020 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 03:00:02,023 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 03:00:02,023 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 03:00:02,050 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 03:00:02,058 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 04:00:00 UTC)" executed successfully 2026-08-08 04:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 05:00:00 UTC)" (scheduled at 2026-08-08 04:00:00+00:00) 2026-08-08 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-08 04:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 04:00:01,220 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 04:00:01,221 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 04:00:01,225 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 04:00:01,225 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 04:00:01,246 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 04:00:01,254 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 05:00:00 UTC)" executed successfully 2026-08-08 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 06:00:00 UTC)" (scheduled at 2026-08-08 05:00:00+00:00) 2026-08-08 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-08 05:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 05:00:01,656 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 05:00:01,657 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 05:00:01,661 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 05:00:01,661 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 05:00:01,680 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 05:00:01,690 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 06:00:00 UTC)" executed successfully 2026-08-08 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 07:00:00 UTC)" (scheduled at 2026-08-08 06:00:00+00:00) 2026-08-08 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-08 06:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 06:00:01,776 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 06:00:01,777 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 06:00:01,780 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 06:00:01,781 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 06:00:01,804 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 06:00:01,811 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 07:00:00 UTC)" executed successfully 2026-08-08 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 08:00:00 UTC)" (scheduled at 2026-08-08 07:00:00+00:00) 2026-08-08 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-08 07:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 07:00:01,967 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 07:00:01,969 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 07:00:01,971 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 07:00:01,972 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 07:00:01,996 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 07:00:02,004 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 08:00:00 UTC)" executed successfully 2026-08-08 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 09:00:00 UTC)" (scheduled at 2026-08-08 08:00:00+00:00) 2026-08-08 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-08 08:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 08:00:01,242 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 08:00:01,244 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 08:00:01,247 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 08:00:01,247 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 08:00:01,267 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 08:00:01,275 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 09:00:00 UTC)" executed successfully 2026-08-08 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 10:00:00 UTC)" (scheduled at 2026-08-08 09:00:00+00:00) 2026-08-08 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-08 09:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 09:00:01,309 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 09:00:01,310 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 09:00:01,312 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 09:00:01,312 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 09:00:01,326 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 09:00:01,333 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 10:00:00 UTC)" executed successfully 2026-08-08 10:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 11:00:00 UTC)" (scheduled at 2026-08-08 10:00:00+00:00) 2026-08-08 10:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-08 10:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 10:00:01,224 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 10:00:01,226 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 10:00:01,230 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 10:00:01,231 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 10:00:01,254 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 10:00:01,265 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 11:00:00 UTC)" executed successfully 2026-08-08 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 12:00:00 UTC)" (scheduled at 2026-08-08 11:00:00+00:00) 2026-08-08 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-08 11:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 11:00:01,494 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 11:00:01,496 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 11:00:01,499 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 11:00:01,499 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 11:00:01,520 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 11:00:01,531 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 12:00:00 UTC)" executed successfully 2026-08-08 12:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 13:00:00 UTC)" (scheduled at 2026-08-08 12:00:00+00:00) 2026-08-08 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-08 12:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 12:00:01,807 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 12:00:01,809 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 12:00:01,812 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 12:00:01,812 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 12:00:01,834 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 12:00:01,847 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 13:00:00 UTC)" executed successfully 2026-08-08 13:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 14:00:00 UTC)" (scheduled at 2026-08-08 13:00:00+00:00) 2026-08-08 13:00:00,016 INFO [fb-sync] Starting FB sync... 2026-08-08 13:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 13:00:01,276 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 13:00:01,277 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 13:00:01,281 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 13:00:01,281 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 13:00:01,297 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 13:00:01,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 14:00:00 UTC)" executed successfully 2026-08-08 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 15:00:00 UTC)" (scheduled at 2026-08-08 14:00:00+00:00) 2026-08-08 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-08 14:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 14:00:01,181 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 14:00:01,183 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 14:00:01,186 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 14:00:01,187 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 14:00:01,210 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 14:00:01,218 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 15:00:00 UTC)" executed successfully 2026-08-08 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 16:00:00 UTC)" (scheduled at 2026-08-08 15:00:00+00:00) 2026-08-08 15:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-08 15:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 15:00:01,255 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 15:00:01,256 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 15:00:01,260 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 15:00:01,261 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 15:00:01,285 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 15:00:01,295 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 16:00:00 UTC)" executed successfully 2026-08-08 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 17:00:00 UTC)" (scheduled at 2026-08-08 16:00:00+00:00) 2026-08-08 16:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-08 16:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 16:00:01,244 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 16:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 16:00:01,249 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 16:00:01,249 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 16:00:01,270 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 16:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 17:00:00 UTC)" executed successfully 2026-08-08 17:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 18:00:00 UTC)" (scheduled at 2026-08-08 17:00:00+00:00) 2026-08-08 17:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-08 17:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 17:00:02,463 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 17:00:02,464 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 17:00:02,467 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 17:00:02,467 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 17:00:02,485 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 17:00:02,491 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 18:00:00 UTC)" executed successfully 2026-08-08 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 19:00:00 UTC)" (scheduled at 2026-08-08 18:00:00+00:00) 2026-08-08 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-08 18:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 18:00:01,402 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 18:00:01,404 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 18:00:01,408 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 18:00:01,408 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 18:00:01,428 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 18:00:01,438 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 19:00:00 UTC)" executed successfully 2026-08-08 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 20:00:00 UTC)" (scheduled at 2026-08-08 19:00:00+00:00) 2026-08-08 19:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-08 19:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 19:00:01,309 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 19:00:01,311 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 19:00:01,314 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 19:00:01,314 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 19:00:01,335 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 19:00:01,345 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 20:00:00 UTC)" executed successfully 2026-08-08 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 21:00:00 UTC)" (scheduled at 2026-08-08 20:00:00+00:00) 2026-08-08 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-08 20:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 20:00:01,571 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 20:00:01,574 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 20:00:01,577 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 20:00:01,578 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 20:00:01,603 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 20:00:01,614 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 21:00:00 UTC)" executed successfully 2026-08-08 21:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 22:00:00 UTC)" (scheduled at 2026-08-08 21:00:00+00:00) 2026-08-08 21:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-08 21:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 21:00:01,279 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 21:00:01,281 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 21:00:01,283 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 21:00:01,283 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 21:00:01,299 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 21:00:01,306 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 22:00:00 UTC)" executed successfully 2026-08-08 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 23:00:00 UTC)" (scheduled at 2026-08-08 22:00:00+00:00) 2026-08-08 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-08 22:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 22:00:01,501 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 22:00:01,505 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 22:00:01,508 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 22:00:01,509 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 22:00:01,539 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 22:00:01,551 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-08 23:00:00 UTC)" executed successfully 2026-08-08 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 00:00:00 UTC)" (scheduled at 2026-08-08 23:00:00+00:00) 2026-08-08 23:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-08 23:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-08 23:00:01,171 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-08 23:00:01,173 INFO [fb-sync.worker] Scraped 50 posts 2026-08-08 23:00:01,177 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-08 23:00:01,177 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-08 23:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-08 23:00:01,207 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 00:00:00 UTC)" executed successfully 2026-08-09 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 01:00:00 UTC)" (scheduled at 2026-08-09 00:00:00+00:00) 2026-08-09 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-09 00:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 00:00:01,339 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 00:00:01,342 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 00:00:01,345 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 00:00:01,345 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 00:00:01,369 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 00:00:01,380 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 01:00:00 UTC)" executed successfully 2026-08-09 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 02:00:00 UTC)" (scheduled at 2026-08-09 01:00:00+00:00) 2026-08-09 01:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-09 01:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 01:00:01,777 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 01:00:01,779 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 01:00:01,782 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 01:00:01,782 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 01:00:01,803 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 01:00:01,813 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 02:00:00 UTC)" executed successfully 2026-08-09 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 03:00:00 UTC)" (scheduled at 2026-08-09 02:00:00+00:00) 2026-08-09 02:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-09 02:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 02:00:01,575 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 02:00:01,578 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 02:00:01,581 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 02:00:01,582 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 02:00:01,615 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 02:00:01,629 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 03:00:00 UTC)" executed successfully 2026-08-09 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 04:00:00 UTC)" (scheduled at 2026-08-09 03:00:00+00:00) 2026-08-09 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-09 03:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 03:00:01,096 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 03:00:01,098 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 03:00:01,103 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 03:00:01,103 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 03:00:01,124 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 03:00:01,132 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 04:00:00 UTC)" executed successfully 2026-08-09 04:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 05:00:00 UTC)" (scheduled at 2026-08-09 04:00:00+00:00) 2026-08-09 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-09 04:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 04:00:02,265 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 04:00:02,267 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 04:00:02,270 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 04:00:02,270 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 04:00:02,292 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 04:00:02,301 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 05:00:00 UTC)" executed successfully 2026-08-09 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 06:00:00 UTC)" (scheduled at 2026-08-09 05:00:00+00:00) 2026-08-09 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-09 05:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 05:00:01,262 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 05:00:01,264 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 05:00:01,267 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 05:00:01,268 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 05:00:01,298 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 05:00:01,314 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 06:00:00 UTC)" executed successfully 2026-08-09 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 07:00:00 UTC)" (scheduled at 2026-08-09 06:00:00+00:00) 2026-08-09 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 06:00:00,098 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 06:00:02,280 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 06:00:02,282 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 06:00:02,286 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 06:00:02,286 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 06:00:02,311 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 06:00:02,323 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 07:00:00 UTC)" executed successfully 2026-08-09 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 08:00:00 UTC)" (scheduled at 2026-08-09 07:00:00+00:00) 2026-08-09 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-09 07:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 07:00:00,968 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 07:00:00,970 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 07:00:00,973 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 07:00:00,973 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 07:00:00,995 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 07:00:01,005 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 08:00:00 UTC)" executed successfully 2026-08-09 08:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 09:00:00 UTC)" (scheduled at 2026-08-09 08:00:00+00:00) 2026-08-09 08:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-09 08:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 08:00:01,973 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 08:00:01,976 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 08:00:01,979 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 08:00:01,979 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 08:00:02,005 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 08:00:02,015 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 09:00:00 UTC)" executed successfully 2026-08-09 09:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 10:00:00 UTC)" (scheduled at 2026-08-09 09:00:00+00:00) 2026-08-09 09:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-09 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 09:00:01,057 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 09:00:01,058 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 09:00:01,060 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 09:00:01,060 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 09:00:01,078 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 09:00:01,086 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 10:00:00 UTC)" executed successfully 2026-08-09 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 11:00:00 UTC)" (scheduled at 2026-08-09 10:00:00+00:00) 2026-08-09 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-09 10:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 10:00:01,346 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 10:00:01,348 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 10:00:01,351 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 10:00:01,352 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 10:00:01,377 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 10:00:01,389 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 11:00:00 UTC)" executed successfully 2026-08-09 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 12:00:00 UTC)" (scheduled at 2026-08-09 11:00:00+00:00) 2026-08-09 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 11:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 11:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 11:00:01,115 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 11:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 11:00:01,118 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 11:00:01,134 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 11:00:01,142 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 12:00:00 UTC)" executed successfully 2026-08-09 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 13:00:00 UTC)" (scheduled at 2026-08-09 12:00:00+00:00) 2026-08-09 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-09 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 12:00:01,136 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 12:00:01,138 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 12:00:01,141 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 12:00:01,142 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 12:00:01,167 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 12:00:01,180 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 13:00:00 UTC)" executed successfully 2026-08-09 13:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 14:00:00 UTC)" (scheduled at 2026-08-09 13:00:00+00:00) 2026-08-09 13:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-09 13:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 13:00:01,585 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 13:00:01,586 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 13:00:01,590 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 13:00:01,591 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 13:00:01,624 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 13:00:01,637 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 14:00:00 UTC)" executed successfully 2026-08-09 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 15:00:00 UTC)" (scheduled at 2026-08-09 14:00:00+00:00) 2026-08-09 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 14:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 14:00:01,190 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 14:00:01,191 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 14:00:01,193 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 14:00:01,193 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 14:00:01,211 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 14:00:01,218 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 15:00:00 UTC)" executed successfully 2026-08-09 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 16:00:00 UTC)" (scheduled at 2026-08-09 15:00:00+00:00) 2026-08-09 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 15:00:01,146 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 15:00:01,147 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 15:00:01,149 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 15:00:01,150 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 15:00:01,166 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 15:00:01,174 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 16:00:00 UTC)" executed successfully 2026-08-09 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 17:00:00 UTC)" (scheduled at 2026-08-09 16:00:00+00:00) 2026-08-09 16:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-09 16:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 16:00:01,060 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 16:00:01,063 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 16:00:01,066 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 16:00:01,066 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 16:00:01,086 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 16:00:01,097 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 17:00:00 UTC)" executed successfully 2026-08-09 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 18:00:00 UTC)" (scheduled at 2026-08-09 17:00:00+00:00) 2026-08-09 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 17:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 17:00:01,420 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 17:00:01,423 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 17:00:01,427 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 17:00:01,428 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 17:00:01,453 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 17:00:01,465 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 18:00:00 UTC)" executed successfully 2026-08-09 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 19:00:00 UTC)" (scheduled at 2026-08-09 18:00:00+00:00) 2026-08-09 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-09 18:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 18:00:03,525 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 18:00:03,527 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 18:00:03,529 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 18:00:03,530 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 18:00:03,555 INFO [fb-sync] Sync done: 0 new posts in 4s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 18:00:03,568 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 19:00:00 UTC)" executed successfully 2026-08-09 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 20:00:00 UTC)" (scheduled at 2026-08-09 19:00:00+00:00) 2026-08-09 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-09 19:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 19:00:01,181 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 19:00:01,183 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 19:00:01,186 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 19:00:01,186 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 19:00:01,213 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 19:00:01,223 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 20:00:00 UTC)" executed successfully 2026-08-09 20:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 21:00:00 UTC)" (scheduled at 2026-08-09 20:00:00+00:00) 2026-08-09 20:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-09 20:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 20:00:00,985 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 20:00:00,986 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 20:00:00,989 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 20:00:00,989 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 20:00:01,013 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 20:00:01,026 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 21:00:00 UTC)" executed successfully 2026-08-09 21:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 22:00:00 UTC)" (scheduled at 2026-08-09 21:00:00+00:00) 2026-08-09 21:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-09 21:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 21:00:01,170 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 21:00:01,172 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 21:00:01,174 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 21:00:01,174 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 21:00:01,198 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 21:00:01,208 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 22:00:00 UTC)" executed successfully 2026-08-09 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 23:00:00 UTC)" (scheduled at 2026-08-09 22:00:00+00:00) 2026-08-09 22:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-09 22:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 22:00:02,334 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 22:00:02,337 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 22:00:02,340 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 22:00:02,341 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 22:00:02,368 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 22:00:02,381 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-09 23:00:00 UTC)" executed successfully 2026-08-09 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 00:00:00 UTC)" (scheduled at 2026-08-09 23:00:00+00:00) 2026-08-09 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-09 23:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-09 23:00:02,187 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-09 23:00:02,188 INFO [fb-sync.worker] Scraped 50 posts 2026-08-09 23:00:02,192 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-09 23:00:02,193 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-09 23:00:02,219 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-09 23:00:02,228 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 00:00:00 UTC)" executed successfully 2026-08-10 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 01:00:00 UTC)" (scheduled at 2026-08-10 00:00:00+00:00) 2026-08-10 00:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-10 00:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 00:00:01,501 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 00:00:01,503 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 00:00:01,507 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 00:00:01,507 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 00:00:01,537 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 00:00:01,550 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 01:00:00 UTC)" executed successfully 2026-08-10 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 02:00:00 UTC)" (scheduled at 2026-08-10 01:00:00+00:00) 2026-08-10 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-10 01:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 01:00:01,748 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 01:00:01,750 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 01:00:01,755 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 01:00:01,756 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 01:00:01,782 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 01:00:01,797 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 02:00:00 UTC)" executed successfully 2026-08-10 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 03:00:00 UTC)" (scheduled at 2026-08-10 02:00:00+00:00) 2026-08-10 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-10 02:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 02:00:01,171 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 02:00:01,173 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 02:00:01,177 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 02:00:01,177 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 02:00:01,200 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 02:00:01,206 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 03:00:00 UTC)" executed successfully 2026-08-10 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 04:00:00 UTC)" (scheduled at 2026-08-10 03:00:00+00:00) 2026-08-10 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-10 03:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 03:00:01,187 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 03:00:01,189 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 03:00:01,194 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 03:00:01,194 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 03:00:01,229 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 03:00:01,246 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 04:00:00 UTC)" executed successfully 2026-08-10 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 05:00:00 UTC)" (scheduled at 2026-08-10 04:00:00+00:00) 2026-08-10 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-10 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 04:00:01,192 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 04:00:01,193 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 04:00:01,196 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 04:00:01,196 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 04:00:01,214 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 04:00:01,224 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 05:00:00 UTC)" executed successfully 2026-08-10 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 06:00:00 UTC)" (scheduled at 2026-08-10 05:00:00+00:00) 2026-08-10 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 05:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 05:00:01,887 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 05:00:01,889 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 05:00:01,892 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 05:00:01,892 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 05:00:01,918 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 05:00:01,931 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 06:00:00 UTC)" executed successfully 2026-08-10 06:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 07:00:00 UTC)" (scheduled at 2026-08-10 06:00:00+00:00) 2026-08-10 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-10 06:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 06:00:01,127 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 06:00:01,129 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 06:00:01,131 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 06:00:01,132 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 06:00:01,151 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 06:00:01,158 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 07:00:00 UTC)" executed successfully 2026-08-10 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 08:00:00 UTC)" (scheduled at 2026-08-10 07:00:00+00:00) 2026-08-10 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-10 07:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 07:00:01,857 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 07:00:01,859 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 07:00:01,861 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 07:00:01,862 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 07:00:01,885 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 07:00:01,895 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 08:00:00 UTC)" executed successfully 2026-08-10 08:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 09:00:00 UTC)" (scheduled at 2026-08-10 08:00:00+00:00) 2026-08-10 08:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-10 08:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 08:00:01,630 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 08:00:01,633 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 08:00:01,637 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 08:00:01,638 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 08:00:01,667 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 08:00:01,681 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 09:00:00 UTC)" executed successfully 2026-08-10 09:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 10:00:00 UTC)" (scheduled at 2026-08-10 09:00:00+00:00) 2026-08-10 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-10 09:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 09:00:02,575 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 09:00:02,577 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 09:00:02,579 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 09:00:02,579 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 09:00:02,600 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 09:00:02,607 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 10:00:00 UTC)" executed successfully 2026-08-10 10:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 11:00:00 UTC)" (scheduled at 2026-08-10 10:00:00+00:00) 2026-08-10 10:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-10 10:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 10:00:01,051 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 10:00:01,053 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 10:00:01,059 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 10:00:01,060 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 10:00:01,076 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 10:00:01,083 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 11:00:00 UTC)" executed successfully 2026-08-10 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 12:00:00 UTC)" (scheduled at 2026-08-10 11:00:00+00:00) 2026-08-10 11:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 11:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 11:00:01,307 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 11:00:01,308 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 11:00:01,311 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 11:00:01,311 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 11:00:01,331 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 11:00:01,339 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 12:00:00 UTC)" executed successfully 2026-08-10 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 13:00:00 UTC)" (scheduled at 2026-08-10 12:00:00+00:00) 2026-08-10 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-10 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 12:00:01,085 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 12:00:01,086 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 12:00:01,088 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 12:00:01,088 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 12:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 12:00:01,124 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 13:00:00 UTC)" executed successfully 2026-08-10 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 14:00:00 UTC)" (scheduled at 2026-08-10 13:00:00+00:00) 2026-08-10 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-10 13:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 13:00:01,226 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 13:00:01,227 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 13:00:01,231 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 13:00:01,231 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 13:00:01,260 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 13:00:01,273 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 14:00:00 UTC)" executed successfully 2026-08-10 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 15:00:00 UTC)" (scheduled at 2026-08-10 14:00:00+00:00) 2026-08-10 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 14:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 14:00:01,205 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 14:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 14:00:01,210 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 14:00:01,211 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 14:00:01,237 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 14:00:01,251 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 15:00:00 UTC)" executed successfully 2026-08-10 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 16:00:00 UTC)" (scheduled at 2026-08-10 15:00:00+00:00) 2026-08-10 15:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 15:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 15:00:01,516 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 15:00:01,519 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 15:00:01,522 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 15:00:01,522 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 15:00:01,548 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 15:00:01,558 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 16:00:00 UTC)" executed successfully 2026-08-10 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 17:00:00 UTC)" (scheduled at 2026-08-10 16:00:00+00:00) 2026-08-10 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-10 16:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 16:00:01,164 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 16:00:01,166 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 16:00:01,169 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 16:00:01,169 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 16:00:01,193 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 16:00:01,205 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 17:00:00 UTC)" executed successfully 2026-08-10 17:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 18:00:00 UTC)" (scheduled at 2026-08-10 17:00:00+00:00) 2026-08-10 17:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 17:00:01,681 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 17:00:01,683 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 17:00:01,685 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 17:00:01,685 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 17:00:01,704 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 17:00:01,713 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 18:00:00 UTC)" executed successfully 2026-08-10 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 19:00:00 UTC)" (scheduled at 2026-08-10 18:00:00+00:00) 2026-08-10 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-10 18:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 18:00:01,241 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 18:00:01,243 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 18:00:01,246 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 18:00:01,247 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 18:00:01,285 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 18:00:01,300 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 19:00:00 UTC)" executed successfully 2026-08-10 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 20:00:00 UTC)" (scheduled at 2026-08-10 19:00:00+00:00) 2026-08-10 19:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 19:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 19:00:01,227 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 19:00:01,228 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 19:00:01,231 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 19:00:01,231 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 19:00:01,255 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 19:00:01,267 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 20:00:00 UTC)" executed successfully 2026-08-10 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 21:00:00 UTC)" (scheduled at 2026-08-10 20:00:00+00:00) 2026-08-10 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-10 20:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 20:00:01,110 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 20:00:01,111 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 20:00:01,116 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 20:00:01,116 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 20:00:01,143 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 20:00:01,150 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 21:00:00 UTC)" executed successfully 2026-08-10 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 22:00:00 UTC)" (scheduled at 2026-08-10 21:00:00+00:00) 2026-08-10 21:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-10 21:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 21:00:01,585 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 21:00:01,587 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 21:00:01,591 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 21:00:01,592 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 21:00:01,618 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 21:00:01,629 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 22:00:00 UTC)" executed successfully 2026-08-10 22:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 23:00:00 UTC)" (scheduled at 2026-08-10 22:00:00+00:00) 2026-08-10 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-10 22:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 22:00:02,038 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 22:00:02,040 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 22:00:02,044 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 22:00:02,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 22:00:02,079 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 22:00:02,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-10 23:00:00 UTC)" executed successfully 2026-08-10 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 00:00:00 UTC)" (scheduled at 2026-08-10 23:00:00+00:00) 2026-08-10 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-10 23:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-10 23:00:02,135 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-10 23:00:02,137 INFO [fb-sync.worker] Scraped 50 posts 2026-08-10 23:00:02,141 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-10 23:00:02,141 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-10 23:00:02,164 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-10 23:00:02,176 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 00:00:00 UTC)" executed successfully 2026-08-11 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 01:00:00 UTC)" (scheduled at 2026-08-11 00:00:00+00:00) 2026-08-11 00:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-11 00:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 00:00:01,219 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 00:00:01,221 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 00:00:01,224 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 00:00:01,224 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 00:00:01,250 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 00:00:01,263 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 01:00:00 UTC)" executed successfully 2026-08-11 01:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 02:00:00 UTC)" (scheduled at 2026-08-11 01:00:00+00:00) 2026-08-11 01:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-11 01:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 01:00:01,293 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 01:00:01,295 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 01:00:01,298 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 01:00:01,298 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 01:00:01,332 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 01:00:01,344 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 02:00:00 UTC)" executed successfully 2026-08-11 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 03:00:00 UTC)" (scheduled at 2026-08-11 02:00:00+00:00) 2026-08-11 02:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-11 02:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 02:00:01,080 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 02:00:01,082 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 02:00:01,085 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 02:00:01,086 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 02:00:01,105 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 02:00:01,117 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 03:00:00 UTC)" executed successfully 2026-08-11 03:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 04:00:00 UTC)" (scheduled at 2026-08-11 03:00:00+00:00) 2026-08-11 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-11 03:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 03:00:01,598 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 03:00:01,600 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 03:00:01,605 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 03:00:01,605 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 03:00:01,643 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 03:00:01,657 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 04:00:00 UTC)" executed successfully 2026-08-11 04:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 05:00:00 UTC)" (scheduled at 2026-08-11 04:00:00+00:00) 2026-08-11 04:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-11 04:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 04:00:01,683 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 04:00:01,684 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 04:00:01,688 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 04:00:01,688 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 04:00:01,716 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 04:00:01,729 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 05:00:00 UTC)" executed successfully 2026-08-11 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 06:00:00 UTC)" (scheduled at 2026-08-11 05:00:00+00:00) 2026-08-11 05:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-11 05:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 05:00:01,926 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 05:00:01,928 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 05:00:01,931 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 05:00:01,931 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 05:00:01,960 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 05:00:01,971 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 06:00:00 UTC)" executed successfully 2026-08-11 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 07:00:00 UTC)" (scheduled at 2026-08-11 06:00:00+00:00) 2026-08-11 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 06:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 06:00:01,156 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 06:00:01,158 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 06:00:01,159 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 06:00:01,159 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 06:00:01,179 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 06:00:01,187 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 07:00:00 UTC)" executed successfully 2026-08-11 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 08:00:00 UTC)" (scheduled at 2026-08-11 07:00:00+00:00) 2026-08-11 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-11 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 07:00:01,060 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 07:00:01,062 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 07:00:01,065 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 07:00:01,066 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 07:00:01,096 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 07:00:01,109 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 08:00:00 UTC)" executed successfully 2026-08-11 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 09:00:00 UTC)" (scheduled at 2026-08-11 08:00:00+00:00) 2026-08-11 08:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-11 08:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 08:00:02,535 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 08:00:02,536 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 08:00:02,539 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 08:00:02,539 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 08:00:02,563 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 08:00:02,577 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 09:00:00 UTC)" executed successfully 2026-08-11 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 10:00:00 UTC)" (scheduled at 2026-08-11 09:00:00+00:00) 2026-08-11 09:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 09:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 09:00:01,205 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 09:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 09:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 09:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 09:00:01,232 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 09:00:01,248 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 10:00:00 UTC)" executed successfully 2026-08-11 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 11:00:00 UTC)" (scheduled at 2026-08-11 10:00:00+00:00) 2026-08-11 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-11 10:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 10:00:01,055 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 10:00:01,057 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 10:00:01,059 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 10:00:01,059 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 10:00:01,080 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 10:00:01,087 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 11:00:00 UTC)" executed successfully 2026-08-11 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 12:00:00 UTC)" (scheduled at 2026-08-11 11:00:00+00:00) 2026-08-11 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 11:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 11:00:01,150 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 11:00:01,152 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 11:00:01,155 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 11:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 11:00:01,174 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 11:00:01,435 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 12:00:00 UTC)" executed successfully 2026-08-11 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 13:00:00 UTC)" (scheduled at 2026-08-11 12:00:00+00:00) 2026-08-11 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 12:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 12:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 12:00:01,115 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 12:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 12:00:01,117 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 12:00:01,149 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 12:00:01,163 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 13:00:00 UTC)" executed successfully 2026-08-11 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 14:00:00 UTC)" (scheduled at 2026-08-11 13:00:00+00:00) 2026-08-11 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-11 13:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 13:00:01,236 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 13:00:01,237 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 13:00:01,239 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 13:00:01,239 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 13:00:01,262 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 13:00:01,274 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 14:00:00 UTC)" executed successfully 2026-08-11 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 15:00:00 UTC)" (scheduled at 2026-08-11 14:00:00+00:00) 2026-08-11 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-11 14:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 14:00:01,113 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 14:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 14:00:01,118 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 14:00:01,119 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 14:00:01,151 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 14:00:01,159 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 15:00:00 UTC)" executed successfully 2026-08-11 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 16:00:00 UTC)" (scheduled at 2026-08-11 15:00:00+00:00) 2026-08-11 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-11 15:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 15:00:01,205 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 15:00:01,207 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 15:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 15:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 15:00:01,232 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 15:00:01,239 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 16:00:00 UTC)" executed successfully 2026-08-11 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 17:00:00 UTC)" (scheduled at 2026-08-11 16:00:00+00:00) 2026-08-11 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-11 16:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 16:00:01,197 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 16:00:01,198 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 16:00:01,202 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 16:00:01,202 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 16:00:01,223 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 16:00:01,230 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 17:00:00 UTC)" executed successfully 2026-08-11 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 18:00:00 UTC)" (scheduled at 2026-08-11 17:00:00+00:00) 2026-08-11 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-11 17:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 17:00:01,401 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 17:00:01,402 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 17:00:01,404 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 17:00:01,404 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 17:00:01,426 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 17:00:01,434 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 18:00:00 UTC)" executed successfully 2026-08-11 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 19:00:00 UTC)" (scheduled at 2026-08-11 18:00:00+00:00) 2026-08-11 18:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-11 18:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 18:00:01,174 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 18:00:01,176 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 18:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 18:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 18:00:01,220 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 18:00:01,231 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 19:00:00 UTC)" executed successfully 2026-08-11 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 20:00:00 UTC)" (scheduled at 2026-08-11 19:00:00+00:00) 2026-08-11 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-11 19:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 19:00:01,097 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 19:00:01,099 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 19:00:01,100 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 19:00:01,101 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 19:00:01,124 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 19:00:01,131 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 20:00:00 UTC)" executed successfully 2026-08-11 20:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 21:00:00 UTC)" (scheduled at 2026-08-11 20:00:00+00:00) 2026-08-11 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 20:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 20:00:01,026 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 20:00:01,028 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 20:00:01,031 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 20:00:01,032 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 20:00:01,066 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 20:00:01,077 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 21:00:00 UTC)" executed successfully 2026-08-11 21:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 22:00:00 UTC)" (scheduled at 2026-08-11 21:00:00+00:00) 2026-08-11 21:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-11 21:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 21:00:01,316 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 21:00:01,318 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 21:00:01,321 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 21:00:01,322 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 21:00:01,356 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 21:00:01,370 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 22:00:00 UTC)" executed successfully 2026-08-11 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 23:00:00 UTC)" (scheduled at 2026-08-11 22:00:00+00:00) 2026-08-11 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-11 22:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 22:00:02,603 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 22:00:02,605 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 22:00:02,608 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 22:00:02,609 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 22:00:02,636 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 22:00:02,655 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-11 23:00:00 UTC)" executed successfully 2026-08-11 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 00:00:00 UTC)" (scheduled at 2026-08-11 23:00:00+00:00) 2026-08-11 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-11 23:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-11 23:00:01,282 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-11 23:00:01,283 INFO [fb-sync.worker] Scraped 50 posts 2026-08-11 23:00:01,286 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-11 23:00:01,286 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-11 23:00:01,318 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-11 23:00:01,332 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 00:00:00 UTC)" executed successfully 2026-08-12 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 01:00:00 UTC)" (scheduled at 2026-08-12 00:00:00+00:00) 2026-08-12 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-12 00:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 00:00:01,108 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 00:00:01,110 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 00:00:01,112 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 00:00:01,112 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 00:00:01,133 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 00:00:01,140 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 01:00:00 UTC)" executed successfully 2026-08-12 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 02:00:00 UTC)" (scheduled at 2026-08-12 01:00:00+00:00) 2026-08-12 01:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-12 01:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 01:00:01,238 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 01:00:01,240 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 01:00:01,244 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 01:00:01,244 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 01:00:01,271 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 01:00:01,286 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 02:00:00 UTC)" executed successfully 2026-08-12 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 03:00:00 UTC)" (scheduled at 2026-08-12 02:00:00+00:00) 2026-08-12 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-12 02:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 02:00:01,366 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 02:00:01,368 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 02:00:01,372 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 02:00:01,372 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 02:00:01,403 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 02:00:01,417 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 03:00:00 UTC)" executed successfully 2026-08-12 03:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 04:00:00 UTC)" (scheduled at 2026-08-12 03:00:00+00:00) 2026-08-12 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-12 03:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 03:00:01,239 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 03:00:01,241 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 03:00:01,245 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 03:00:01,245 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 03:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 03:00:01,277 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 04:00:00 UTC)" executed successfully 2026-08-12 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 05:00:00 UTC)" (scheduled at 2026-08-12 04:00:00+00:00) 2026-08-12 04:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-12 04:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 04:00:02,338 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 04:00:02,340 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 04:00:02,343 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 04:00:02,344 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 04:00:02,377 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 04:00:02,393 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 05:00:00 UTC)" executed successfully 2026-08-12 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 06:00:00 UTC)" (scheduled at 2026-08-12 05:00:00+00:00) 2026-08-12 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-12 05:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 05:00:01,688 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 05:00:01,690 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 05:00:01,692 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 05:00:01,692 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 05:00:01,715 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 05:00:01,726 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 06:00:00 UTC)" executed successfully 2026-08-12 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 07:00:00 UTC)" (scheduled at 2026-08-12 06:00:00+00:00) 2026-08-12 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-12 06:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 06:00:01,108 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 06:00:01,109 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 06:00:01,111 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 06:00:01,111 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 06:00:01,141 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 06:00:01,152 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 07:00:00 UTC)" executed successfully 2026-08-12 07:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 08:00:00 UTC)" (scheduled at 2026-08-12 07:00:00+00:00) 2026-08-12 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-12 07:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 07:00:01,673 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 07:00:01,676 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 07:00:01,678 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 07:00:01,678 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 07:00:01,709 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 07:00:01,725 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 08:00:00 UTC)" executed successfully 2026-08-12 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 09:00:00 UTC)" (scheduled at 2026-08-12 08:00:00+00:00) 2026-08-12 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-12 08:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 08:00:01,150 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 08:00:01,152 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 08:00:01,155 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 08:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 08:00:01,181 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 08:00:01,194 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 09:00:00 UTC)" executed successfully 2026-08-12 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 10:00:00 UTC)" (scheduled at 2026-08-12 09:00:00+00:00) 2026-08-12 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-12 09:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 09:00:01,772 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 09:00:01,774 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 09:00:01,777 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 09:00:01,778 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 09:00:01,805 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 09:00:01,815 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 10:00:00 UTC)" executed successfully 2026-08-12 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 11:00:00 UTC)" (scheduled at 2026-08-12 10:00:00+00:00) 2026-08-12 10:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-12 10:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 10:00:01,762 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 10:00:01,764 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 10:00:01,768 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 10:00:01,768 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 10:00:01,805 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 10:00:01,818 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 11:00:00 UTC)" executed successfully 2026-08-12 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 12:00:00 UTC)" (scheduled at 2026-08-12 11:00:00+00:00) 2026-08-12 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-12 11:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 11:00:01,882 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 11:00:01,884 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 11:00:01,886 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 11:00:01,886 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 11:00:01,913 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 11:00:01,922 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 12:00:00 UTC)" executed successfully 2026-08-12 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 13:00:00 UTC)" (scheduled at 2026-08-12 12:00:00+00:00) 2026-08-12 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-12 12:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 12:00:01,683 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 12:00:01,686 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 12:00:01,690 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 12:00:01,691 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 12:00:01,730 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 12:00:01,746 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 13:00:00 UTC)" executed successfully 2026-08-12 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 14:00:00 UTC)" (scheduled at 2026-08-12 13:00:00+00:00) 2026-08-12 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-12 13:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 13:00:01,267 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 13:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 13:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 13:00:01,272 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 13:00:01,308 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 13:00:01,324 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 14:00:00 UTC)" executed successfully 2026-08-12 14:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 15:00:00 UTC)" (scheduled at 2026-08-12 14:00:00+00:00) 2026-08-12 14:00:00,004 INFO [fb-sync] Starting FB sync... 2026-08-12 14:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 14:00:02,324 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 14:00:02,326 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 14:00:02,329 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 14:00:02,329 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 14:00:02,366 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 14:00:02,380 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 15:00:00 UTC)" executed successfully 2026-08-12 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 16:00:00 UTC)" (scheduled at 2026-08-12 15:00:00+00:00) 2026-08-12 15:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-12 15:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 15:00:01,553 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 15:00:01,555 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 15:00:01,559 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 15:00:01,559 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 15:00:01,588 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 15:00:01,598 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 16:00:00 UTC)" executed successfully 2026-08-12 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 17:00:00 UTC)" (scheduled at 2026-08-12 16:00:00+00:00) 2026-08-12 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-12 16:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 16:00:02,058 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 16:00:02,060 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 16:00:02,064 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 16:00:02,064 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 16:00:02,099 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 16:00:02,116 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 17:00:00 UTC)" executed successfully 2026-08-12 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 18:00:00 UTC)" (scheduled at 2026-08-12 17:00:00+00:00) 2026-08-12 17:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-12 17:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 17:00:01,554 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 17:00:01,556 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 17:00:01,560 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 17:00:01,561 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 17:00:01,592 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 17:00:01,609 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 18:00:00 UTC)" executed successfully 2026-08-12 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 19:00:00 UTC)" (scheduled at 2026-08-12 18:00:00+00:00) 2026-08-12 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-12 18:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 18:00:01,289 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 18:00:01,290 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 18:00:01,294 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 18:00:01,294 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 18:00:01,332 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 18:00:01,351 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 19:00:00 UTC)" executed successfully 2026-08-12 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 20:00:00 UTC)" (scheduled at 2026-08-12 19:00:00+00:00) 2026-08-12 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-12 19:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 19:00:03,128 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 19:00:03,130 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 19:00:03,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 19:00:03,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 19:00:03,165 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 19:00:03,176 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 20:00:00 UTC)" executed successfully 2026-08-12 20:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 21:00:00 UTC)" (scheduled at 2026-08-12 20:00:00+00:00) 2026-08-12 20:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-12 20:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 20:00:01,242 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 20:00:01,244 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 20:00:01,248 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 20:00:01,248 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 20:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 20:00:01,298 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 21:00:00 UTC)" executed successfully 2026-08-12 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 22:00:00 UTC)" (scheduled at 2026-08-12 21:00:00+00:00) 2026-08-12 21:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-12 21:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 21:00:01,161 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 21:00:01,162 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 21:00:01,164 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 21:00:01,165 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 21:00:01,190 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 21:00:01,200 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 22:00:00 UTC)" executed successfully 2026-08-12 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 23:00:00 UTC)" (scheduled at 2026-08-12 22:00:00+00:00) 2026-08-12 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-12 22:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 22:00:01,166 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 22:00:01,169 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 22:00:01,172 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 22:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 22:00:01,207 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 22:00:01,222 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-12 23:00:00 UTC)" executed successfully 2026-08-12 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 00:00:00 UTC)" (scheduled at 2026-08-12 23:00:00+00:00) 2026-08-12 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-12 23:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-12 23:00:01,199 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-12 23:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-08-12 23:00:01,203 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-12 23:00:01,203 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-12 23:00:01,235 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-12 23:00:01,244 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 00:00:00 UTC)" executed successfully 2026-08-13 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 01:00:00 UTC)" (scheduled at 2026-08-13 00:00:00+00:00) 2026-08-13 00:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-13 00:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 00:00:01,545 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 00:00:01,547 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 00:00:01,550 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 00:00:01,550 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 00:00:01,580 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 00:00:01,594 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 01:00:00 UTC)" executed successfully 2026-08-13 01:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 02:00:00 UTC)" (scheduled at 2026-08-13 01:00:00+00:00) 2026-08-13 01:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 01:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 01:00:01,212 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 01:00:01,215 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 01:00:01,219 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 01:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 01:00:01,240 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 01:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 02:00:00 UTC)" executed successfully 2026-08-13 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 03:00:00 UTC)" (scheduled at 2026-08-13 02:00:00+00:00) 2026-08-13 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 02:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 02:00:01,025 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 02:00:01,027 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 02:00:01,030 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 02:00:01,031 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 02:00:01,066 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 02:00:01,082 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 03:00:00 UTC)" executed successfully 2026-08-13 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 04:00:00 UTC)" (scheduled at 2026-08-13 03:00:00+00:00) 2026-08-13 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 03:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 03:00:01,131 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 03:00:01,133 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 03:00:01,135 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 03:00:01,135 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 03:00:01,167 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 03:00:01,182 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 04:00:00 UTC)" executed successfully 2026-08-13 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 05:00:00 UTC)" (scheduled at 2026-08-13 04:00:00+00:00) 2026-08-13 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-13 04:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 04:00:01,174 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 04:00:01,177 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 04:00:01,182 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 04:00:01,183 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 04:00:01,237 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 04:00:01,254 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 05:00:00 UTC)" executed successfully 2026-08-13 05:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 06:00:00 UTC)" (scheduled at 2026-08-13 05:00:00+00:00) 2026-08-13 05:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-13 05:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 05:00:01,113 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 05:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 05:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 05:00:01,117 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 05:00:01,139 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 05:00:01,149 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 06:00:00 UTC)" executed successfully 2026-08-13 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 07:00:00 UTC)" (scheduled at 2026-08-13 06:00:00+00:00) 2026-08-13 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-13 06:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 06:00:01,117 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 06:00:01,118 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 06:00:01,120 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 06:00:01,120 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 06:00:01,144 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 06:00:01,160 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 07:00:00 UTC)" executed successfully 2026-08-13 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 08:00:00 UTC)" (scheduled at 2026-08-13 07:00:00+00:00) 2026-08-13 07:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-13 07:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 07:00:00,996 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 07:00:00,998 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 07:00:01,002 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 07:00:01,002 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 07:00:01,042 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 07:00:01,054 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 08:00:00 UTC)" executed successfully 2026-08-13 08:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 09:00:00 UTC)" (scheduled at 2026-08-13 08:00:00+00:00) 2026-08-13 08:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-13 08:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 08:00:01,245 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 08:00:01,246 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 08:00:01,248 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 08:00:01,248 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 08:00:01,270 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 08:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 09:00:00 UTC)" executed successfully 2026-08-13 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 10:00:00 UTC)" (scheduled at 2026-08-13 09:00:00+00:00) 2026-08-13 09:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-13 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 09:00:02,611 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 09:00:02,613 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 09:00:02,617 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 09:00:02,618 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 09:00:02,656 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 09:00:02,672 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 10:00:00 UTC)" executed successfully 2026-08-13 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 11:00:00 UTC)" (scheduled at 2026-08-13 10:00:00+00:00) 2026-08-13 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-13 10:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 10:00:01,633 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 10:00:01,634 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 10:00:01,639 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 10:00:01,639 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 10:00:01,678 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 10:00:01,698 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 11:00:00 UTC)" executed successfully 2026-08-13 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 12:00:00 UTC)" (scheduled at 2026-08-13 11:00:00+00:00) 2026-08-13 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-13 11:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 11:00:01,806 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 11:00:01,808 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 11:00:01,811 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 11:00:01,811 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 11:00:01,836 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 11:00:01,849 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 12:00:00 UTC)" executed successfully 2026-08-13 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 13:00:00 UTC)" (scheduled at 2026-08-13 12:00:00+00:00) 2026-08-13 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 12:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 12:00:01,545 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 12:00:01,547 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 12:00:01,549 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 12:00:01,549 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 12:00:01,576 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 12:00:01,586 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 13:00:00 UTC)" executed successfully 2026-08-13 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 14:00:00 UTC)" (scheduled at 2026-08-13 13:00:00+00:00) 2026-08-13 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 13:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 13:00:01,405 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 13:00:01,407 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 13:00:01,412 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 13:00:01,413 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 13:00:01,441 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 13:00:01,453 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 14:00:00 UTC)" executed successfully 2026-08-13 14:00:00,013 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 15:00:00 UTC)" (scheduled at 2026-08-13 14:00:00+00:00) 2026-08-13 14:00:00,019 INFO [fb-sync] Starting FB sync... 2026-08-13 14:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 14:00:01,237 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 14:00:01,238 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 14:00:01,242 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 14:00:01,242 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 14:00:01,270 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 14:00:01,285 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 15:00:00 UTC)" executed successfully 2026-08-13 15:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 16:00:00 UTC)" (scheduled at 2026-08-13 15:00:00+00:00) 2026-08-13 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 15:00:01,306 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 15:00:01,307 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 15:00:01,309 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 15:00:01,310 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 15:00:01,332 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 15:00:01,341 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 16:00:00 UTC)" executed successfully 2026-08-13 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 17:00:00 UTC)" (scheduled at 2026-08-13 16:00:00+00:00) 2026-08-13 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-13 16:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 16:00:01,632 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 16:00:01,634 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 16:00:01,637 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 16:00:01,637 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 16:00:01,660 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 16:00:01,669 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 17:00:00 UTC)" executed successfully 2026-08-13 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 18:00:00 UTC)" (scheduled at 2026-08-13 17:00:00+00:00) 2026-08-13 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-13 17:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 17:00:01,355 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 17:00:01,359 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 17:00:01,363 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 17:00:01,363 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 17:00:01,412 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 17:00:01,426 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 18:00:00 UTC)" executed successfully 2026-08-13 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 19:00:00 UTC)" (scheduled at 2026-08-13 18:00:00+00:00) 2026-08-13 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-13 18:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 18:00:02,175 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 18:00:02,177 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 18:00:02,181 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 18:00:02,181 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 18:00:02,223 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 18:00:02,242 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 19:00:00 UTC)" executed successfully 2026-08-13 19:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 20:00:00 UTC)" (scheduled at 2026-08-13 19:00:00+00:00) 2026-08-13 19:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-13 19:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 19:00:01,243 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 19:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 19:00:01,248 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 19:00:01,249 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 19:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 19:00:01,296 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 20:00:00 UTC)" executed successfully 2026-08-13 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 21:00:00 UTC)" (scheduled at 2026-08-13 20:00:00+00:00) 2026-08-13 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-13 20:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 20:00:01,138 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 20:00:01,140 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 20:00:01,144 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 20:00:01,145 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 20:00:01,181 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 20:00:01,190 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 21:00:00 UTC)" executed successfully 2026-08-13 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 22:00:00 UTC)" (scheduled at 2026-08-13 21:00:00+00:00) 2026-08-13 21:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-13 21:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 21:00:01,043 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 21:00:01,044 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 21:00:01,047 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 21:00:01,047 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 21:00:01,083 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 21:00:01,095 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 22:00:00 UTC)" executed successfully 2026-08-13 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 23:00:00 UTC)" (scheduled at 2026-08-13 22:00:00+00:00) 2026-08-13 22:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-13 22:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 22:00:01,223 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 22:00:01,225 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 22:00:01,227 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 22:00:01,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 22:00:01,269 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 22:00:01,290 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-13 23:00:00 UTC)" executed successfully 2026-08-13 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 00:00:00 UTC)" (scheduled at 2026-08-13 23:00:00+00:00) 2026-08-13 23:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-13 23:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-13 23:00:01,226 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-13 23:00:01,228 INFO [fb-sync.worker] Scraped 50 posts 2026-08-13 23:00:01,232 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-13 23:00:01,232 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-13 23:00:01,261 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-13 23:00:01,272 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 00:00:00 UTC)" executed successfully 2026-08-14 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 01:00:00 UTC)" (scheduled at 2026-08-14 00:00:00+00:00) 2026-08-14 00:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-14 00:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 00:00:01,623 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 00:00:01,625 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 00:00:01,629 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 00:00:01,629 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 00:00:01,656 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 00:00:01,677 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 01:00:00 UTC)" executed successfully 2026-08-14 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 02:00:00 UTC)" (scheduled at 2026-08-14 01:00:00+00:00) 2026-08-14 01:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-14 01:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 01:00:01,972 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 01:00:01,973 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 01:00:01,977 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 01:00:01,977 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 01:00:02,015 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 01:00:02,031 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 02:00:00 UTC)" executed successfully 2026-08-14 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 03:00:00 UTC)" (scheduled at 2026-08-14 02:00:00+00:00) 2026-08-14 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 02:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 02:00:01,279 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 02:00:01,281 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 02:00:01,284 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 02:00:01,285 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 02:00:01,318 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 02:00:01,337 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 03:00:00 UTC)" executed successfully 2026-08-14 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 04:00:00 UTC)" (scheduled at 2026-08-14 03:00:00+00:00) 2026-08-14 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 03:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 03:00:01,239 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 03:00:01,240 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 03:00:01,243 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 03:00:01,243 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 03:00:01,279 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 03:00:01,293 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 04:00:00 UTC)" executed successfully 2026-08-14 04:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 05:00:00 UTC)" (scheduled at 2026-08-14 04:00:00+00:00) 2026-08-14 04:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-14 04:00:00,061 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 04:00:01,111 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 04:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 04:00:01,116 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 04:00:01,116 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 04:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 04:00:01,151 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 05:00:00 UTC)" executed successfully 2026-08-14 05:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 06:00:00 UTC)" (scheduled at 2026-08-14 05:00:00+00:00) 2026-08-14 05:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-14 05:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 05:00:01,061 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 05:00:01,063 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 05:00:01,066 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 05:00:01,067 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 05:00:01,102 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 05:00:01,120 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 06:00:00 UTC)" executed successfully 2026-08-14 06:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 07:00:00 UTC)" (scheduled at 2026-08-14 06:00:00+00:00) 2026-08-14 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-14 06:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 06:00:01,031 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 06:00:01,033 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 06:00:01,037 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 06:00:01,037 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 06:00:01,075 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 06:00:01,088 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 07:00:00 UTC)" executed successfully 2026-08-14 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 08:00:00 UTC)" (scheduled at 2026-08-14 07:00:00+00:00) 2026-08-14 07:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-14 07:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 07:00:01,298 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 07:00:01,300 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 07:00:01,303 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 07:00:01,304 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 07:00:01,338 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 07:00:01,355 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 08:00:00 UTC)" executed successfully 2026-08-14 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 09:00:00 UTC)" (scheduled at 2026-08-14 08:00:00+00:00) 2026-08-14 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 08:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 08:00:01,148 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 08:00:01,150 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 08:00:01,152 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 08:00:01,153 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 08:00:01,184 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 08:00:01,202 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 09:00:00 UTC)" executed successfully 2026-08-14 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 10:00:00 UTC)" (scheduled at 2026-08-14 09:00:00+00:00) 2026-08-14 09:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 09:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 09:00:01,278 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 09:00:01,279 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 09:00:01,283 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 09:00:01,283 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 09:00:01,308 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 09:00:01,319 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 10:00:00 UTC)" executed successfully 2026-08-14 10:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 11:00:00 UTC)" (scheduled at 2026-08-14 10:00:00+00:00) 2026-08-14 10:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-14 10:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 10:00:01,209 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 10:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 10:00:01,214 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 10:00:01,214 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 10:00:01,233 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 10:00:01,245 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 11:00:00 UTC)" executed successfully 2026-08-14 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 12:00:00 UTC)" (scheduled at 2026-08-14 11:00:00+00:00) 2026-08-14 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-14 11:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 11:00:01,807 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 11:00:01,808 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 11:00:01,811 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 11:00:01,814 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 11:00:01,851 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 11:00:01,868 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 12:00:00 UTC)" executed successfully 2026-08-14 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 13:00:00 UTC)" (scheduled at 2026-08-14 12:00:00+00:00) 2026-08-14 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 12:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 12:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 12:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 12:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 12:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 12:00:01,242 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 12:00:01,257 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 13:00:00 UTC)" executed successfully 2026-08-14 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 14:00:00 UTC)" (scheduled at 2026-08-14 13:00:00+00:00) 2026-08-14 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-14 13:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 13:00:01,314 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 13:00:01,315 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 13:00:01,319 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 13:00:01,319 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 13:00:01,347 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 13:00:01,355 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 14:00:00 UTC)" executed successfully 2026-08-14 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 15:00:00 UTC)" (scheduled at 2026-08-14 14:00:00+00:00) 2026-08-14 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-14 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 14:00:01,272 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 14:00:01,273 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 14:00:01,276 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 14:00:01,277 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 14:00:01,310 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 14:00:01,325 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 15:00:00 UTC)" executed successfully 2026-08-14 15:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 16:00:00 UTC)" (scheduled at 2026-08-14 15:00:00+00:00) 2026-08-14 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-14 15:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 15:00:01,348 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 15:00:01,350 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 15:00:01,354 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 15:00:01,354 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 15:00:01,395 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 15:00:01,414 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 16:00:00 UTC)" executed successfully 2026-08-14 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 17:00:00 UTC)" (scheduled at 2026-08-14 16:00:00+00:00) 2026-08-14 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 16:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 16:00:01,378 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 16:00:01,380 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 16:00:01,384 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 16:00:01,384 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 16:00:01,422 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 16:00:01,438 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 17:00:00 UTC)" executed successfully 2026-08-14 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 18:00:00 UTC)" (scheduled at 2026-08-14 17:00:00+00:00) 2026-08-14 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-14 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 17:00:01,320 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 17:00:01,322 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 17:00:01,325 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 17:00:01,326 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 17:00:01,366 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 17:00:01,388 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 18:00:00 UTC)" executed successfully 2026-08-14 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 19:00:00 UTC)" (scheduled at 2026-08-14 18:00:00+00:00) 2026-08-14 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 18:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 18:00:02,458 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 18:00:02,460 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 18:00:02,463 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 18:00:02,464 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 18:00:02,506 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 18:00:02,524 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 19:00:00 UTC)" executed successfully 2026-08-14 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 20:00:00 UTC)" (scheduled at 2026-08-14 19:00:00+00:00) 2026-08-14 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-14 19:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 19:00:01,239 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 19:00:01,241 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 19:00:01,244 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 19:00:01,245 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 19:00:01,275 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 19:00:01,289 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 20:00:00 UTC)" executed successfully 2026-08-14 20:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 21:00:00 UTC)" (scheduled at 2026-08-14 20:00:00+00:00) 2026-08-14 20:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-14 20:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 20:00:01,627 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 20:00:01,629 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 20:00:01,633 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 20:00:01,633 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 20:00:01,678 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 20:00:01,701 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 21:00:00 UTC)" executed successfully 2026-08-14 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 22:00:00 UTC)" (scheduled at 2026-08-14 21:00:00+00:00) 2026-08-14 21:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-14 21:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 21:00:01,039 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 21:00:01,041 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 21:00:01,045 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 21:00:01,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 21:00:01,084 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 21:00:01,102 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 22:00:00 UTC)" executed successfully 2026-08-14 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 23:00:00 UTC)" (scheduled at 2026-08-14 22:00:00+00:00) 2026-08-14 22:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-14 22:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 22:00:01,063 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 22:00:01,065 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 22:00:01,067 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 22:00:01,067 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 22:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 22:00:01,155 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-14 23:00:00 UTC)" executed successfully 2026-08-14 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 00:00:00 UTC)" (scheduled at 2026-08-14 23:00:00+00:00) 2026-08-14 23:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-14 23:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-14 23:00:01,095 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-14 23:00:01,097 INFO [fb-sync.worker] Scraped 50 posts 2026-08-14 23:00:01,101 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-14 23:00:01,101 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-14 23:00:01,131 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-14 23:00:01,147 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 00:00:00 UTC)" executed successfully 2026-08-15 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 01:00:00 UTC)" (scheduled at 2026-08-15 00:00:00+00:00) 2026-08-15 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-15 00:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 00:00:01,130 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 00:00:01,132 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 00:00:01,136 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 00:00:01,137 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 00:00:01,169 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 00:00:01,182 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 01:00:00 UTC)" executed successfully 2026-08-15 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 02:00:00 UTC)" (scheduled at 2026-08-15 01:00:00+00:00) 2026-08-15 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-15 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 01:00:00,976 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 01:00:00,977 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 01:00:00,980 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 01:00:00,980 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 01:00:01,006 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 01:00:01,023 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 02:00:00 UTC)" executed successfully 2026-08-15 02:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 03:00:00 UTC)" (scheduled at 2026-08-15 02:00:00+00:00) 2026-08-15 02:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-15 02:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 02:00:01,384 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 02:00:01,386 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 02:00:01,389 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 02:00:01,389 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 02:00:01,424 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 02:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 03:00:00 UTC)" executed successfully 2026-08-15 03:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 04:00:00 UTC)" (scheduled at 2026-08-15 03:00:00+00:00) 2026-08-15 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-15 03:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 03:00:01,318 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 03:00:01,320 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 03:00:01,324 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 03:00:01,324 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 03:00:01,368 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 03:00:01,384 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 04:00:00 UTC)" executed successfully 2026-08-15 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 05:00:00 UTC)" (scheduled at 2026-08-15 04:00:00+00:00) 2026-08-15 04:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-15 04:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 04:00:01,242 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 04:00:01,243 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 04:00:01,245 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 04:00:01,245 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 04:00:01,289 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 04:00:01,314 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 05:00:00 UTC)" executed successfully 2026-08-15 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 06:00:00 UTC)" (scheduled at 2026-08-15 05:00:00+00:00) 2026-08-15 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-15 05:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 05:00:01,252 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 05:00:01,254 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 05:00:01,260 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 05:00:01,260 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 05:00:01,320 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 05:00:01,347 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 06:00:00 UTC)" executed successfully 2026-08-15 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 07:00:00 UTC)" (scheduled at 2026-08-15 06:00:00+00:00) 2026-08-15 06:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-15 06:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 06:00:01,141 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 06:00:01,142 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 06:00:01,145 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 06:00:01,145 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 06:00:01,185 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 06:00:01,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 07:00:00 UTC)" executed successfully 2026-08-15 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 08:00:00 UTC)" (scheduled at 2026-08-15 07:00:00+00:00) 2026-08-15 07:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-15 07:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 07:00:01,154 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 07:00:01,156 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 07:00:01,161 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 07:00:01,162 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 07:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 07:00:01,214 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 08:00:00 UTC)" executed successfully 2026-08-15 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 09:00:00 UTC)" (scheduled at 2026-08-15 08:00:00+00:00) 2026-08-15 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-15 08:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 08:00:01,773 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 08:00:01,775 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 08:00:01,779 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 08:00:01,780 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 08:00:01,827 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 08:00:01,854 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 09:00:00 UTC)" executed successfully 2026-08-15 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 10:00:00 UTC)" (scheduled at 2026-08-15 09:00:00+00:00) 2026-08-15 09:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-15 09:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 09:00:01,296 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 09:00:01,298 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 09:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 09:00:01,300 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 09:00:01,338 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 09:00:01,357 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 10:00:00 UTC)" executed successfully 2026-08-15 10:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 11:00:00 UTC)" (scheduled at 2026-08-15 10:00:00+00:00) 2026-08-15 10:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-15 10:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 10:00:01,283 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 10:00:01,285 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 10:00:01,289 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 10:00:01,290 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 10:00:01,331 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 10:00:01,349 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 11:00:00 UTC)" executed successfully 2026-08-15 11:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 12:00:00 UTC)" (scheduled at 2026-08-15 11:00:00+00:00) 2026-08-15 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-15 11:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 11:00:01,476 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 11:00:01,480 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 11:00:01,483 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 11:00:01,484 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 11:00:01,527 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 11:00:01,545 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 12:00:00 UTC)" executed successfully 2026-08-15 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 13:00:00 UTC)" (scheduled at 2026-08-15 12:00:00+00:00) 2026-08-15 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-15 12:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 12:00:01,142 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 12:00:01,144 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 12:00:01,148 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 12:00:01,148 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 12:00:01,174 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 12:00:01,185 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 13:00:00 UTC)" executed successfully 2026-08-15 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 14:00:00 UTC)" (scheduled at 2026-08-15 13:00:00+00:00) 2026-08-15 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-15 13:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 13:00:01,202 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 13:00:01,204 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 13:00:01,206 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 13:00:01,207 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 13:00:01,243 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 13:00:01,260 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 14:00:00 UTC)" executed successfully 2026-08-15 14:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 15:00:00 UTC)" (scheduled at 2026-08-15 14:00:00+00:00) 2026-08-15 14:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-15 14:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 14:00:01,256 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 14:00:01,258 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 14:00:01,261 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 14:00:01,261 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 14:00:01,300 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 14:00:01,319 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 15:00:00 UTC)" executed successfully 2026-08-15 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 16:00:00 UTC)" (scheduled at 2026-08-15 15:00:00+00:00) 2026-08-15 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-15 15:00:00,101 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 15:00:02,271 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 15:00:02,272 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 15:00:02,274 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 15:00:02,274 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 15:00:02,311 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 15:00:02,327 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 16:00:00 UTC)" executed successfully 2026-08-15 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 17:00:00 UTC)" (scheduled at 2026-08-15 16:00:00+00:00) 2026-08-15 16:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-15 16:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 16:00:01,292 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 16:00:01,294 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 16:00:01,296 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 16:00:01,296 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 16:00:01,318 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 16:00:01,333 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 17:00:00 UTC)" executed successfully 2026-08-15 17:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 18:00:00 UTC)" (scheduled at 2026-08-15 17:00:00+00:00) 2026-08-15 17:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-15 17:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 17:00:01,315 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 17:00:01,316 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 17:00:01,319 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 17:00:01,320 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 17:00:01,356 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 17:00:01,378 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 18:00:00 UTC)" executed successfully 2026-08-15 18:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 19:00:00 UTC)" (scheduled at 2026-08-15 18:00:00+00:00) 2026-08-15 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-15 18:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 18:00:01,405 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 18:00:01,407 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 18:00:01,410 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 18:00:01,410 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 18:00:01,446 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 18:00:01,462 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 19:00:00 UTC)" executed successfully 2026-08-15 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 20:00:00 UTC)" (scheduled at 2026-08-15 19:00:00+00:00) 2026-08-15 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-15 19:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 19:00:01,398 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 19:00:01,400 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 19:00:01,403 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 19:00:01,403 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 19:00:01,431 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 19:00:01,443 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 20:00:00 UTC)" executed successfully 2026-08-15 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 21:00:00 UTC)" (scheduled at 2026-08-15 20:00:00+00:00) 2026-08-15 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-15 20:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 20:00:01,162 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 20:00:01,163 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 20:00:01,167 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 20:00:01,167 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 20:00:01,202 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 20:00:01,219 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 21:00:00 UTC)" executed successfully 2026-08-15 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 22:00:00 UTC)" (scheduled at 2026-08-15 21:00:00+00:00) 2026-08-15 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-15 21:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 21:00:01,181 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 21:00:01,182 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 21:00:01,184 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 21:00:01,184 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 21:00:01,221 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 21:00:01,239 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 22:00:00 UTC)" executed successfully 2026-08-15 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 23:00:00 UTC)" (scheduled at 2026-08-15 22:00:00+00:00) 2026-08-15 22:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-15 22:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 22:00:02,443 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 22:00:02,445 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 22:00:02,449 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 22:00:02,449 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 22:00:02,494 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 22:00:02,516 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-15 23:00:00 UTC)" executed successfully 2026-08-15 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 00:00:00 UTC)" (scheduled at 2026-08-15 23:00:00+00:00) 2026-08-15 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-15 23:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-15 23:00:02,162 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-15 23:00:02,164 INFO [fb-sync.worker] Scraped 50 posts 2026-08-15 23:00:02,166 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-15 23:00:02,166 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-15 23:00:02,199 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-15 23:00:02,215 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 00:00:00 UTC)" executed successfully 2026-08-16 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 01:00:00 UTC)" (scheduled at 2026-08-16 00:00:00+00:00) 2026-08-16 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 00:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 00:00:01,181 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 00:00:01,183 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 00:00:01,188 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 00:00:01,189 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 00:00:01,252 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 00:00:01,280 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 01:00:00 UTC)" executed successfully 2026-08-16 01:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 02:00:00 UTC)" (scheduled at 2026-08-16 01:00:00+00:00) 2026-08-16 01:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-16 01:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 01:00:01,058 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 01:00:01,060 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 01:00:01,062 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 01:00:01,063 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 01:00:01,099 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 01:00:01,112 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 02:00:00 UTC)" executed successfully 2026-08-16 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 03:00:00 UTC)" (scheduled at 2026-08-16 02:00:00+00:00) 2026-08-16 02:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-16 02:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 02:00:01,255 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 02:00:01,256 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 02:00:01,258 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 02:00:01,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 02:00:01,285 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 02:00:01,299 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 03:00:00 UTC)" executed successfully 2026-08-16 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 04:00:00 UTC)" (scheduled at 2026-08-16 03:00:00+00:00) 2026-08-16 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 03:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 03:00:01,082 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 03:00:01,084 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 03:00:01,087 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 03:00:01,087 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 03:00:01,132 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 03:00:01,153 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 04:00:00 UTC)" executed successfully 2026-08-16 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 05:00:00 UTC)" (scheduled at 2026-08-16 04:00:00+00:00) 2026-08-16 04:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-16 04:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 04:00:01,159 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 04:00:01,161 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 04:00:01,164 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 04:00:01,164 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 04:00:01,202 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 04:00:01,221 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 05:00:00 UTC)" executed successfully 2026-08-16 05:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 06:00:00 UTC)" (scheduled at 2026-08-16 05:00:00+00:00) 2026-08-16 05:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-16 05:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 05:00:01,921 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 05:00:01,923 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 05:00:01,927 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 05:00:01,927 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 05:00:01,967 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 05:00:01,985 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 06:00:00 UTC)" executed successfully 2026-08-16 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 07:00:00 UTC)" (scheduled at 2026-08-16 06:00:00+00:00) 2026-08-16 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-16 06:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 06:00:01,421 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 06:00:01,423 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 06:00:01,426 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 06:00:01,426 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 06:00:01,463 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 06:00:01,480 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 07:00:00 UTC)" executed successfully 2026-08-16 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 08:00:00 UTC)" (scheduled at 2026-08-16 07:00:00+00:00) 2026-08-16 07:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-16 07:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 07:00:01,660 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 07:00:01,662 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 07:00:01,664 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 07:00:01,664 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 07:00:01,702 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 07:00:01,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 08:00:00 UTC)" executed successfully 2026-08-16 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 09:00:00 UTC)" (scheduled at 2026-08-16 08:00:00+00:00) 2026-08-16 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 08:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 08:00:01,109 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 08:00:01,111 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 08:00:01,114 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 08:00:01,114 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 08:00:01,156 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 08:00:01,176 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 09:00:00 UTC)" executed successfully 2026-08-16 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 10:00:00 UTC)" (scheduled at 2026-08-16 09:00:00+00:00) 2026-08-16 09:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-16 09:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 09:00:01,237 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 09:00:01,239 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 09:00:01,243 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 09:00:01,243 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 09:00:01,284 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 09:00:01,295 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 10:00:00 UTC)" executed successfully 2026-08-16 10:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 11:00:00 UTC)" (scheduled at 2026-08-16 10:00:00+00:00) 2026-08-16 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 10:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 10:00:02,183 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 10:00:02,185 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 10:00:02,189 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 10:00:02,189 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 10:00:02,234 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 10:00:02,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 11:00:00 UTC)" executed successfully 2026-08-16 11:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 12:00:00 UTC)" (scheduled at 2026-08-16 11:00:00+00:00) 2026-08-16 11:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-16 11:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 11:00:01,371 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 11:00:01,372 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 11:00:01,374 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 11:00:01,374 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 11:00:01,399 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 11:00:01,408 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 12:00:00 UTC)" executed successfully 2026-08-16 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 13:00:00 UTC)" (scheduled at 2026-08-16 12:00:00+00:00) 2026-08-16 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-16 12:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 12:00:01,297 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 12:00:01,298 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 12:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 12:00:01,300 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 12:00:01,332 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 12:00:01,349 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 13:00:00 UTC)" executed successfully 2026-08-16 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 14:00:00 UTC)" (scheduled at 2026-08-16 13:00:00+00:00) 2026-08-16 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-16 13:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 13:00:01,155 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 13:00:01,156 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 13:00:01,160 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 13:00:01,160 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 13:00:01,191 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 13:00:01,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 14:00:00 UTC)" executed successfully 2026-08-16 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 15:00:00 UTC)" (scheduled at 2026-08-16 14:00:00+00:00) 2026-08-16 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-16 14:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 14:00:01,297 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 14:00:01,299 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 14:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 14:00:01,300 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 14:00:01,326 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 14:00:01,338 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 15:00:00 UTC)" executed successfully 2026-08-16 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 16:00:00 UTC)" (scheduled at 2026-08-16 15:00:00+00:00) 2026-08-16 15:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-16 15:00:00,062 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 15:00:01,205 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 15:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 15:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 15:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 15:00:01,236 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 15:00:01,246 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 16:00:00 UTC)" executed successfully 2026-08-16 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 17:00:00 UTC)" (scheduled at 2026-08-16 16:00:00+00:00) 2026-08-16 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-16 16:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 16:00:01,263 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 16:00:01,264 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 16:00:01,267 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 16:00:01,268 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 16:00:01,307 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 16:00:01,326 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 17:00:00 UTC)" executed successfully 2026-08-16 17:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 18:00:00 UTC)" (scheduled at 2026-08-16 17:00:00+00:00) 2026-08-16 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 17:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 17:00:01,406 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 17:00:01,407 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 17:00:01,410 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 17:00:01,410 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 17:00:01,446 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 17:00:01,467 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 18:00:00 UTC)" executed successfully 2026-08-16 18:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 19:00:00 UTC)" (scheduled at 2026-08-16 18:00:00+00:00) 2026-08-16 18:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-16 18:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 18:00:01,214 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 18:00:01,216 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 18:00:01,220 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 18:00:01,221 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 18:00:01,255 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 18:00:01,270 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 19:00:00 UTC)" executed successfully 2026-08-16 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 20:00:00 UTC)" (scheduled at 2026-08-16 19:00:00+00:00) 2026-08-16 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-16 19:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 19:00:01,437 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 19:00:01,439 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 19:00:01,441 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 19:00:01,441 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 19:00:01,474 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 19:00:01,490 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 20:00:00 UTC)" executed successfully 2026-08-16 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 21:00:00 UTC)" (scheduled at 2026-08-16 20:00:00+00:00) 2026-08-16 20:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-16 20:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 20:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 20:00:01,267 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 20:00:01,269 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 20:00:01,270 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 20:00:01,300 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 20:00:01,312 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 21:00:00 UTC)" executed successfully 2026-08-16 21:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 22:00:00 UTC)" (scheduled at 2026-08-16 21:00:00+00:00) 2026-08-16 21:00:00,004 INFO [fb-sync] Starting FB sync... 2026-08-16 21:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 21:00:01,091 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 21:00:01,092 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 21:00:01,096 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 21:00:01,096 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 21:00:01,126 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 21:00:01,143 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 22:00:00 UTC)" executed successfully 2026-08-16 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 23:00:00 UTC)" (scheduled at 2026-08-16 22:00:00+00:00) 2026-08-16 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-16 22:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 22:00:01,133 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 22:00:01,135 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 22:00:01,138 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 22:00:01,139 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 22:00:01,176 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 22:00:01,195 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-16 23:00:00 UTC)" executed successfully 2026-08-16 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 00:00:00 UTC)" (scheduled at 2026-08-16 23:00:00+00:00) 2026-08-16 23:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-16 23:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-16 23:00:01,001 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-16 23:00:01,002 INFO [fb-sync.worker] Scraped 50 posts 2026-08-16 23:00:01,006 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-16 23:00:01,006 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-16 23:00:01,029 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-16 23:00:01,045 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 00:00:00 UTC)" executed successfully 2026-08-17 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 01:00:00 UTC)" (scheduled at 2026-08-17 00:00:00+00:00) 2026-08-17 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-17 00:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 00:00:01,163 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 00:00:01,164 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 00:00:01,167 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 00:00:01,168 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 00:00:01,192 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 00:00:01,203 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 01:00:00 UTC)" executed successfully 2026-08-17 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 02:00:00 UTC)" (scheduled at 2026-08-17 01:00:00+00:00) 2026-08-17 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-17 01:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 01:00:01,042 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 01:00:01,044 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 01:00:01,048 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 01:00:01,048 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 01:00:01,088 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 01:00:01,104 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 02:00:00 UTC)" executed successfully 2026-08-17 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 03:00:00 UTC)" (scheduled at 2026-08-17 02:00:00+00:00) 2026-08-17 02:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-17 02:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 02:00:01,367 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 02:00:01,369 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 02:00:01,370 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 02:00:01,370 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 02:00:01,396 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 02:00:01,411 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 03:00:00 UTC)" executed successfully 2026-08-17 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 04:00:00 UTC)" (scheduled at 2026-08-17 03:00:00+00:00) 2026-08-17 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-17 03:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 03:00:01,032 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 03:00:01,034 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 03:00:01,037 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 03:00:01,037 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 03:00:01,074 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 03:00:01,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 04:00:00 UTC)" executed successfully 2026-08-17 04:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 05:00:00 UTC)" (scheduled at 2026-08-17 04:00:00+00:00) 2026-08-17 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-17 04:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 04:00:02,574 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 04:00:02,576 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 04:00:02,580 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 04:00:02,580 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 04:00:02,622 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 04:00:02,642 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 05:00:00 UTC)" executed successfully 2026-08-17 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 06:00:00 UTC)" (scheduled at 2026-08-17 05:00:00+00:00) 2026-08-17 05:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-17 05:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 05:00:01,009 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 05:00:01,010 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 05:00:01,014 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 05:00:01,014 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 05:00:01,050 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 05:00:01,060 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 06:00:00 UTC)" executed successfully 2026-08-17 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 07:00:00 UTC)" (scheduled at 2026-08-17 06:00:00+00:00) 2026-08-17 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-17 06:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 06:00:02,273 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 06:00:02,275 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 06:00:02,278 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 06:00:02,278 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 06:00:02,308 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 06:00:02,318 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 07:00:00 UTC)" executed successfully 2026-08-17 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 08:00:00 UTC)" (scheduled at 2026-08-17 07:00:00+00:00) 2026-08-17 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-17 07:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 07:00:01,676 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 07:00:01,678 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 07:00:01,682 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 07:00:01,682 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 07:00:01,740 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 07:00:01,763 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 08:00:00 UTC)" executed successfully 2026-08-17 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 09:00:00 UTC)" (scheduled at 2026-08-17 08:00:00+00:00) 2026-08-17 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-17 08:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 08:00:01,325 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 08:00:01,326 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 08:00:01,328 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 08:00:01,328 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 08:00:01,358 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 08:00:01,375 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 09:00:00 UTC)" executed successfully 2026-08-17 09:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 10:00:00 UTC)" (scheduled at 2026-08-17 09:00:00+00:00) 2026-08-17 09:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-17 09:00:00,063 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 09:00:00,940 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 09:00:00,943 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 09:00:00,946 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 09:00:00,947 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 09:00:00,982 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 09:00:00,999 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 10:00:00 UTC)" executed successfully 2026-08-17 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 11:00:00 UTC)" (scheduled at 2026-08-17 10:00:00+00:00) 2026-08-17 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 10:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 10:00:01,563 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 10:00:01,564 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 10:00:01,568 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 10:00:01,568 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 10:00:01,607 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 10:00:01,628 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 11:00:00 UTC)" executed successfully 2026-08-17 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 12:00:00 UTC)" (scheduled at 2026-08-17 11:00:00+00:00) 2026-08-17 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 11:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 11:00:01,288 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 11:00:01,290 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 11:00:01,293 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 11:00:01,294 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 11:00:01,335 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 11:00:01,356 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 12:00:00 UTC)" executed successfully 2026-08-17 12:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 13:00:00 UTC)" (scheduled at 2026-08-17 12:00:00+00:00) 2026-08-17 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-17 12:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 12:00:01,828 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 12:00:01,830 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 12:00:01,832 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 12:00:01,832 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 12:00:01,867 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 12:00:01,887 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 13:00:00 UTC)" executed successfully 2026-08-17 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 14:00:00 UTC)" (scheduled at 2026-08-17 13:00:00+00:00) 2026-08-17 13:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 13:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 13:00:01,196 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 13:00:01,197 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 13:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 13:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 13:00:01,233 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 13:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 14:00:00 UTC)" executed successfully 2026-08-17 14:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 15:00:00 UTC)" (scheduled at 2026-08-17 14:00:00+00:00) 2026-08-17 14:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-17 14:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 14:00:01,364 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 14:00:01,366 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 14:00:01,369 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 14:00:01,369 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 14:00:01,394 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 14:00:01,407 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 15:00:00 UTC)" executed successfully 2026-08-17 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 16:00:00 UTC)" (scheduled at 2026-08-17 15:00:00+00:00) 2026-08-17 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-17 15:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 15:00:01,186 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 15:00:01,189 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 15:00:01,193 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 15:00:01,193 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 15:00:01,241 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 15:00:01,521 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 16:00:00 UTC)" executed successfully 2026-08-17 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 17:00:00 UTC)" (scheduled at 2026-08-17 16:00:00+00:00) 2026-08-17 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 16:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 16:00:01,149 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 16:00:01,150 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 16:00:01,154 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 16:00:01,154 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 16:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 16:00:01,224 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 17:00:00 UTC)" executed successfully 2026-08-17 17:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 18:00:00 UTC)" (scheduled at 2026-08-17 17:00:00+00:00) 2026-08-17 17:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-17 17:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 17:00:02,555 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 17:00:02,557 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 17:00:02,560 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 17:00:02,560 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 17:00:02,599 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 17:00:02,614 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 18:00:00 UTC)" executed successfully 2026-08-17 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 19:00:00 UTC)" (scheduled at 2026-08-17 18:00:00+00:00) 2026-08-17 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 18:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 18:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 18:00:01,030 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 18:00:01,033 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 18:00:01,033 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 18:00:01,064 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 18:00:01,079 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 19:00:00 UTC)" executed successfully 2026-08-17 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 20:00:00 UTC)" (scheduled at 2026-08-17 19:00:00+00:00) 2026-08-17 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 19:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 19:00:01,643 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 19:00:01,644 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 19:00:01,648 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 19:00:01,648 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 19:00:01,697 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 19:00:01,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 20:00:00 UTC)" executed successfully 2026-08-17 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 21:00:00 UTC)" (scheduled at 2026-08-17 20:00:00+00:00) 2026-08-17 20:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-17 20:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 20:00:01,104 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 20:00:01,106 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 20:00:01,110 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 20:00:01,110 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 20:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 20:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 21:00:00 UTC)" executed successfully 2026-08-17 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 22:00:00 UTC)" (scheduled at 2026-08-17 21:00:00+00:00) 2026-08-17 21:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-17 21:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 21:00:01,087 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 21:00:01,088 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 21:00:01,091 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 21:00:01,091 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 21:00:01,127 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 21:00:01,138 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 22:00:00 UTC)" executed successfully 2026-08-17 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 23:00:00 UTC)" (scheduled at 2026-08-17 22:00:00+00:00) 2026-08-17 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-17 22:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 22:00:00,986 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 22:00:00,988 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 22:00:00,994 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 22:00:00,996 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 22:00:01,037 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 22:00:01,057 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-17 23:00:00 UTC)" executed successfully 2026-08-17 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 00:00:00 UTC)" (scheduled at 2026-08-17 23:00:00+00:00) 2026-08-17 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-17 23:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-17 23:00:01,054 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-17 23:00:01,056 INFO [fb-sync.worker] Scraped 50 posts 2026-08-17 23:00:01,059 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-17 23:00:01,060 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-17 23:00:01,097 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-17 23:00:01,113 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 00:00:00 UTC)" executed successfully 2026-08-18 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 01:00:00 UTC)" (scheduled at 2026-08-18 00:00:00+00:00) 2026-08-18 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-18 00:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 00:00:01,046 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 00:00:01,051 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 00:00:01,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 00:00:01,056 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 00:00:01,096 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 00:00:01,116 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 01:00:00 UTC)" executed successfully 2026-08-18 01:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 02:00:00 UTC)" (scheduled at 2026-08-18 01:00:00+00:00) 2026-08-18 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-18 01:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 01:00:01,092 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 01:00:01,094 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 01:00:01,096 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 01:00:01,096 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 01:00:01,133 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 01:00:01,150 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 02:00:00 UTC)" executed successfully 2026-08-18 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 03:00:00 UTC)" (scheduled at 2026-08-18 02:00:00+00:00) 2026-08-18 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-18 02:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 02:00:00,951 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 02:00:00,952 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 02:00:00,957 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 02:00:00,957 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 02:00:00,988 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 02:00:01,008 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 03:00:00 UTC)" executed successfully 2026-08-18 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 04:00:00 UTC)" (scheduled at 2026-08-18 03:00:00+00:00) 2026-08-18 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-18 03:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 03:00:01,464 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 03:00:01,466 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 03:00:01,470 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 03:00:01,471 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 03:00:01,522 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 03:00:01,543 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 04:00:00 UTC)" executed successfully 2026-08-18 04:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 05:00:00 UTC)" (scheduled at 2026-08-18 04:00:00+00:00) 2026-08-18 04:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-18 04:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 04:00:01,256 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 04:00:01,258 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 04:00:01,262 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 04:00:01,262 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 04:00:01,295 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 04:00:01,314 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 05:00:00 UTC)" executed successfully 2026-08-18 05:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 06:00:00 UTC)" (scheduled at 2026-08-18 05:00:00+00:00) 2026-08-18 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-18 05:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 05:00:01,293 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 05:00:01,295 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 05:00:01,299 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 05:00:01,299 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 05:00:01,338 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 05:00:01,359 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 06:00:00 UTC)" executed successfully 2026-08-18 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 07:00:00 UTC)" (scheduled at 2026-08-18 06:00:00+00:00) 2026-08-18 06:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-18 06:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 06:00:01,130 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 06:00:01,132 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 06:00:01,136 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 06:00:01,136 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 06:00:01,178 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 06:00:01,195 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 07:00:00 UTC)" executed successfully 2026-08-18 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 08:00:00 UTC)" (scheduled at 2026-08-18 07:00:00+00:00) 2026-08-18 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-18 07:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 07:00:01,655 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 07:00:01,657 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 07:00:01,660 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 07:00:01,660 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 07:00:01,706 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 07:00:01,728 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 08:00:00 UTC)" executed successfully 2026-08-18 08:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 09:00:00 UTC)" (scheduled at 2026-08-18 08:00:00+00:00) 2026-08-18 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-18 08:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 08:00:01,021 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 08:00:01,023 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 08:00:01,026 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 08:00:01,026 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 08:00:01,069 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 08:00:01,091 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 09:00:00 UTC)" executed successfully 2026-08-18 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 10:00:00 UTC)" (scheduled at 2026-08-18 09:00:00+00:00) 2026-08-18 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-18 09:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 09:00:01,304 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 09:00:01,306 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 09:00:01,310 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 09:00:01,310 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 09:00:01,370 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 09:00:01,384 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 10:00:00 UTC)" executed successfully 2026-08-18 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 11:00:00 UTC)" (scheduled at 2026-08-18 10:00:00+00:00) 2026-08-18 10:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-18 10:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 10:00:01,192 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 10:00:01,193 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 10:00:01,195 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 10:00:01,196 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 10:00:01,234 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 10:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 11:00:00 UTC)" executed successfully 2026-08-18 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 12:00:00 UTC)" (scheduled at 2026-08-18 11:00:00+00:00) 2026-08-18 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-18 11:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 11:00:02,092 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 11:00:02,095 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 11:00:02,098 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 11:00:02,098 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 11:00:02,140 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 11:00:02,160 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 12:00:00 UTC)" executed successfully 2026-08-18 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 13:00:00 UTC)" (scheduled at 2026-08-18 12:00:00+00:00) 2026-08-18 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-18 12:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 12:00:01,244 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 12:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 12:00:01,247 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 12:00:01,248 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 12:00:01,284 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 12:00:01,297 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 13:00:00 UTC)" executed successfully 2026-08-18 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 14:00:00 UTC)" (scheduled at 2026-08-18 13:00:00+00:00) 2026-08-18 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-18 13:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 13:00:01,798 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 13:00:01,801 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 13:00:01,804 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 13:00:01,805 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 13:00:01,846 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 13:00:01,863 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 14:00:00 UTC)" executed successfully 2026-08-18 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 15:00:00 UTC)" (scheduled at 2026-08-18 14:00:00+00:00) 2026-08-18 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-18 14:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 14:00:01,068 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 14:00:01,070 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 14:00:01,073 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 14:00:01,073 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 14:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 14:00:01,131 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 15:00:00 UTC)" executed successfully 2026-08-18 15:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 16:00:00 UTC)" (scheduled at 2026-08-18 15:00:00+00:00) 2026-08-18 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-18 15:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 15:00:01,665 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 15:00:01,666 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 15:00:01,670 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 15:00:01,670 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 15:00:01,711 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 15:00:01,730 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 16:00:00 UTC)" executed successfully 2026-08-18 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 17:00:00 UTC)" (scheduled at 2026-08-18 16:00:00+00:00) 2026-08-18 16:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-18 16:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 16:00:01,295 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 16:00:01,297 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 16:00:01,301 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 16:00:01,301 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 16:00:01,345 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 16:00:01,368 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 17:00:00 UTC)" executed successfully 2026-08-18 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 18:00:00 UTC)" (scheduled at 2026-08-18 17:00:00+00:00) 2026-08-18 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-18 17:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 17:00:01,216 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 17:00:01,218 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 17:00:01,222 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 17:00:01,222 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 17:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 17:00:01,281 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 18:00:00 UTC)" executed successfully 2026-08-18 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 19:00:00 UTC)" (scheduled at 2026-08-18 18:00:00+00:00) 2026-08-18 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-18 18:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 18:00:01,468 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 18:00:01,470 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 18:00:01,473 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 18:00:01,473 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 18:00:01,520 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 18:00:01,541 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 19:00:00 UTC)" executed successfully 2026-08-18 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 20:00:00 UTC)" (scheduled at 2026-08-18 19:00:00+00:00) 2026-08-18 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-18 19:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 19:00:01,075 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 19:00:01,077 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 19:00:01,078 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 19:00:01,079 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 19:00:01,123 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 19:00:01,143 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 20:00:00 UTC)" executed successfully 2026-08-18 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 21:00:00 UTC)" (scheduled at 2026-08-18 20:00:00+00:00) 2026-08-18 20:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-18 20:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 20:00:01,253 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 20:00:01,255 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 20:00:01,259 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 20:00:01,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 20:00:01,315 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 20:00:01,342 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 21:00:00 UTC)" executed successfully 2026-08-18 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 22:00:00 UTC)" (scheduled at 2026-08-18 21:00:00+00:00) 2026-08-18 21:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-18 21:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 21:00:01,227 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 21:00:01,229 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 21:00:01,232 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 21:00:01,232 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 21:00:01,265 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 21:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 22:00:00 UTC)" executed successfully 2026-08-18 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 23:00:00 UTC)" (scheduled at 2026-08-18 22:00:00+00:00) 2026-08-18 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-18 22:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 22:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 22:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 22:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 22:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 22:00:01,248 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 22:00:01,270 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-18 23:00:00 UTC)" executed successfully 2026-08-18 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 00:00:00 UTC)" (scheduled at 2026-08-18 23:00:00+00:00) 2026-08-18 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-18 23:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-18 23:00:01,088 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-18 23:00:01,091 INFO [fb-sync.worker] Scraped 50 posts 2026-08-18 23:00:01,095 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-18 23:00:01,095 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-18 23:00:01,142 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-18 23:00:01,164 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 00:00:00 UTC)" executed successfully 2026-08-19 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 01:00:00 UTC)" (scheduled at 2026-08-19 00:00:00+00:00) 2026-08-19 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-19 00:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 00:00:01,805 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 00:00:01,807 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 00:00:01,811 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 00:00:01,812 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 00:00:01,866 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 00:00:01,891 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 01:00:00 UTC)" executed successfully 2026-08-19 01:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 02:00:00 UTC)" (scheduled at 2026-08-19 01:00:00+00:00) 2026-08-19 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-19 01:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 01:00:01,465 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 01:00:01,466 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 01:00:01,470 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 01:00:01,470 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 01:00:01,516 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 01:00:01,540 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 02:00:00 UTC)" executed successfully 2026-08-19 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 03:00:00 UTC)" (scheduled at 2026-08-19 02:00:00+00:00) 2026-08-19 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-19 02:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 02:00:01,122 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 02:00:01,123 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 02:00:01,127 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 02:00:01,127 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 02:00:01,160 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 02:00:01,179 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 03:00:00 UTC)" executed successfully 2026-08-19 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 04:00:00 UTC)" (scheduled at 2026-08-19 03:00:00+00:00) 2026-08-19 03:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-19 03:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 03:00:01,972 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 03:00:01,975 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 03:00:01,978 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 03:00:01,979 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 03:00:02,041 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 03:00:02,072 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 04:00:00 UTC)" executed successfully 2026-08-19 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 05:00:00 UTC)" (scheduled at 2026-08-19 04:00:00+00:00) 2026-08-19 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-19 04:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 04:00:01,235 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 04:00:01,237 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 04:00:01,240 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 04:00:01,240 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 04:00:01,287 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 04:00:01,309 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 05:00:00 UTC)" executed successfully 2026-08-19 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 06:00:00 UTC)" (scheduled at 2026-08-19 05:00:00+00:00) 2026-08-19 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-19 05:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 05:00:02,555 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 05:00:02,557 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 05:00:02,561 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 05:00:02,561 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 05:00:02,604 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 05:00:02,628 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 06:00:00 UTC)" executed successfully 2026-08-19 06:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 07:00:00 UTC)" (scheduled at 2026-08-19 06:00:00+00:00) 2026-08-19 06:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-19 06:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 06:00:01,189 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 06:00:01,190 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 06:00:01,194 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 06:00:01,194 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 06:00:01,223 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 06:00:01,237 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 07:00:00 UTC)" executed successfully 2026-08-19 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 08:00:00 UTC)" (scheduled at 2026-08-19 07:00:00+00:00) 2026-08-19 07:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-19 07:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 07:00:02,301 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 07:00:02,304 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 07:00:02,308 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 07:00:02,309 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 07:00:02,356 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 07:00:02,374 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 08:00:00 UTC)" executed successfully 2026-08-19 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 09:00:00 UTC)" (scheduled at 2026-08-19 08:00:00+00:00) 2026-08-19 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-19 08:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 08:00:01,234 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 08:00:01,235 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 08:00:01,238 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 08:00:01,238 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 08:00:01,282 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 08:00:01,304 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 09:00:00 UTC)" executed successfully 2026-08-19 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 10:00:00 UTC)" (scheduled at 2026-08-19 09:00:00+00:00) 2026-08-19 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-19 09:00:00,143 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 09:00:01,356 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 09:00:01,358 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 09:00:01,360 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 09:00:01,361 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 09:00:01,407 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 09:00:01,426 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 10:00:00 UTC)" executed successfully 2026-08-19 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 11:00:00 UTC)" (scheduled at 2026-08-19 10:00:00+00:00) 2026-08-19 10:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-19 10:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 10:00:01,246 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 10:00:01,247 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 10:00:01,250 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 10:00:01,250 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 10:00:01,300 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 10:00:01,322 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 11:00:00 UTC)" executed successfully 2026-08-19 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 12:00:00 UTC)" (scheduled at 2026-08-19 11:00:00+00:00) 2026-08-19 11:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-19 11:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 11:00:02,273 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 11:00:02,275 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 11:00:02,279 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 11:00:02,279 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 11:00:02,338 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 11:00:02,361 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 12:00:00 UTC)" executed successfully 2026-08-19 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 13:00:00 UTC)" (scheduled at 2026-08-19 12:00:00+00:00) 2026-08-19 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-19 12:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 12:00:02,033 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 12:00:02,035 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 12:00:02,039 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 12:00:02,039 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 12:00:02,088 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 12:00:02,108 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 13:00:00 UTC)" executed successfully 2026-08-19 13:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 14:00:00 UTC)" (scheduled at 2026-08-19 13:00:00+00:00) 2026-08-19 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-19 13:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 13:00:02,705 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 13:00:02,707 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 13:00:02,709 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 13:00:02,709 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 13:00:02,750 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 13:00:02,773 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 14:00:00 UTC)" executed successfully 2026-08-19 14:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 15:00:00 UTC)" (scheduled at 2026-08-19 14:00:00+00:00) 2026-08-19 14:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-19 14:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 14:00:01,634 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 14:00:01,636 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 14:00:01,639 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 14:00:01,640 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 14:00:01,693 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 14:00:01,722 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 15:00:00 UTC)" executed successfully 2026-08-19 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 16:00:00 UTC)" (scheduled at 2026-08-19 15:00:00+00:00) 2026-08-19 15:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-19 15:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 15:00:02,649 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 15:00:02,651 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 15:00:02,655 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 15:00:02,655 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 15:00:02,702 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 15:00:02,721 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 16:00:00 UTC)" executed successfully 2026-08-19 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 17:00:00 UTC)" (scheduled at 2026-08-19 16:00:00+00:00) 2026-08-19 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-19 16:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 16:00:01,541 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 16:00:01,543 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 16:00:01,546 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 16:00:01,547 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 16:00:01,595 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 16:00:01,627 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 17:00:00 UTC)" executed successfully 2026-08-19 17:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 18:00:00 UTC)" (scheduled at 2026-08-19 17:00:00+00:00) 2026-08-19 17:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-19 17:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 17:00:02,503 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 17:00:02,504 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 17:00:02,508 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 17:00:02,508 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 17:00:02,541 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 17:00:02,565 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 18:00:00 UTC)" executed successfully 2026-08-19 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 19:00:00 UTC)" (scheduled at 2026-08-19 18:00:00+00:00) 2026-08-19 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-19 18:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 18:00:01,226 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 18:00:01,228 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 18:00:01,231 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 18:00:01,231 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 18:00:01,279 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 18:00:01,292 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 19:00:00 UTC)" executed successfully 2026-08-19 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 20:00:00 UTC)" (scheduled at 2026-08-19 19:00:00+00:00) 2026-08-19 19:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-19 19:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 19:00:01,426 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 19:00:01,429 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 19:00:01,432 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 19:00:01,432 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 19:00:01,464 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 19:00:01,477 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 20:00:00 UTC)" executed successfully 2026-08-19 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 21:00:00 UTC)" (scheduled at 2026-08-19 20:00:00+00:00) 2026-08-19 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-19 20:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 20:00:01,088 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 20:00:01,090 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 20:00:01,094 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 20:00:01,094 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 20:00:01,152 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 20:00:01,178 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 21:00:00 UTC)" executed successfully 2026-08-19 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 22:00:00 UTC)" (scheduled at 2026-08-19 21:00:00+00:00) 2026-08-19 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-19 21:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 21:00:01,138 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 21:00:01,141 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 21:00:01,144 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 21:00:01,144 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 21:00:01,199 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 21:00:01,223 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 22:00:00 UTC)" executed successfully 2026-08-19 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 23:00:00 UTC)" (scheduled at 2026-08-19 22:00:00+00:00) 2026-08-19 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-19 22:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 22:00:01,844 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 22:00:01,849 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 22:00:01,854 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 22:00:01,854 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 22:00:01,927 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 22:00:01,958 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-19 23:00:00 UTC)" executed successfully 2026-08-19 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 00:00:00 UTC)" (scheduled at 2026-08-19 23:00:00+00:00) 2026-08-19 23:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-19 23:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-19 23:00:01,605 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-19 23:00:01,606 INFO [fb-sync.worker] Scraped 50 posts 2026-08-19 23:00:01,609 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-19 23:00:01,609 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-19 23:00:01,640 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-19 23:00:01,657 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 00:00:00 UTC)" executed successfully 2026-08-20 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 01:00:00 UTC)" (scheduled at 2026-08-20 00:00:00+00:00) 2026-08-20 00:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-20 00:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 00:00:01,035 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 00:00:01,036 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 00:00:01,039 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 00:00:01,039 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 00:00:01,078 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 00:00:01,097 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 01:00:00 UTC)" executed successfully 2026-08-20 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 02:00:00 UTC)" (scheduled at 2026-08-20 01:00:00+00:00) 2026-08-20 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-20 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 01:00:01,891 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 01:00:01,893 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 01:00:01,896 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 01:00:01,896 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 01:00:01,940 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 01:00:01,966 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 02:00:00 UTC)" executed successfully 2026-08-20 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 03:00:00 UTC)" (scheduled at 2026-08-20 02:00:00+00:00) 2026-08-20 02:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-20 02:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 02:00:01,540 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 02:00:01,542 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 02:00:01,546 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 02:00:01,546 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 02:00:01,605 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 02:00:01,625 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 03:00:00 UTC)" executed successfully 2026-08-20 03:00:00,019 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 04:00:00 UTC)" (scheduled at 2026-08-20 03:00:00+00:00) 2026-08-20 03:00:00,023 INFO [fb-sync] Starting FB sync... 2026-08-20 03:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 03:00:01,129 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 03:00:01,131 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 03:00:01,134 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 03:00:01,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 03:00:01,172 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 03:00:01,189 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 04:00:00 UTC)" executed successfully 2026-08-20 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 05:00:00 UTC)" (scheduled at 2026-08-20 04:00:00+00:00) 2026-08-20 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-20 04:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 04:00:01,871 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 04:00:01,873 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 04:00:01,876 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 04:00:01,876 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 04:00:01,926 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 04:00:01,946 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 05:00:00 UTC)" executed successfully 2026-08-20 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 06:00:00 UTC)" (scheduled at 2026-08-20 05:00:00+00:00) 2026-08-20 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-20 05:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 05:00:01,138 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 05:00:01,140 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 05:00:01,144 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 05:00:01,144 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 05:00:01,191 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 05:00:01,212 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 06:00:00 UTC)" executed successfully 2026-08-20 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 07:00:00 UTC)" (scheduled at 2026-08-20 06:00:00+00:00) 2026-08-20 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-20 06:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 06:00:01,376 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 06:00:01,377 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 06:00:01,380 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 06:00:01,380 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 06:00:01,419 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 06:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 07:00:00 UTC)" executed successfully 2026-08-20 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 08:00:00 UTC)" (scheduled at 2026-08-20 07:00:00+00:00) 2026-08-20 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-20 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 07:00:01,098 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 07:00:01,100 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 07:00:01,102 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 07:00:01,102 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 07:00:01,136 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 07:00:01,156 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 08:00:00 UTC)" executed successfully 2026-08-20 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 09:00:00 UTC)" (scheduled at 2026-08-20 08:00:00+00:00) 2026-08-20 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-20 08:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 08:00:01,146 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 08:00:01,149 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 08:00:01,152 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 08:00:01,152 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 08:00:01,192 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 08:00:01,206 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 09:00:00 UTC)" executed successfully 2026-08-20 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 10:00:00 UTC)" (scheduled at 2026-08-20 09:00:00+00:00) 2026-08-20 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-20 09:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 09:00:01,549 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 09:00:01,552 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 09:00:01,554 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 09:00:01,555 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 09:00:01,591 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 09:00:01,614 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 10:00:00 UTC)" executed successfully 2026-08-20 10:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 11:00:00 UTC)" (scheduled at 2026-08-20 10:00:00+00:00) 2026-08-20 10:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-20 10:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 10:00:02,497 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 10:00:02,499 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 10:00:02,503 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 10:00:02,503 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 10:00:02,549 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 10:00:02,573 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 11:00:00 UTC)" executed successfully 2026-08-20 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 12:00:00 UTC)" (scheduled at 2026-08-20 11:00:00+00:00) 2026-08-20 11:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-20 11:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 11:00:02,011 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 11:00:02,019 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 11:00:02,022 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 11:00:02,022 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 11:00:02,103 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 11:00:02,132 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 12:00:00 UTC)" executed successfully 2026-08-20 12:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 13:00:00 UTC)" (scheduled at 2026-08-20 12:00:00+00:00) 2026-08-20 12:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-20 12:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 12:00:01,257 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 12:00:01,259 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 12:00:01,262 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 12:00:01,263 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 12:00:01,296 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 12:00:01,311 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 13:00:00 UTC)" executed successfully 2026-08-20 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 14:00:00 UTC)" (scheduled at 2026-08-20 13:00:00+00:00) 2026-08-20 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-20 13:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 13:00:01,177 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 13:00:01,179 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 13:00:01,182 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 13:00:01,182 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 13:00:01,241 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 13:00:01,265 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 14:00:00 UTC)" executed successfully 2026-08-20 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 15:00:00 UTC)" (scheduled at 2026-08-20 14:00:00+00:00) 2026-08-20 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-20 14:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 14:00:02,184 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 14:00:02,186 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 14:00:02,190 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 14:00:02,191 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 14:00:02,252 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 14:00:02,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 15:00:00 UTC)" executed successfully 2026-08-20 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 16:00:00 UTC)" (scheduled at 2026-08-20 15:00:00+00:00) 2026-08-20 15:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-20 15:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 15:00:01,265 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 15:00:01,266 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 15:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 15:00:01,271 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 15:00:01,303 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 15:00:01,318 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 16:00:00 UTC)" executed successfully 2026-08-20 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 17:00:00 UTC)" (scheduled at 2026-08-20 16:00:00+00:00) 2026-08-20 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-20 16:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 16:00:01,734 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 16:00:01,736 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 16:00:01,739 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 16:00:01,739 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 16:00:01,785 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 16:00:01,807 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 17:00:00 UTC)" executed successfully 2026-08-20 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 18:00:00 UTC)" (scheduled at 2026-08-20 17:00:00+00:00) 2026-08-20 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-20 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 17:00:01,222 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 17:00:01,224 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 17:00:01,226 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 17:00:01,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 17:00:01,284 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 17:00:01,310 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 18:00:00 UTC)" executed successfully 2026-08-20 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 19:00:00 UTC)" (scheduled at 2026-08-20 18:00:00+00:00) 2026-08-20 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-20 18:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 18:00:01,237 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 18:00:01,239 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 18:00:01,243 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 18:00:01,243 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 18:00:01,292 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 18:00:01,313 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 19:00:00 UTC)" executed successfully 2026-08-20 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 20:00:00 UTC)" (scheduled at 2026-08-20 19:00:00+00:00) 2026-08-20 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-20 19:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 19:00:01,426 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 19:00:01,427 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 19:00:01,431 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 19:00:01,431 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 19:00:01,480 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 19:00:01,506 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 20:00:00 UTC)" executed successfully 2026-08-20 20:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 21:00:00 UTC)" (scheduled at 2026-08-20 20:00:00+00:00) 2026-08-20 20:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-20 20:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 20:00:02,039 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 20:00:02,041 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 20:00:02,045 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 20:00:02,046 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 20:00:02,105 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 20:00:02,132 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 21:00:00 UTC)" executed successfully 2026-08-20 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 22:00:00 UTC)" (scheduled at 2026-08-20 21:00:00+00:00) 2026-08-20 21:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-20 21:00:00,105 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 21:00:01,023 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 21:00:01,025 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 21:00:01,028 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 21:00:01,028 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 21:00:01,077 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 21:00:01,101 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 22:00:00 UTC)" executed successfully 2026-08-20 22:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 23:00:00 UTC)" (scheduled at 2026-08-20 22:00:00+00:00) 2026-08-20 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-20 22:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 22:00:01,127 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 22:00:01,129 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 22:00:01,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 22:00:01,133 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 22:00:01,194 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 22:00:01,220 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-20 23:00:00 UTC)" executed successfully 2026-08-20 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 00:00:00 UTC)" (scheduled at 2026-08-20 23:00:00+00:00) 2026-08-20 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-20 23:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-20 23:00:01,153 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-20 23:00:01,154 INFO [fb-sync.worker] Scraped 50 posts 2026-08-20 23:00:01,158 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-20 23:00:01,159 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-20 23:00:01,210 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-20 23:00:01,231 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 00:00:00 UTC)" executed successfully 2026-08-21 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 01:00:00 UTC)" (scheduled at 2026-08-21 00:00:00+00:00) 2026-08-21 00:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-21 00:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 00:00:01,424 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 00:00:01,426 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 00:00:01,429 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 00:00:01,429 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 00:00:01,481 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 00:00:01,504 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 01:00:00 UTC)" executed successfully 2026-08-21 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 02:00:00 UTC)" (scheduled at 2026-08-21 01:00:00+00:00) 2026-08-21 01:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-21 01:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 01:00:01,265 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 01:00:01,266 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 01:00:01,269 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 01:00:01,270 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 01:00:01,304 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 01:00:01,325 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 02:00:00 UTC)" executed successfully 2026-08-21 02:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 03:00:00 UTC)" (scheduled at 2026-08-21 02:00:00+00:00) 2026-08-21 02:00:00,017 INFO [fb-sync] Starting FB sync... 2026-08-21 02:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 02:00:01,111 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 02:00:01,113 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 02:00:01,116 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 02:00:01,116 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 02:00:01,161 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 02:00:01,189 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 03:00:00 UTC)" executed successfully 2026-08-21 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 04:00:00 UTC)" (scheduled at 2026-08-21 03:00:00+00:00) 2026-08-21 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-21 03:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 03:00:01,561 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 03:00:01,562 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 03:00:01,565 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 03:00:01,565 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 03:00:01,611 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 03:00:01,632 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 04:00:00 UTC)" executed successfully 2026-08-21 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 05:00:00 UTC)" (scheduled at 2026-08-21 04:00:00+00:00) 2026-08-21 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-21 04:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 04:00:01,752 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 04:00:01,754 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 04:00:01,758 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 04:00:01,759 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 04:00:01,817 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 04:00:01,839 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 05:00:00 UTC)" executed successfully 2026-08-21 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 06:00:00 UTC)" (scheduled at 2026-08-21 05:00:00+00:00) 2026-08-21 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-21 05:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 05:00:01,677 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 05:00:01,679 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 05:00:01,683 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 05:00:01,683 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 05:00:01,734 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 05:00:01,757 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 06:00:00 UTC)" executed successfully 2026-08-21 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 07:00:00 UTC)" (scheduled at 2026-08-21 06:00:00+00:00) 2026-08-21 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-21 06:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 06:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 06:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 06:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 06:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 06:00:01,241 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 06:00:01,262 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 07:00:00 UTC)" executed successfully 2026-08-21 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 08:00:00 UTC)" (scheduled at 2026-08-21 07:00:00+00:00) 2026-08-21 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-21 07:00:00,107 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 07:00:01,559 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 07:00:01,560 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 07:00:01,563 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 07:00:01,564 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 07:00:01,853 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 07:00:01,877 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 08:00:00 UTC)" executed successfully 2026-08-21 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 09:00:00 UTC)" (scheduled at 2026-08-21 08:00:00+00:00) 2026-08-21 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-21 08:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 08:00:01,322 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 08:00:01,324 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 08:00:01,328 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 08:00:01,328 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 08:00:01,371 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 08:00:01,396 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 09:00:00 UTC)" executed successfully 2026-08-21 09:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 10:00:00 UTC)" (scheduled at 2026-08-21 09:00:00+00:00) 2026-08-21 09:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-21 09:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 09:00:01,074 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 09:00:01,076 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 09:00:01,078 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 09:00:01,078 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 09:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 09:00:01,162 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 10:00:00 UTC)" executed successfully 2026-08-21 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 11:00:00 UTC)" (scheduled at 2026-08-21 10:00:00+00:00) 2026-08-21 10:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-21 10:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 10:00:01,608 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 10:00:01,610 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 10:00:01,615 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 10:00:01,615 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 10:00:01,679 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 10:00:01,708 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 11:00:00 UTC)" executed successfully 2026-08-21 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 12:00:00 UTC)" (scheduled at 2026-08-21 11:00:00+00:00) 2026-08-21 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-21 11:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 11:00:01,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 11:00:01,173 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 11:00:01,177 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 11:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 11:00:01,238 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 11:00:01,266 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 12:00:00 UTC)" executed successfully 2026-08-21 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 13:00:00 UTC)" (scheduled at 2026-08-21 12:00:00+00:00) 2026-08-21 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-21 12:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 12:00:01,450 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 12:00:01,452 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 12:00:01,455 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 12:00:01,455 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 12:00:01,510 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 12:00:01,535 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 13:00:00 UTC)" executed successfully 2026-08-21 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 14:00:00 UTC)" (scheduled at 2026-08-21 13:00:00+00:00) 2026-08-21 13:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-21 13:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 13:00:01,070 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 13:00:01,072 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 13:00:01,076 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 13:00:01,077 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 13:00:01,140 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 13:00:01,166 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 14:00:00 UTC)" executed successfully 2026-08-21 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 15:00:00 UTC)" (scheduled at 2026-08-21 14:00:00+00:00) 2026-08-21 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-21 14:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 14:00:01,170 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 14:00:01,172 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 14:00:01,175 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 14:00:01,175 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 14:00:01,213 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 14:00:01,225 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 15:00:00 UTC)" executed successfully 2026-08-21 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 16:00:00 UTC)" (scheduled at 2026-08-21 15:00:00+00:00) 2026-08-21 15:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-21 15:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 15:00:01,513 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 15:00:01,516 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 15:00:01,518 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 15:00:01,518 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 15:00:01,563 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 15:00:01,588 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 16:00:00 UTC)" executed successfully 2026-08-21 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 17:00:00 UTC)" (scheduled at 2026-08-21 16:00:00+00:00) 2026-08-21 16:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-21 16:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 16:00:10,646 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 16:00:10,649 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 16:00:10,653 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 16:00:10,653 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 16:00:10,690 INFO [fb-sync] Sync done: 0 new posts in 11s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 16:00:10,706 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 17:00:00 UTC)" executed successfully 2026-08-21 17:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 18:00:00 UTC)" (scheduled at 2026-08-21 17:00:00+00:00) 2026-08-21 17:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-21 17:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 17:00:01,417 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 17:00:01,418 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 17:00:01,422 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 17:00:01,422 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 17:00:01,467 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 17:00:01,484 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 18:00:00 UTC)" executed successfully 2026-08-21 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 19:00:00 UTC)" (scheduled at 2026-08-21 18:00:00+00:00) 2026-08-21 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-21 18:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 18:00:01,136 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 18:00:01,138 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 18:00:01,141 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 18:00:01,141 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 18:00:01,194 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 18:00:01,218 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 19:00:00 UTC)" executed successfully 2026-08-21 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 20:00:00 UTC)" (scheduled at 2026-08-21 19:00:00+00:00) 2026-08-21 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-21 19:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 19:00:01,223 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 19:00:01,225 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 19:00:01,229 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 19:00:01,229 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 19:00:01,302 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 19:00:01,322 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 20:00:00 UTC)" executed successfully 2026-08-21 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 21:00:00 UTC)" (scheduled at 2026-08-21 20:00:00+00:00) 2026-08-21 20:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-21 20:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 20:00:01,142 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 20:00:01,144 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 20:00:01,147 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 20:00:01,147 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 20:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 20:00:01,215 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 21:00:00 UTC)" executed successfully 2026-08-21 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 22:00:00 UTC)" (scheduled at 2026-08-21 21:00:00+00:00) 2026-08-21 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-21 21:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 21:00:01,778 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 21:00:01,780 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 21:00:01,783 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 21:00:01,783 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 21:00:01,831 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 21:00:01,852 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 22:00:00 UTC)" executed successfully 2026-08-21 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 23:00:00 UTC)" (scheduled at 2026-08-21 22:00:00+00:00) 2026-08-21 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-21 22:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 22:00:01,090 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 22:00:01,092 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 22:00:01,095 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 22:00:01,095 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 22:00:01,144 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 22:00:01,169 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-21 23:00:00 UTC)" executed successfully 2026-08-21 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 00:00:00 UTC)" (scheduled at 2026-08-21 23:00:00+00:00) 2026-08-21 23:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-21 23:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-21 23:00:01,043 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-21 23:00:01,044 INFO [fb-sync.worker] Scraped 50 posts 2026-08-21 23:00:01,048 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-21 23:00:01,048 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-21 23:00:01,089 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-21 23:00:01,107 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 00:00:00 UTC)" executed successfully 2026-08-22 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 01:00:00 UTC)" (scheduled at 2026-08-22 00:00:00+00:00) 2026-08-22 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-22 00:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 00:00:01,082 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 00:00:01,084 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 00:00:01,087 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 00:00:01,088 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 00:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 00:00:01,159 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 01:00:00 UTC)" executed successfully 2026-08-22 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 02:00:00 UTC)" (scheduled at 2026-08-22 01:00:00+00:00) 2026-08-22 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-22 01:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 01:00:01,038 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 01:00:01,040 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 01:00:01,042 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 01:00:01,042 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 01:00:01,079 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 01:00:01,104 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 02:00:00 UTC)" executed successfully 2026-08-22 02:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 03:00:00 UTC)" (scheduled at 2026-08-22 02:00:00+00:00) 2026-08-22 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-22 02:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 02:00:01,977 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 02:00:01,980 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 02:00:01,984 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 02:00:01,984 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 02:00:02,039 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 02:00:02,063 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 03:00:00 UTC)" executed successfully 2026-08-22 03:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 04:00:00 UTC)" (scheduled at 2026-08-22 03:00:00+00:00) 2026-08-22 03:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-22 03:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 03:00:01,206 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 03:00:01,208 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 03:00:01,211 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 03:00:01,212 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 03:00:01,259 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 03:00:01,283 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 04:00:00 UTC)" executed successfully 2026-08-22 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 05:00:00 UTC)" (scheduled at 2026-08-22 04:00:00+00:00) 2026-08-22 04:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-22 04:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 04:00:01,481 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 04:00:01,483 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 04:00:01,486 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 04:00:01,486 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 04:00:01,542 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 04:00:01,566 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 05:00:00 UTC)" executed successfully 2026-08-22 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 06:00:00 UTC)" (scheduled at 2026-08-22 05:00:00+00:00) 2026-08-22 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 05:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 05:00:01,992 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 05:00:01,994 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 05:00:01,998 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 05:00:01,998 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 05:00:02,052 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 05:00:02,079 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 06:00:00 UTC)" executed successfully 2026-08-22 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 07:00:00 UTC)" (scheduled at 2026-08-22 06:00:00+00:00) 2026-08-22 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 06:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 06:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 06:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 06:00:01,270 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 06:00:01,270 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 06:00:01,305 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 06:00:01,323 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 07:00:00 UTC)" executed successfully 2026-08-22 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 08:00:00 UTC)" (scheduled at 2026-08-22 07:00:00+00:00) 2026-08-22 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-22 07:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 07:00:01,512 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 07:00:01,513 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 07:00:01,515 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 07:00:01,515 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 07:00:01,559 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 07:00:01,583 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 08:00:00 UTC)" executed successfully 2026-08-22 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 09:00:00 UTC)" (scheduled at 2026-08-22 08:00:00+00:00) 2026-08-22 08:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 08:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 08:00:00,962 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 08:00:00,964 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 08:00:00,966 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 08:00:00,966 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 08:00:00,999 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 08:00:01,017 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 09:00:00 UTC)" executed successfully 2026-08-22 09:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 10:00:00 UTC)" (scheduled at 2026-08-22 09:00:00+00:00) 2026-08-22 09:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 09:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 09:00:01,110 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 09:00:01,112 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 09:00:01,114 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 09:00:01,115 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 09:00:01,164 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 09:00:01,194 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 10:00:00 UTC)" executed successfully 2026-08-22 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 11:00:00 UTC)" (scheduled at 2026-08-22 10:00:00+00:00) 2026-08-22 10:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-22 10:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 10:00:01,323 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 10:00:01,325 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 10:00:01,327 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 10:00:01,328 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 10:00:01,397 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 10:00:01,432 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 11:00:00 UTC)" executed successfully 2026-08-22 11:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 12:00:00 UTC)" (scheduled at 2026-08-22 11:00:00+00:00) 2026-08-22 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-22 11:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 11:00:02,221 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 11:00:02,222 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 11:00:02,226 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 11:00:02,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 11:00:02,282 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 11:00:02,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 12:00:00 UTC)" executed successfully 2026-08-22 12:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 13:00:00 UTC)" (scheduled at 2026-08-22 12:00:00+00:00) 2026-08-22 12:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-22 12:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 12:00:01,104 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 12:00:01,105 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 12:00:01,107 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 12:00:01,107 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 12:00:01,143 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 12:00:01,165 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 13:00:00 UTC)" executed successfully 2026-08-22 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 14:00:00 UTC)" (scheduled at 2026-08-22 13:00:00+00:00) 2026-08-22 13:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-22 13:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 13:00:01,026 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 13:00:01,028 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 13:00:01,032 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 13:00:01,032 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 13:00:01,084 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 13:00:01,102 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 14:00:00 UTC)" executed successfully 2026-08-22 14:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 15:00:00 UTC)" (scheduled at 2026-08-22 14:00:00+00:00) 2026-08-22 14:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-22 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 14:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 14:00:01,116 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 14:00:01,118 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 14:00:01,118 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 14:00:01,159 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 14:00:01,178 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 15:00:00 UTC)" executed successfully 2026-08-22 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 16:00:00 UTC)" (scheduled at 2026-08-22 15:00:00+00:00) 2026-08-22 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 15:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 15:00:01,119 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 15:00:01,121 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 15:00:01,124 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 15:00:01,124 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 15:00:01,182 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 15:00:01,209 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 16:00:00 UTC)" executed successfully 2026-08-22 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 17:00:00 UTC)" (scheduled at 2026-08-22 16:00:00+00:00) 2026-08-22 16:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-22 16:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 16:00:01,152 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 16:00:01,153 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 16:00:01,157 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 16:00:01,157 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 16:00:01,208 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 16:00:01,226 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 17:00:00 UTC)" executed successfully 2026-08-22 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 18:00:00 UTC)" (scheduled at 2026-08-22 17:00:00+00:00) 2026-08-22 17:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-22 17:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 17:00:01,284 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 17:00:01,286 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 17:00:01,288 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 17:00:01,288 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 17:00:01,341 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 17:00:01,369 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 18:00:00 UTC)" executed successfully 2026-08-22 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 19:00:00 UTC)" (scheduled at 2026-08-22 18:00:00+00:00) 2026-08-22 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-22 18:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 18:00:01,603 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 18:00:01,605 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 18:00:01,610 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 18:00:01,610 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 18:00:01,664 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 18:00:01,685 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 19:00:00 UTC)" executed successfully 2026-08-22 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 20:00:00 UTC)" (scheduled at 2026-08-22 19:00:00+00:00) 2026-08-22 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-22 19:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 19:00:01,145 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 19:00:01,147 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 19:00:01,150 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 19:00:01,150 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 19:00:01,190 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 19:00:01,209 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 20:00:00 UTC)" executed successfully 2026-08-22 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 21:00:00 UTC)" (scheduled at 2026-08-22 20:00:00+00:00) 2026-08-22 20:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-22 20:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 20:00:01,121 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 20:00:01,123 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 20:00:01,127 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 20:00:01,128 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 20:00:01,174 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 20:00:01,199 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 21:00:00 UTC)" executed successfully 2026-08-22 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 22:00:00 UTC)" (scheduled at 2026-08-22 21:00:00+00:00) 2026-08-22 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-22 21:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 21:00:01,031 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 21:00:01,032 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 21:00:01,034 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 21:00:01,034 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 21:00:01,068 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 21:00:01,086 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 22:00:00 UTC)" executed successfully 2026-08-22 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 23:00:00 UTC)" (scheduled at 2026-08-22 22:00:00+00:00) 2026-08-22 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-22 22:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 22:00:01,228 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 22:00:01,230 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 22:00:01,233 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 22:00:01,233 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 22:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 22:00:01,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-22 23:00:00 UTC)" executed successfully 2026-08-22 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 00:00:00 UTC)" (scheduled at 2026-08-22 23:00:00+00:00) 2026-08-22 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-22 23:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-22 23:00:01,145 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-22 23:00:01,147 INFO [fb-sync.worker] Scraped 50 posts 2026-08-22 23:00:01,149 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-22 23:00:01,150 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-22 23:00:01,179 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-22 23:00:01,198 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 00:00:00 UTC)" executed successfully 2026-08-23 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 01:00:00 UTC)" (scheduled at 2026-08-23 00:00:00+00:00) 2026-08-23 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-23 00:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 00:00:01,048 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 00:00:01,049 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 00:00:01,053 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 00:00:01,053 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 00:00:01,098 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 00:00:01,116 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 01:00:00 UTC)" executed successfully 2026-08-23 01:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 02:00:00 UTC)" (scheduled at 2026-08-23 01:00:00+00:00) 2026-08-23 01:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-23 01:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 01:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 01:00:01,116 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 01:00:01,120 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 01:00:01,120 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 01:00:01,180 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 01:00:01,194 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 02:00:00 UTC)" executed successfully 2026-08-23 02:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 03:00:00 UTC)" (scheduled at 2026-08-23 02:00:00+00:00) 2026-08-23 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-23 02:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 02:00:01,081 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 02:00:01,083 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 02:00:01,085 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 02:00:01,086 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 02:00:01,144 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 02:00:01,165 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 03:00:00 UTC)" executed successfully 2026-08-23 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 04:00:00 UTC)" (scheduled at 2026-08-23 03:00:00+00:00) 2026-08-23 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-23 03:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 03:00:01,274 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 03:00:01,276 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 03:00:01,278 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 03:00:01,279 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 03:00:01,333 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 03:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 04:00:00 UTC)" executed successfully 2026-08-23 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 05:00:00 UTC)" (scheduled at 2026-08-23 04:00:00+00:00) 2026-08-23 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-23 04:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 04:00:01,933 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 04:00:01,935 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 04:00:01,939 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 04:00:01,939 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 04:00:01,990 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 04:00:02,019 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 05:00:00 UTC)" executed successfully 2026-08-23 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 06:00:00 UTC)" (scheduled at 2026-08-23 05:00:00+00:00) 2026-08-23 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-23 05:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 05:00:00,976 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 05:00:00,977 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 05:00:00,981 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 05:00:00,981 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 05:00:01,016 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 05:00:01,036 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 06:00:00 UTC)" executed successfully 2026-08-23 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 07:00:00 UTC)" (scheduled at 2026-08-23 06:00:00+00:00) 2026-08-23 06:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-23 06:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 06:00:01,208 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 06:00:01,210 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 06:00:01,213 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 06:00:01,214 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 06:00:01,259 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 06:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 07:00:00 UTC)" executed successfully 2026-08-23 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 08:00:00 UTC)" (scheduled at 2026-08-23 07:00:00+00:00) 2026-08-23 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-23 07:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 07:00:00,955 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 07:00:00,956 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 07:00:00,959 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 07:00:00,960 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 07:00:01,015 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 07:00:01,038 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 08:00:00 UTC)" executed successfully 2026-08-23 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 09:00:00 UTC)" (scheduled at 2026-08-23 08:00:00+00:00) 2026-08-23 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-23 08:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 08:00:01,158 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 08:00:01,159 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 08:00:01,162 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 08:00:01,162 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 08:00:01,200 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 08:00:01,215 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 09:00:00 UTC)" executed successfully 2026-08-23 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 10:00:00 UTC)" (scheduled at 2026-08-23 09:00:00+00:00) 2026-08-23 09:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-23 09:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 09:00:01,192 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 09:00:01,194 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 09:00:01,197 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 09:00:01,198 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 09:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 09:00:01,282 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 10:00:00 UTC)" executed successfully 2026-08-23 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 11:00:00 UTC)" (scheduled at 2026-08-23 10:00:00+00:00) 2026-08-23 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-23 10:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 10:00:01,223 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 10:00:01,224 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 10:00:01,227 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 10:00:01,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 10:00:01,276 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 10:00:01,297 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 11:00:00 UTC)" executed successfully 2026-08-23 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 12:00:00 UTC)" (scheduled at 2026-08-23 11:00:00+00:00) 2026-08-23 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-23 11:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 11:00:01,337 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 11:00:01,339 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 11:00:01,342 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 11:00:01,343 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 11:00:01,401 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 11:00:01,429 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 12:00:00 UTC)" executed successfully 2026-08-23 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 13:00:00 UTC)" (scheduled at 2026-08-23 12:00:00+00:00) 2026-08-23 12:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-23 12:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 12:00:01,131 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 12:00:01,133 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 12:00:01,136 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 12:00:01,136 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 12:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 12:00:01,220 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 13:00:00 UTC)" executed successfully 2026-08-23 13:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 14:00:00 UTC)" (scheduled at 2026-08-23 13:00:00+00:00) 2026-08-23 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-23 13:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 13:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 13:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 13:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 13:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 13:00:01,243 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 13:00:01,270 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 14:00:00 UTC)" executed successfully 2026-08-23 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 15:00:00 UTC)" (scheduled at 2026-08-23 14:00:00+00:00) 2026-08-23 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-23 14:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 14:00:01,675 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 14:00:01,676 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 14:00:01,679 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 14:00:01,680 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 14:00:01,735 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 14:00:01,757 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 15:00:00 UTC)" executed successfully 2026-08-23 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 16:00:00 UTC)" (scheduled at 2026-08-23 15:00:00+00:00) 2026-08-23 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-23 15:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 15:00:01,182 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 15:00:01,183 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 15:00:01,187 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 15:00:01,187 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 15:00:01,262 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 15:00:01,284 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 16:00:00 UTC)" executed successfully 2026-08-23 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 17:00:00 UTC)" (scheduled at 2026-08-23 16:00:00+00:00) 2026-08-23 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-23 16:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 16:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 16:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 16:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 16:00:01,271 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 16:00:01,323 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 16:00:01,345 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 17:00:00 UTC)" executed successfully 2026-08-23 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 18:00:00 UTC)" (scheduled at 2026-08-23 17:00:00+00:00) 2026-08-23 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-23 17:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 17:00:02,461 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 17:00:02,463 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 17:00:02,467 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 17:00:02,467 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 17:00:02,548 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 17:00:02,579 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 18:00:00 UTC)" executed successfully 2026-08-23 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 19:00:00 UTC)" (scheduled at 2026-08-23 18:00:00+00:00) 2026-08-23 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-23 18:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 18:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 18:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 18:00:01,270 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 18:00:01,270 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 18:00:01,306 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 18:00:01,322 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 19:00:00 UTC)" executed successfully 2026-08-23 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 20:00:00 UTC)" (scheduled at 2026-08-23 19:00:00+00:00) 2026-08-23 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-23 19:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 19:00:02,203 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 19:00:02,204 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 19:00:02,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 19:00:02,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 19:00:02,260 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 19:00:02,285 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 20:00:00 UTC)" executed successfully 2026-08-23 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 21:00:00 UTC)" (scheduled at 2026-08-23 20:00:00+00:00) 2026-08-23 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-23 20:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 20:00:01,156 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 20:00:01,157 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 20:00:01,160 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 20:00:01,160 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 20:00:01,205 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 20:00:01,265 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 21:00:00 UTC)" executed successfully 2026-08-23 21:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 22:00:00 UTC)" (scheduled at 2026-08-23 21:00:00+00:00) 2026-08-23 21:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-23 21:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 21:00:01,319 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 21:00:01,320 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 21:00:01,324 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 21:00:01,324 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 21:00:01,372 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 21:00:01,396 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 22:00:00 UTC)" executed successfully 2026-08-23 22:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 23:00:00 UTC)" (scheduled at 2026-08-23 22:00:00+00:00) 2026-08-23 22:00:00,003 INFO [fb-sync] Starting FB sync... 2026-08-23 22:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 22:00:01,436 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 22:00:01,439 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 22:00:01,444 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 22:00:01,445 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 22:00:01,524 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 22:00:01,552 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-23 23:00:00 UTC)" executed successfully 2026-08-23 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 00:00:00 UTC)" (scheduled at 2026-08-23 23:00:00+00:00) 2026-08-23 23:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-23 23:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-23 23:00:01,124 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-23 23:00:01,125 INFO [fb-sync.worker] Scraped 50 posts 2026-08-23 23:00:01,130 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-23 23:00:01,130 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-23 23:00:01,172 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-23 23:00:01,193 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 00:00:00 UTC)" executed successfully 2026-08-24 00:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 01:00:00 UTC)" (scheduled at 2026-08-24 00:00:00+00:00) 2026-08-24 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-24 00:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 00:00:01,196 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 00:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 00:00:01,205 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 00:00:01,205 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 00:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 00:00:01,289 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 01:00:00 UTC)" executed successfully 2026-08-24 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 02:00:00 UTC)" (scheduled at 2026-08-24 01:00:00+00:00) 2026-08-24 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-24 01:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 01:00:02,492 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 01:00:02,494 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 01:00:02,498 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 01:00:02,499 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 01:00:02,563 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 01:00:02,594 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 02:00:00 UTC)" executed successfully 2026-08-24 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 03:00:00 UTC)" (scheduled at 2026-08-24 02:00:00+00:00) 2026-08-24 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-24 02:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 02:00:01,843 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 02:00:01,845 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 02:00:01,849 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 02:00:01,849 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 02:00:01,908 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 02:00:01,931 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 03:00:00 UTC)" executed successfully 2026-08-24 03:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 04:00:00 UTC)" (scheduled at 2026-08-24 03:00:00+00:00) 2026-08-24 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-24 03:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 03:00:01,644 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 03:00:01,646 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 03:00:01,649 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 03:00:01,649 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 03:00:01,706 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 03:00:01,732 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 04:00:00 UTC)" executed successfully 2026-08-24 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 05:00:00 UTC)" (scheduled at 2026-08-24 04:00:00+00:00) 2026-08-24 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-24 04:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 04:00:01,954 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 04:00:01,956 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 04:00:01,959 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 04:00:01,960 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 04:00:02,010 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 04:00:02,035 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 05:00:00 UTC)" executed successfully 2026-08-24 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 06:00:00 UTC)" (scheduled at 2026-08-24 05:00:00+00:00) 2026-08-24 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-24 05:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 05:00:01,406 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 05:00:01,408 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 05:00:01,417 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 05:00:01,418 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 05:00:01,477 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 05:00:01,504 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 06:00:00 UTC)" executed successfully 2026-08-24 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 07:00:00 UTC)" (scheduled at 2026-08-24 06:00:00+00:00) 2026-08-24 06:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-24 06:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 06:00:01,496 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 06:00:01,497 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 06:00:01,499 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 06:00:01,499 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 06:00:01,543 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 06:00:01,570 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 07:00:00 UTC)" executed successfully 2026-08-24 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 08:00:00 UTC)" (scheduled at 2026-08-24 07:00:00+00:00) 2026-08-24 07:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-24 07:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 07:00:01,094 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 07:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 07:00:01,098 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 07:00:01,099 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 07:00:01,140 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 07:00:01,166 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 08:00:00 UTC)" executed successfully 2026-08-24 08:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 09:00:00 UTC)" (scheduled at 2026-08-24 08:00:00+00:00) 2026-08-24 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-24 08:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 08:00:01,491 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 08:00:01,492 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 08:00:01,494 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 08:00:01,494 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 08:00:01,544 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 08:00:01,570 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 09:00:00 UTC)" executed successfully 2026-08-24 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 10:00:00 UTC)" (scheduled at 2026-08-24 09:00:00+00:00) 2026-08-24 09:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-24 09:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 09:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 09:00:01,268 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 09:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 09:00:01,272 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 09:00:01,335 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 09:00:01,365 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 10:00:00 UTC)" executed successfully 2026-08-24 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 11:00:00 UTC)" (scheduled at 2026-08-24 10:00:00+00:00) 2026-08-24 10:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-24 10:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 10:00:01,292 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 10:00:01,294 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 10:00:01,301 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 10:00:01,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 10:00:01,378 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 10:00:01,638 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 11:00:00 UTC)" executed successfully 2026-08-24 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 12:00:00 UTC)" (scheduled at 2026-08-24 11:00:00+00:00) 2026-08-24 11:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-24 11:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 11:00:01,619 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 11:00:01,621 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 11:00:01,624 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 11:00:01,625 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 11:00:01,679 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 11:00:01,705 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 12:00:00 UTC)" executed successfully 2026-08-24 12:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 13:00:00 UTC)" (scheduled at 2026-08-24 12:00:00+00:00) 2026-08-24 12:00:00,016 INFO [fb-sync] Starting FB sync... 2026-08-24 12:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 12:00:01,189 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 12:00:01,191 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 12:00:01,194 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 12:00:01,195 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 12:00:01,248 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 12:00:01,279 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 13:00:00 UTC)" executed successfully 2026-08-24 13:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 14:00:00 UTC)" (scheduled at 2026-08-24 13:00:00+00:00) 2026-08-24 13:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-24 13:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 13:00:01,576 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 13:00:01,578 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 13:00:01,579 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 13:00:01,580 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 13:00:01,639 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 13:00:01,664 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 14:00:00 UTC)" executed successfully 2026-08-24 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 15:00:00 UTC)" (scheduled at 2026-08-24 14:00:00+00:00) 2026-08-24 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-24 14:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 14:00:01,998 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 14:00:01,999 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 14:00:02,003 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 14:00:02,003 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 14:00:02,061 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 14:00:02,078 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 15:00:00 UTC)" executed successfully 2026-08-24 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 16:00:00 UTC)" (scheduled at 2026-08-24 15:00:00+00:00) 2026-08-24 15:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-24 15:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 15:00:01,495 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 15:00:01,497 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 15:00:01,500 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 15:00:01,500 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 15:00:01,554 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 15:00:01,580 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 16:00:00 UTC)" executed successfully 2026-08-24 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 17:00:00 UTC)" (scheduled at 2026-08-24 16:00:00+00:00) 2026-08-24 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-24 16:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 16:00:01,334 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 16:00:01,336 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 16:00:01,340 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 16:00:01,340 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 16:00:01,376 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 16:00:01,391 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 17:00:00 UTC)" executed successfully 2026-08-24 17:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 18:00:00 UTC)" (scheduled at 2026-08-24 17:00:00+00:00) 2026-08-24 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-24 17:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 17:00:01,760 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 17:00:01,762 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 17:00:01,765 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 17:00:01,765 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 17:00:01,815 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 17:00:01,840 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 18:00:00 UTC)" executed successfully 2026-08-24 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 19:00:00 UTC)" (scheduled at 2026-08-24 18:00:00+00:00) 2026-08-24 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-24 18:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 18:00:01,216 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 18:00:01,218 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 18:00:01,220 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 18:00:01,221 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 18:00:01,275 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 18:00:01,300 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 19:00:00 UTC)" executed successfully 2026-08-24 19:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 20:00:00 UTC)" (scheduled at 2026-08-24 19:00:00+00:00) 2026-08-24 19:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-24 19:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 19:00:01,125 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 19:00:01,128 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 19:00:01,131 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 19:00:01,131 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 19:00:01,188 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 19:00:01,213 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 20:00:00 UTC)" executed successfully 2026-08-24 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 21:00:00 UTC)" (scheduled at 2026-08-24 20:00:00+00:00) 2026-08-24 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-24 20:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 20:00:01,273 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 20:00:01,276 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 20:00:01,280 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 20:00:01,281 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 20:00:01,363 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 20:00:01,400 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 21:00:00 UTC)" executed successfully 2026-08-24 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 22:00:00 UTC)" (scheduled at 2026-08-24 21:00:00+00:00) 2026-08-24 21:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-24 21:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 21:00:01,088 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 21:00:01,091 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 21:00:01,095 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 21:00:01,096 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 21:00:01,159 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 21:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 22:00:00 UTC)" executed successfully 2026-08-24 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 23:00:00 UTC)" (scheduled at 2026-08-24 22:00:00+00:00) 2026-08-24 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-24 22:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 22:00:00,963 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 22:00:00,965 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 22:00:00,968 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 22:00:00,968 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 22:00:01,009 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 22:00:01,030 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-24 23:00:00 UTC)" executed successfully 2026-08-24 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 00:00:00 UTC)" (scheduled at 2026-08-24 23:00:00+00:00) 2026-08-24 23:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-24 23:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-24 23:00:01,095 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-24 23:00:01,097 INFO [fb-sync.worker] Scraped 50 posts 2026-08-24 23:00:01,101 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-24 23:00:01,101 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-24 23:00:01,161 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-24 23:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 00:00:00 UTC)" executed successfully 2026-08-25 00:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 01:00:00 UTC)" (scheduled at 2026-08-25 00:00:00+00:00) 2026-08-25 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-25 00:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 00:00:01,080 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 00:00:01,082 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 00:00:01,085 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 00:00:01,085 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 00:00:01,151 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 00:00:01,172 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 01:00:00 UTC)" executed successfully 2026-08-25 01:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 02:00:00 UTC)" (scheduled at 2026-08-25 01:00:00+00:00) 2026-08-25 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-25 01:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 01:00:01,678 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 01:00:01,681 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 01:00:01,684 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 01:00:01,685 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 01:00:01,757 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 01:00:01,786 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 02:00:00 UTC)" executed successfully 2026-08-25 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 03:00:00 UTC)" (scheduled at 2026-08-25 02:00:00+00:00) 2026-08-25 02:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-25 02:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 02:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 02:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 02:00:01,199 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 02:00:01,199 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 02:00:01,246 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 02:00:01,269 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 03:00:00 UTC)" executed successfully 2026-08-25 03:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 04:00:00 UTC)" (scheduled at 2026-08-25 03:00:00+00:00) 2026-08-25 03:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-25 03:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 03:00:01,007 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 03:00:01,009 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 03:00:01,012 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 03:00:01,012 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 03:00:01,056 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 03:00:01,078 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 04:00:00 UTC)" executed successfully 2026-08-25 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 05:00:00 UTC)" (scheduled at 2026-08-25 04:00:00+00:00) 2026-08-25 04:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-25 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 04:00:01,741 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 04:00:01,743 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 04:00:01,747 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 04:00:01,747 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 04:00:01,813 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 04:00:01,843 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 05:00:00 UTC)" executed successfully 2026-08-25 05:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 06:00:00 UTC)" (scheduled at 2026-08-25 05:00:00+00:00) 2026-08-25 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-25 05:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 05:00:01,795 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 05:00:01,797 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 05:00:01,800 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 05:00:01,800 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 05:00:01,870 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 05:00:01,890 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 06:00:00 UTC)" executed successfully 2026-08-25 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 07:00:00 UTC)" (scheduled at 2026-08-25 06:00:00+00:00) 2026-08-25 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-25 06:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 06:00:01,357 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 06:00:01,359 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 06:00:01,362 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 06:00:01,362 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 06:00:01,423 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 06:00:01,449 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 07:00:00 UTC)" executed successfully 2026-08-25 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 08:00:00 UTC)" (scheduled at 2026-08-25 07:00:00+00:00) 2026-08-25 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-25 07:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 07:00:01,069 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 07:00:01,071 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 07:00:01,074 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 07:00:01,074 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 07:00:01,126 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 07:00:01,143 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 08:00:00 UTC)" executed successfully 2026-08-25 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 09:00:00 UTC)" (scheduled at 2026-08-25 08:00:00+00:00) 2026-08-25 08:00:00,016 INFO [fb-sync] Starting FB sync... 2026-08-25 08:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 08:00:02,121 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 08:00:02,123 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 08:00:02,126 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 08:00:02,127 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 08:00:02,185 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 08:00:02,212 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 09:00:00 UTC)" executed successfully 2026-08-25 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 10:00:00 UTC)" (scheduled at 2026-08-25 09:00:00+00:00) 2026-08-25 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-25 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 09:00:01,326 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 09:00:01,327 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 09:00:01,329 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 09:00:01,330 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 09:00:01,385 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 09:00:01,418 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 10:00:00 UTC)" executed successfully 2026-08-25 10:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 11:00:00 UTC)" (scheduled at 2026-08-25 10:00:00+00:00) 2026-08-25 10:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-25 10:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 10:00:01,280 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 10:00:01,282 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 10:00:01,285 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 10:00:01,285 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 10:00:01,340 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 10:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 11:00:00 UTC)" executed successfully 2026-08-25 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 12:00:00 UTC)" (scheduled at 2026-08-25 11:00:00+00:00) 2026-08-25 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-25 11:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 11:00:01,198 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 11:00:01,199 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 11:00:01,201 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 11:00:01,201 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 11:00:01,244 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 11:00:01,262 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 12:00:00 UTC)" executed successfully 2026-08-25 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 13:00:00 UTC)" (scheduled at 2026-08-25 12:00:00+00:00) 2026-08-25 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-25 12:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 12:00:01,246 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 12:00:01,248 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 12:00:01,251 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 12:00:01,252 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 12:00:01,304 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 12:00:01,327 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 13:00:00 UTC)" executed successfully 2026-08-25 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 14:00:00 UTC)" (scheduled at 2026-08-25 13:00:00+00:00) 2026-08-25 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-25 13:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 13:00:01,077 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 13:00:01,079 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 13:00:01,082 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 13:00:01,082 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 13:00:01,125 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 13:00:01,143 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 14:00:00 UTC)" executed successfully 2026-08-25 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 15:00:00 UTC)" (scheduled at 2026-08-25 14:00:00+00:00) 2026-08-25 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-25 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 14:00:01,191 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 14:00:01,193 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 14:00:01,196 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 14:00:01,196 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 14:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 14:00:01,287 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 15:00:00 UTC)" executed successfully 2026-08-25 15:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 16:00:00 UTC)" (scheduled at 2026-08-25 15:00:00+00:00) 2026-08-25 15:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-25 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 15:00:01,089 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 15:00:01,091 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 15:00:01,094 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 15:00:01,094 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 15:00:01,163 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 15:00:01,179 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 16:00:00 UTC)" executed successfully 2026-08-25 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 17:00:00 UTC)" (scheduled at 2026-08-25 16:00:00+00:00) 2026-08-25 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-25 16:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 16:00:01,542 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 16:00:01,544 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 16:00:01,547 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 16:00:01,547 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 16:00:01,597 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 16:00:01,623 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 17:00:00 UTC)" executed successfully 2026-08-25 17:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 18:00:00 UTC)" (scheduled at 2026-08-25 17:00:00+00:00) 2026-08-25 17:00:00,018 INFO [fb-sync] Starting FB sync... 2026-08-25 17:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 17:00:01,371 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 17:00:01,372 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 17:00:01,375 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 17:00:01,375 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 17:00:01,426 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 17:00:01,460 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 18:00:00 UTC)" executed successfully 2026-08-25 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 19:00:00 UTC)" (scheduled at 2026-08-25 18:00:00+00:00) 2026-08-25 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-25 18:00:00,098 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 18:00:02,329 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 18:00:02,330 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 18:00:02,334 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 18:00:02,335 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 18:00:02,383 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 18:00:02,407 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 19:00:00 UTC)" executed successfully 2026-08-25 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 20:00:00 UTC)" (scheduled at 2026-08-25 19:00:00+00:00) 2026-08-25 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-25 19:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 19:00:01,331 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 19:00:01,333 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 19:00:01,336 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 19:00:01,336 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 19:00:01,390 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 19:00:01,447 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 20:00:00 UTC)" executed successfully 2026-08-25 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 21:00:00 UTC)" (scheduled at 2026-08-25 20:00:00+00:00) 2026-08-25 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-25 20:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 20:00:01,372 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 20:00:01,374 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 20:00:01,376 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 20:00:01,376 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 20:00:01,424 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 20:00:01,453 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 21:00:00 UTC)" executed successfully 2026-08-25 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 22:00:00 UTC)" (scheduled at 2026-08-25 21:00:00+00:00) 2026-08-25 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-25 21:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 21:00:01,065 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 21:00:01,067 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 21:00:01,070 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 21:00:01,070 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 21:00:01,114 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 21:00:01,134 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 22:00:00 UTC)" executed successfully 2026-08-25 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 23:00:00 UTC)" (scheduled at 2026-08-25 22:00:00+00:00) 2026-08-25 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-25 22:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 22:00:01,159 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 22:00:01,160 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 22:00:01,165 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 22:00:01,165 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 22:00:01,234 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 22:00:01,263 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-25 23:00:00 UTC)" executed successfully 2026-08-25 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 00:00:00 UTC)" (scheduled at 2026-08-25 23:00:00+00:00) 2026-08-25 23:00:00,022 INFO [fb-sync] Starting FB sync... 2026-08-25 23:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-25 23:00:02,055 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-25 23:00:02,057 INFO [fb-sync.worker] Scraped 50 posts 2026-08-25 23:00:02,060 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-25 23:00:02,061 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-25 23:00:02,121 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-25 23:00:02,147 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 00:00:00 UTC)" executed successfully 2026-08-26 00:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 01:00:00 UTC)" (scheduled at 2026-08-26 00:00:00+00:00) 2026-08-26 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-26 00:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 00:00:02,417 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 00:00:02,419 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 00:00:02,422 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 00:00:02,422 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 00:00:02,484 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 00:00:02,514 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 01:00:00 UTC)" executed successfully 2026-08-26 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 02:00:00 UTC)" (scheduled at 2026-08-26 01:00:00+00:00) 2026-08-26 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 01:00:01,386 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 01:00:01,387 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 01:00:01,391 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 01:00:01,391 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 01:00:01,437 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 01:00:01,465 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 02:00:00 UTC)" executed successfully 2026-08-26 02:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 03:00:00 UTC)" (scheduled at 2026-08-26 02:00:00+00:00) 2026-08-26 02:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-26 02:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 02:00:01,286 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 02:00:01,290 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 02:00:01,296 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 02:00:01,297 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 02:00:01,362 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 02:00:01,383 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 03:00:00 UTC)" executed successfully 2026-08-26 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 04:00:00 UTC)" (scheduled at 2026-08-26 03:00:00+00:00) 2026-08-26 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-26 03:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 03:00:01,244 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 03:00:01,246 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 03:00:01,249 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 03:00:01,249 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 03:00:01,309 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 03:00:01,336 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 04:00:00 UTC)" executed successfully 2026-08-26 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 05:00:00 UTC)" (scheduled at 2026-08-26 04:00:00+00:00) 2026-08-26 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-26 04:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 04:00:01,549 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 04:00:01,551 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 04:00:01,554 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 04:00:01,554 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 04:00:01,617 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 04:00:01,634 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 05:00:00 UTC)" executed successfully 2026-08-26 05:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 06:00:00 UTC)" (scheduled at 2026-08-26 05:00:00+00:00) 2026-08-26 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-26 05:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 05:00:01,094 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 05:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 05:00:01,098 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 05:00:01,099 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 05:00:01,152 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 05:00:01,170 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 06:00:00 UTC)" executed successfully 2026-08-26 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 07:00:00 UTC)" (scheduled at 2026-08-26 06:00:00+00:00) 2026-08-26 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-26 06:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 06:00:01,110 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 06:00:01,112 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 06:00:01,115 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 06:00:01,115 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 06:00:01,167 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 06:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 07:00:00 UTC)" executed successfully 2026-08-26 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 08:00:00 UTC)" (scheduled at 2026-08-26 07:00:00+00:00) 2026-08-26 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 07:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 07:00:01,148 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 07:00:01,150 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 07:00:01,153 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 07:00:01,154 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 07:00:01,204 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 07:00:01,224 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 08:00:00 UTC)" executed successfully 2026-08-26 08:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 09:00:00 UTC)" (scheduled at 2026-08-26 08:00:00+00:00) 2026-08-26 08:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-26 08:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 08:00:01,320 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 08:00:01,322 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 08:00:01,325 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 08:00:01,325 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 08:00:01,563 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 08:00:01,590 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 09:00:00 UTC)" executed successfully 2026-08-26 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 10:00:00 UTC)" (scheduled at 2026-08-26 09:00:00+00:00) 2026-08-26 09:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-26 09:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 09:00:01,062 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 09:00:01,064 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 09:00:01,069 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 09:00:01,069 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 09:00:01,140 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 09:00:01,155 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 10:00:00 UTC)" executed successfully 2026-08-26 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 11:00:00 UTC)" (scheduled at 2026-08-26 10:00:00+00:00) 2026-08-26 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-26 10:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 10:00:01,554 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 10:00:01,556 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 10:00:01,560 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 10:00:01,560 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 10:00:01,618 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 10:00:01,646 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 11:00:00 UTC)" executed successfully 2026-08-26 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 12:00:00 UTC)" (scheduled at 2026-08-26 11:00:00+00:00) 2026-08-26 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 11:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 11:00:01,377 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 11:00:01,379 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 11:00:01,383 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 11:00:01,383 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 11:00:01,450 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 11:00:01,476 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 12:00:00 UTC)" executed successfully 2026-08-26 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 13:00:00 UTC)" (scheduled at 2026-08-26 12:00:00+00:00) 2026-08-26 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 12:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 12:00:01,624 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 12:00:01,626 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 12:00:01,630 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 12:00:01,630 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 12:00:01,686 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 12:00:01,715 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 13:00:00 UTC)" executed successfully 2026-08-26 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 14:00:00 UTC)" (scheduled at 2026-08-26 13:00:00+00:00) 2026-08-26 13:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-26 13:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 13:00:01,231 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 13:00:01,232 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 13:00:01,234 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 13:00:01,234 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 13:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 13:00:01,306 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 14:00:00 UTC)" executed successfully 2026-08-26 14:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 15:00:00 UTC)" (scheduled at 2026-08-26 14:00:00+00:00) 2026-08-26 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 14:00:01,625 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 14:00:01,627 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 14:00:01,630 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 14:00:01,630 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 14:00:01,680 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 14:00:01,718 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 15:00:00 UTC)" executed successfully 2026-08-26 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 16:00:00 UTC)" (scheduled at 2026-08-26 15:00:00+00:00) 2026-08-26 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 15:00:00,101 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 15:00:01,313 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 15:00:01,316 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 15:00:01,318 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 15:00:01,318 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 15:00:01,432 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 15:00:01,461 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 16:00:00 UTC)" executed successfully 2026-08-26 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 17:00:00 UTC)" (scheduled at 2026-08-26 16:00:00+00:00) 2026-08-26 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-26 16:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 16:00:01,797 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 16:00:01,799 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 16:00:01,803 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 16:00:01,804 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 16:00:01,875 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 16:00:01,901 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 17:00:00 UTC)" executed successfully 2026-08-26 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 18:00:00 UTC)" (scheduled at 2026-08-26 17:00:00+00:00) 2026-08-26 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 17:00:01,345 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 17:00:01,347 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 17:00:01,351 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 17:00:01,351 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 17:00:01,409 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 17:00:01,436 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 18:00:00 UTC)" executed successfully 2026-08-26 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 19:00:00 UTC)" (scheduled at 2026-08-26 18:00:00+00:00) 2026-08-26 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-26 18:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 18:00:01,443 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 18:00:01,445 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 18:00:01,449 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 18:00:01,450 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 18:00:01,511 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 18:00:01,543 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 19:00:00 UTC)" executed successfully 2026-08-26 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 20:00:00 UTC)" (scheduled at 2026-08-26 19:00:00+00:00) 2026-08-26 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-26 19:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 19:00:01,166 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 19:00:01,168 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 19:00:01,171 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 19:00:01,172 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 19:00:01,238 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 19:00:01,268 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 20:00:00 UTC)" executed successfully 2026-08-26 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 21:00:00 UTC)" (scheduled at 2026-08-26 20:00:00+00:00) 2026-08-26 20:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-26 20:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 20:00:02,317 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 20:00:02,319 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 20:00:02,321 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 20:00:02,321 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 20:00:02,374 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 20:00:02,401 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 21:00:00 UTC)" executed successfully 2026-08-26 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 22:00:00 UTC)" (scheduled at 2026-08-26 21:00:00+00:00) 2026-08-26 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-26 21:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 21:00:01,232 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 21:00:01,234 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 21:00:01,237 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 21:00:01,237 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 21:00:01,301 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 21:00:01,323 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 22:00:00 UTC)" executed successfully 2026-08-26 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 23:00:00 UTC)" (scheduled at 2026-08-26 22:00:00+00:00) 2026-08-26 22:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-26 22:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 22:00:03,070 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 22:00:03,072 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 22:00:03,076 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 22:00:03,077 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 22:00:03,148 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 22:00:03,177 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-26 23:00:00 UTC)" executed successfully 2026-08-26 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 00:00:00 UTC)" (scheduled at 2026-08-26 23:00:00+00:00) 2026-08-26 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-26 23:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-26 23:00:01,550 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-26 23:00:01,552 INFO [fb-sync.worker] Scraped 50 posts 2026-08-26 23:00:01,556 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-26 23:00:01,556 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-26 23:00:01,626 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-26 23:00:01,660 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 00:00:00 UTC)" executed successfully 2026-08-27 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 01:00:00 UTC)" (scheduled at 2026-08-27 00:00:00+00:00) 2026-08-27 00:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-27 00:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 00:00:01,178 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 00:00:01,180 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 00:00:01,184 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 00:00:01,185 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 00:00:01,268 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 00:00:01,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 01:00:00 UTC)" executed successfully 2026-08-27 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 02:00:00 UTC)" (scheduled at 2026-08-27 01:00:00+00:00) 2026-08-27 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-27 01:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 01:00:01,317 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 01:00:01,319 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 01:00:01,321 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 01:00:01,321 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 01:00:01,381 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 01:00:01,410 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 02:00:00 UTC)" executed successfully 2026-08-27 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 03:00:00 UTC)" (scheduled at 2026-08-27 02:00:00+00:00) 2026-08-27 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-27 02:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 02:00:01,101 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 02:00:01,102 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 02:00:01,107 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 02:00:01,107 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 02:00:01,200 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 02:00:01,237 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 03:00:00 UTC)" executed successfully 2026-08-27 03:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 04:00:00 UTC)" (scheduled at 2026-08-27 03:00:00+00:00) 2026-08-27 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-27 03:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 03:00:01,999 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 03:00:02,001 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 03:00:02,004 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 03:00:02,005 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 03:00:02,064 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 03:00:02,092 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 04:00:00 UTC)" executed successfully 2026-08-27 04:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 05:00:00 UTC)" (scheduled at 2026-08-27 04:00:00+00:00) 2026-08-27 04:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-27 04:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 04:00:01,899 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 04:00:01,900 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 04:00:01,902 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 04:00:01,903 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 04:00:01,969 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 04:00:01,998 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 05:00:00 UTC)" executed successfully 2026-08-27 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 06:00:00 UTC)" (scheduled at 2026-08-27 05:00:00+00:00) 2026-08-27 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-27 05:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 05:00:02,743 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 05:00:02,744 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 05:00:02,749 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 05:00:02,749 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 05:00:02,833 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 05:00:02,870 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 06:00:00 UTC)" executed successfully 2026-08-27 06:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 07:00:00 UTC)" (scheduled at 2026-08-27 06:00:00+00:00) 2026-08-27 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-27 06:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 06:00:01,057 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 06:00:01,059 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 06:00:01,062 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 06:00:01,062 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 06:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 06:00:01,132 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 07:00:00 UTC)" executed successfully 2026-08-27 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 08:00:00 UTC)" (scheduled at 2026-08-27 07:00:00+00:00) 2026-08-27 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-27 07:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 07:00:01,735 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 07:00:01,737 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 07:00:01,740 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 07:00:01,741 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 07:00:01,817 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 07:00:01,846 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 08:00:00 UTC)" executed successfully 2026-08-27 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 09:00:00 UTC)" (scheduled at 2026-08-27 08:00:00+00:00) 2026-08-27 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-27 08:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 08:00:01,183 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 08:00:01,185 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 08:00:01,187 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 08:00:01,187 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 08:00:01,245 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 08:00:01,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 09:00:00 UTC)" executed successfully 2026-08-27 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 10:00:00 UTC)" (scheduled at 2026-08-27 09:00:00+00:00) 2026-08-27 09:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-27 09:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 09:00:01,200 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 09:00:01,202 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 09:00:01,204 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 09:00:01,204 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 09:00:01,261 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 09:00:01,282 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 10:00:00 UTC)" executed successfully 2026-08-27 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 11:00:00 UTC)" (scheduled at 2026-08-27 10:00:00+00:00) 2026-08-27 10:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-27 10:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 10:00:01,490 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 10:00:01,491 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 10:00:01,494 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 10:00:01,495 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 10:00:01,542 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 10:00:01,564 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 11:00:00 UTC)" executed successfully 2026-08-27 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 12:00:00 UTC)" (scheduled at 2026-08-27 11:00:00+00:00) 2026-08-27 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-27 11:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 11:00:01,157 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 11:00:01,159 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 11:00:01,162 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 11:00:01,163 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 11:00:01,219 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 11:00:01,244 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 12:00:00 UTC)" executed successfully 2026-08-27 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 13:00:00 UTC)" (scheduled at 2026-08-27 12:00:00+00:00) 2026-08-27 12:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-27 12:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 12:00:01,509 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 12:00:01,511 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 12:00:01,515 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 12:00:01,516 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 12:00:01,578 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 12:00:01,607 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 13:00:00 UTC)" executed successfully 2026-08-27 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 14:00:00 UTC)" (scheduled at 2026-08-27 13:00:00+00:00) 2026-08-27 13:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-27 13:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 13:00:01,383 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 13:00:01,385 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 13:00:01,388 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 13:00:01,388 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 13:00:01,448 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 13:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 14:00:00 UTC)" executed successfully 2026-08-27 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 15:00:00 UTC)" (scheduled at 2026-08-27 14:00:00+00:00) 2026-08-27 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-27 14:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 14:00:01,727 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 14:00:01,730 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 14:00:01,735 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 14:00:01,735 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 14:00:01,785 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 14:00:01,822 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 15:00:00 UTC)" executed successfully 2026-08-27 15:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 16:00:00 UTC)" (scheduled at 2026-08-27 15:00:00+00:00) 2026-08-27 15:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-27 15:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 15:00:01,249 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 15:00:01,251 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 15:00:01,254 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 15:00:01,254 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 15:00:01,315 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 15:00:01,345 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 16:00:00 UTC)" executed successfully 2026-08-27 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 17:00:00 UTC)" (scheduled at 2026-08-27 16:00:00+00:00) 2026-08-27 16:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-27 16:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 16:00:01,872 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 16:00:01,875 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 16:00:01,878 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 16:00:01,879 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 16:00:01,948 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 16:00:01,981 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 17:00:00 UTC)" executed successfully 2026-08-27 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 18:00:00 UTC)" (scheduled at 2026-08-27 17:00:00+00:00) 2026-08-27 17:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-27 17:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 17:00:01,916 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 17:00:01,918 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 17:00:01,921 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 17:00:01,922 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 17:00:01,987 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 17:00:02,020 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 18:00:00 UTC)" executed successfully 2026-08-27 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 19:00:00 UTC)" (scheduled at 2026-08-27 18:00:00+00:00) 2026-08-27 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-27 18:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 18:00:01,240 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 18:00:01,245 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 18:00:01,249 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 18:00:01,249 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 18:00:01,338 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 18:00:01,372 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 19:00:00 UTC)" executed successfully 2026-08-27 19:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 20:00:00 UTC)" (scheduled at 2026-08-27 19:00:00+00:00) 2026-08-27 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-27 19:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 19:00:01,269 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 19:00:01,271 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 19:00:01,273 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 19:00:01,273 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 19:00:01,344 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 19:00:01,374 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 20:00:00 UTC)" executed successfully 2026-08-27 20:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 21:00:00 UTC)" (scheduled at 2026-08-27 20:00:00+00:00) 2026-08-27 20:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-27 20:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 20:00:01,331 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 20:00:01,333 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 20:00:01,337 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 20:00:01,337 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 20:00:01,406 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 20:00:01,437 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 21:00:00 UTC)" executed successfully 2026-08-27 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 22:00:00 UTC)" (scheduled at 2026-08-27 21:00:00+00:00) 2026-08-27 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-27 21:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 21:00:01,533 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 21:00:01,534 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 21:00:01,538 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 21:00:01,538 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 21:00:01,596 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 21:00:01,621 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 22:00:00 UTC)" executed successfully 2026-08-27 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 23:00:00 UTC)" (scheduled at 2026-08-27 22:00:00+00:00) 2026-08-27 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-27 22:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 22:00:01,208 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 22:00:01,210 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 22:00:01,212 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 22:00:01,212 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 22:00:01,269 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 22:00:01,295 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-27 23:00:00 UTC)" executed successfully 2026-08-27 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 00:00:00 UTC)" (scheduled at 2026-08-27 23:00:00+00:00) 2026-08-27 23:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-27 23:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-27 23:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-27 23:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-08-27 23:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-27 23:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-27 23:00:01,275 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-27 23:00:01,302 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 00:00:00 UTC)" executed successfully 2026-08-28 00:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 01:00:00 UTC)" (scheduled at 2026-08-28 00:00:00+00:00) 2026-08-28 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-28 00:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 00:00:01,216 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 00:00:01,219 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 00:00:01,223 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 00:00:01,224 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 00:00:01,321 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 00:00:01,359 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 01:00:00 UTC)" executed successfully 2026-08-28 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 02:00:00 UTC)" (scheduled at 2026-08-28 01:00:00+00:00) 2026-08-28 01:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-28 01:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 01:00:01,150 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 01:00:01,151 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 01:00:01,154 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 01:00:01,154 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 01:00:01,210 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 01:00:01,238 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 02:00:00 UTC)" executed successfully 2026-08-28 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 03:00:00 UTC)" (scheduled at 2026-08-28 02:00:00+00:00) 2026-08-28 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-28 02:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 02:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 02:00:01,116 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 02:00:01,119 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 02:00:01,119 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 02:00:01,178 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 02:00:01,205 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 03:00:00 UTC)" executed successfully 2026-08-28 03:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 04:00:00 UTC)" (scheduled at 2026-08-28 03:00:00+00:00) 2026-08-28 03:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-28 03:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 03:00:01,091 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 03:00:01,093 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 03:00:01,096 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 03:00:01,097 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 03:00:01,161 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 03:00:01,189 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 04:00:00 UTC)" executed successfully 2026-08-28 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 05:00:00 UTC)" (scheduled at 2026-08-28 04:00:00+00:00) 2026-08-28 04:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-28 04:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 04:00:01,113 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 04:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 04:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 04:00:01,117 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 04:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 04:00:01,188 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 05:00:00 UTC)" executed successfully 2026-08-28 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 06:00:00 UTC)" (scheduled at 2026-08-28 05:00:00+00:00) 2026-08-28 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-28 05:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 05:00:01,050 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 05:00:01,052 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 05:00:01,055 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 05:00:01,055 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 05:00:01,114 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 05:00:01,135 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 06:00:00 UTC)" executed successfully 2026-08-28 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 07:00:00 UTC)" (scheduled at 2026-08-28 06:00:00+00:00) 2026-08-28 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-28 06:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 06:00:01,145 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 06:00:01,146 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 06:00:01,149 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 06:00:01,149 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 06:00:01,200 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 06:00:01,235 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 07:00:00 UTC)" executed successfully 2026-08-28 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 08:00:00 UTC)" (scheduled at 2026-08-28 07:00:00+00:00) 2026-08-28 07:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-28 07:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 07:00:01,189 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 07:00:01,198 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 07:00:01,203 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 07:00:01,206 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 07:00:01,280 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 07:00:01,310 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 08:00:00 UTC)" executed successfully 2026-08-28 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 09:00:00 UTC)" (scheduled at 2026-08-28 08:00:00+00:00) 2026-08-28 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-28 08:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 08:00:01,373 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 08:00:01,374 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 08:00:01,377 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 08:00:01,378 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 08:00:01,438 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 08:00:01,462 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 09:00:00 UTC)" executed successfully 2026-08-28 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 10:00:00 UTC)" (scheduled at 2026-08-28 09:00:00+00:00) 2026-08-28 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-28 09:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 09:00:01,205 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 09:00:01,207 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 09:00:01,210 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 09:00:01,210 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 09:00:01,279 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 09:00:01,307 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 10:00:00 UTC)" executed successfully 2026-08-28 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 11:00:00 UTC)" (scheduled at 2026-08-28 10:00:00+00:00) 2026-08-28 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-28 10:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 10:00:01,203 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 10:00:01,204 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 10:00:01,207 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 10:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 10:00:01,276 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 10:00:01,306 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 11:00:00 UTC)" executed successfully 2026-08-28 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 12:00:00 UTC)" (scheduled at 2026-08-28 11:00:00+00:00) 2026-08-28 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-28 11:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 11:00:01,346 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 11:00:01,348 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 11:00:01,350 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 11:00:01,350 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 11:00:01,406 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 11:00:01,431 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 12:00:00 UTC)" executed successfully 2026-08-28 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 13:00:00 UTC)" (scheduled at 2026-08-28 12:00:00+00:00) 2026-08-28 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-28 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 12:00:01,216 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 12:00:01,218 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 12:00:01,222 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 12:00:01,222 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 12:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 12:00:01,282 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 13:00:00 UTC)" executed successfully 2026-08-28 13:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 14:00:00 UTC)" (scheduled at 2026-08-28 13:00:00+00:00) 2026-08-28 13:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-28 13:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 13:00:01,434 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 13:00:01,436 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 13:00:01,440 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 13:00:01,440 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 13:00:01,497 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 13:00:01,524 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 14:00:00 UTC)" executed successfully 2026-08-28 14:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 15:00:00 UTC)" (scheduled at 2026-08-28 14:00:00+00:00) 2026-08-28 14:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-28 14:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 14:00:01,081 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 14:00:01,082 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 14:00:01,086 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 14:00:01,087 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 14:00:01,145 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 14:00:01,172 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 15:00:00 UTC)" executed successfully 2026-08-28 15:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 16:00:00 UTC)" (scheduled at 2026-08-28 15:00:00+00:00) 2026-08-28 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-28 15:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 15:00:01,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 15:00:01,174 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 15:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 15:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 15:00:01,241 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 15:00:01,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 16:00:00 UTC)" executed successfully 2026-08-28 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 17:00:00 UTC)" (scheduled at 2026-08-28 16:00:00+00:00) 2026-08-28 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-28 16:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 16:00:01,708 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 16:00:01,710 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 16:00:01,712 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 16:00:01,712 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 16:00:01,762 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 16:00:01,790 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 17:00:00 UTC)" executed successfully 2026-08-28 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 18:00:00 UTC)" (scheduled at 2026-08-28 17:00:00+00:00) 2026-08-28 17:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-28 17:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 17:00:01,880 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 17:00:01,882 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 17:00:01,886 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 17:00:01,886 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 17:00:01,943 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 17:00:01,977 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 18:00:00 UTC)" executed successfully 2026-08-28 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 19:00:00 UTC)" (scheduled at 2026-08-28 18:00:00+00:00) 2026-08-28 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-28 18:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 18:00:01,467 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 18:00:01,468 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 18:00:01,472 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 18:00:01,472 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 18:00:01,536 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 18:00:01,567 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 19:00:00 UTC)" executed successfully 2026-08-28 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 20:00:00 UTC)" (scheduled at 2026-08-28 19:00:00+00:00) 2026-08-28 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-28 19:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 19:00:01,252 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 19:00:01,254 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 19:00:01,258 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 19:00:01,258 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 19:00:01,310 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 19:00:01,331 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 20:00:00 UTC)" executed successfully 2026-08-28 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 21:00:00 UTC)" (scheduled at 2026-08-28 20:00:00+00:00) 2026-08-28 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-28 20:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 20:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 20:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 20:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 20:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 20:00:01,258 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 20:00:01,283 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 21:00:00 UTC)" executed successfully 2026-08-28 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 22:00:00 UTC)" (scheduled at 2026-08-28 21:00:00+00:00) 2026-08-28 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-28 21:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 21:00:01,203 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 21:00:01,204 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 21:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 21:00:01,208 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 21:00:01,278 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 21:00:01,308 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 22:00:00 UTC)" executed successfully 2026-08-28 22:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 23:00:00 UTC)" (scheduled at 2026-08-28 22:00:00+00:00) 2026-08-28 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-28 22:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 22:00:01,456 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 22:00:01,458 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 22:00:01,461 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 22:00:01,462 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 22:00:01,523 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 22:00:01,552 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-28 23:00:00 UTC)" executed successfully 2026-08-28 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 00:00:00 UTC)" (scheduled at 2026-08-28 23:00:00+00:00) 2026-08-28 23:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-28 23:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-28 23:00:01,389 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-28 23:00:01,390 INFO [fb-sync.worker] Scraped 50 posts 2026-08-28 23:00:01,394 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-28 23:00:01,394 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-28 23:00:01,455 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-28 23:00:01,483 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 00:00:00 UTC)" executed successfully 2026-08-29 00:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 01:00:00 UTC)" (scheduled at 2026-08-29 00:00:00+00:00) 2026-08-29 00:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-29 00:00:00,060 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 00:00:02,616 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 00:00:02,618 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 00:00:02,621 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 00:00:02,621 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 00:00:02,696 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 00:00:02,728 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 01:00:00 UTC)" executed successfully 2026-08-29 01:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 02:00:00 UTC)" (scheduled at 2026-08-29 01:00:00+00:00) 2026-08-29 01:00:00,004 INFO [fb-sync] Starting FB sync... 2026-08-29 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 01:00:01,049 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 01:00:01,050 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 01:00:01,053 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 01:00:01,053 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 01:00:01,134 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 01:00:01,169 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 02:00:00 UTC)" executed successfully 2026-08-29 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 03:00:00 UTC)" (scheduled at 2026-08-29 02:00:00+00:00) 2026-08-29 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-29 02:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 02:00:00,988 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 02:00:00,989 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 02:00:00,991 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 02:00:00,991 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 02:00:01,053 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 02:00:01,081 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 03:00:00 UTC)" executed successfully 2026-08-29 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 04:00:00 UTC)" (scheduled at 2026-08-29 03:00:00+00:00) 2026-08-29 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-29 03:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 03:00:01,124 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 03:00:01,126 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 03:00:01,131 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 03:00:01,131 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 03:00:01,192 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 03:00:01,219 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 04:00:00 UTC)" executed successfully 2026-08-29 04:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 05:00:00 UTC)" (scheduled at 2026-08-29 04:00:00+00:00) 2026-08-29 04:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-29 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 04:00:01,035 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 04:00:01,037 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 04:00:01,040 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 04:00:01,041 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 04:00:01,089 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 04:00:01,107 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 05:00:00 UTC)" executed successfully 2026-08-29 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 06:00:00 UTC)" (scheduled at 2026-08-29 05:00:00+00:00) 2026-08-29 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-29 05:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 05:00:01,278 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 05:00:01,279 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 05:00:01,281 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 05:00:01,281 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 05:00:01,338 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 05:00:01,359 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 06:00:00 UTC)" executed successfully 2026-08-29 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 07:00:00 UTC)" (scheduled at 2026-08-29 06:00:00+00:00) 2026-08-29 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-29 06:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 06:00:01,078 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 06:00:01,080 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 06:00:01,082 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 06:00:01,082 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 06:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 06:00:01,164 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 07:00:00 UTC)" executed successfully 2026-08-29 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 08:00:00 UTC)" (scheduled at 2026-08-29 07:00:00+00:00) 2026-08-29 07:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-29 07:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 07:00:01,366 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 07:00:01,368 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 07:00:01,370 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 07:00:01,370 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 07:00:01,438 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 07:00:01,467 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 08:00:00 UTC)" executed successfully 2026-08-29 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 09:00:00 UTC)" (scheduled at 2026-08-29 08:00:00+00:00) 2026-08-29 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-29 08:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 08:00:01,911 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 08:00:01,912 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 08:00:01,916 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 08:00:01,916 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 08:00:01,973 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 08:00:02,000 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 09:00:00 UTC)" executed successfully 2026-08-29 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 10:00:00 UTC)" (scheduled at 2026-08-29 09:00:00+00:00) 2026-08-29 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-29 09:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 09:00:01,041 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 09:00:01,043 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 09:00:01,046 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 09:00:01,046 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 09:00:01,098 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 09:00:01,125 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 10:00:00 UTC)" executed successfully 2026-08-29 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 11:00:00 UTC)" (scheduled at 2026-08-29 10:00:00+00:00) 2026-08-29 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-29 10:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 10:00:01,178 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 10:00:01,179 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 10:00:01,182 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 10:00:01,182 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 10:00:01,240 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 10:00:01,265 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 11:00:00 UTC)" executed successfully 2026-08-29 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 12:00:00 UTC)" (scheduled at 2026-08-29 11:00:00+00:00) 2026-08-29 11:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-29 11:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 11:00:01,200 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 11:00:01,201 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 11:00:01,204 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 11:00:01,204 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 11:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 11:00:01,292 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 12:00:00 UTC)" executed successfully 2026-08-29 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 13:00:00 UTC)" (scheduled at 2026-08-29 12:00:00+00:00) 2026-08-29 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-29 12:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 12:00:01,376 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 12:00:01,378 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 12:00:01,381 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 12:00:01,382 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 12:00:01,483 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 12:00:01,513 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 13:00:00 UTC)" executed successfully 2026-08-29 13:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 14:00:00 UTC)" (scheduled at 2026-08-29 13:00:00+00:00) 2026-08-29 13:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-29 13:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 13:00:01,343 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 13:00:01,345 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 13:00:01,348 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 13:00:01,348 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 13:00:01,417 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 13:00:01,492 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 13:00:01,492 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 14:00:00 UTC)" executed successfully 2026-08-29 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 15:00:00 UTC)" (scheduled at 2026-08-29 14:00:00+00:00) 2026-08-29 14:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-29 14:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 14:00:01,512 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 14:00:01,513 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 14:00:01,517 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 14:00:01,517 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 14:00:01,590 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 14:00:01,658 INFO [fb-sync.journal] Retention: dropped 3 record(s) older than 30d 2026-08-29 14:00:01,658 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 15:00:00 UTC)" executed successfully 2026-08-29 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 16:00:00 UTC)" (scheduled at 2026-08-29 15:00:00+00:00) 2026-08-29 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-29 15:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 15:00:01,570 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 15:00:01,572 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 15:00:01,578 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 15:00:01,578 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 15:00:01,650 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 15:00:01,731 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 15:00:01,731 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 16:00:00 UTC)" executed successfully 2026-08-29 16:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 17:00:00 UTC)" (scheduled at 2026-08-29 16:00:00+00:00) 2026-08-29 16:00:00,015 INFO [fb-sync] Starting FB sync... 2026-08-29 16:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 16:00:01,619 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 16:00:01,623 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 16:00:01,629 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 16:00:01,630 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 16:00:01,732 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 16:00:01,815 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 16:00:01,816 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 17:00:00 UTC)" executed successfully 2026-08-29 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 18:00:00 UTC)" (scheduled at 2026-08-29 17:00:00+00:00) 2026-08-29 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-29 17:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 17:00:01,126 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 17:00:01,129 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 17:00:01,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 17:00:01,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 17:00:01,201 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 17:00:01,277 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 17:00:01,277 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 18:00:00 UTC)" executed successfully 2026-08-29 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 19:00:00 UTC)" (scheduled at 2026-08-29 18:00:00+00:00) 2026-08-29 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-29 18:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 18:00:01,118 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 18:00:01,120 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 18:00:01,123 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 18:00:01,123 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 18:00:01,174 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 18:00:01,229 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 18:00:01,229 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 19:00:00 UTC)" executed successfully 2026-08-29 19:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 20:00:00 UTC)" (scheduled at 2026-08-29 19:00:00+00:00) 2026-08-29 19:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-29 19:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 19:00:00,953 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 19:00:00,956 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 19:00:00,959 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 19:00:00,959 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 19:00:01,018 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 19:00:01,077 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 19:00:01,077 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 20:00:00 UTC)" executed successfully 2026-08-29 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 21:00:00 UTC)" (scheduled at 2026-08-29 20:00:00+00:00) 2026-08-29 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-29 20:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 20:00:02,108 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 20:00:02,111 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 20:00:02,113 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 20:00:02,113 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 20:00:02,170 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 20:00:02,228 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 20:00:02,228 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 21:00:00 UTC)" executed successfully 2026-08-29 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 22:00:00 UTC)" (scheduled at 2026-08-29 21:00:00+00:00) 2026-08-29 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-29 21:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 21:00:01,012 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 21:00:01,013 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 21:00:01,016 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 21:00:01,016 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 21:00:01,069 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 21:00:01,136 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 21:00:01,136 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 22:00:00 UTC)" executed successfully 2026-08-29 22:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 23:00:00 UTC)" (scheduled at 2026-08-29 22:00:00+00:00) 2026-08-29 22:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-29 22:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 22:00:02,064 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 22:00:02,065 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 22:00:02,069 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 22:00:02,070 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 22:00:02,142 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 22:00:02,227 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 22:00:02,227 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-29 23:00:00 UTC)" executed successfully 2026-08-29 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 00:00:00 UTC)" (scheduled at 2026-08-29 23:00:00+00:00) 2026-08-29 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-29 23:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-29 23:00:00,898 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-29 23:00:00,900 INFO [fb-sync.worker] Scraped 50 posts 2026-08-29 23:00:00,903 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-29 23:00:00,903 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-29 23:00:00,967 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-29 23:00:01,034 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-29 23:00:01,034 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 00:00:00 UTC)" executed successfully 2026-08-30 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 01:00:00 UTC)" (scheduled at 2026-08-30 00:00:00+00:00) 2026-08-30 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-30 00:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 00:00:00,936 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 00:00:00,940 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 00:00:00,944 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 00:00:00,945 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 00:00:00,996 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 00:00:01,079 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 00:00:01,080 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 01:00:00 UTC)" executed successfully 2026-08-30 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 02:00:00 UTC)" (scheduled at 2026-08-30 01:00:00+00:00) 2026-08-30 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-30 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 01:00:01,687 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 01:00:01,689 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 01:00:01,692 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 01:00:01,692 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 01:00:01,754 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 01:00:01,826 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 01:00:01,826 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 02:00:00 UTC)" executed successfully 2026-08-30 02:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 03:00:00 UTC)" (scheduled at 2026-08-30 02:00:00+00:00) 2026-08-30 02:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-30 02:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 02:00:01,084 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 02:00:01,086 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 02:00:01,090 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 02:00:01,090 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 02:00:01,156 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 02:00:01,226 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 02:00:01,226 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 03:00:00 UTC)" executed successfully 2026-08-30 03:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 04:00:00 UTC)" (scheduled at 2026-08-30 03:00:00+00:00) 2026-08-30 03:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-30 03:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 03:00:01,138 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 03:00:01,140 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 03:00:01,144 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 03:00:01,144 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 03:00:01,189 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 03:00:01,244 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 03:00:01,245 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 04:00:00 UTC)" executed successfully 2026-08-30 04:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 05:00:00 UTC)" (scheduled at 2026-08-30 04:00:00+00:00) 2026-08-30 04:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-30 04:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 04:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 04:00:01,205 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 04:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 04:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 04:00:01,265 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 04:00:01,364 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 04:00:01,364 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 05:00:00 UTC)" executed successfully 2026-08-30 05:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 06:00:00 UTC)" (scheduled at 2026-08-30 05:00:00+00:00) 2026-08-30 05:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-30 05:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 05:00:00,967 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 05:00:00,970 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 05:00:00,972 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 05:00:00,973 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 05:00:01,032 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 05:00:01,094 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 05:00:01,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 06:00:00 UTC)" executed successfully 2026-08-30 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 07:00:00 UTC)" (scheduled at 2026-08-30 06:00:00+00:00) 2026-08-30 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-30 06:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 06:00:01,430 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 06:00:01,432 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 06:00:01,435 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 06:00:01,436 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 06:00:01,502 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 06:00:01,572 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 06:00:01,572 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 07:00:00 UTC)" executed successfully 2026-08-30 07:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 08:00:00 UTC)" (scheduled at 2026-08-30 07:00:00+00:00) 2026-08-30 07:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-30 07:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 07:00:00,921 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 07:00:00,923 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 07:00:00,925 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 07:00:00,926 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 07:00:00,979 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 07:00:01,055 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 07:00:01,055 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 08:00:00 UTC)" executed successfully 2026-08-30 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 09:00:00 UTC)" (scheduled at 2026-08-30 08:00:00+00:00) 2026-08-30 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-30 08:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 08:00:01,092 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 08:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 08:00:01,098 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 08:00:01,099 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 08:00:01,157 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 08:00:01,223 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 08:00:01,223 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 09:00:00 UTC)" executed successfully 2026-08-30 09:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 10:00:00 UTC)" (scheduled at 2026-08-30 09:00:00+00:00) 2026-08-30 09:00:00,005 INFO [fb-sync] Starting FB sync... 2026-08-30 09:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 09:00:01,082 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 09:00:01,084 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 09:00:01,086 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 09:00:01,086 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 09:00:01,146 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 09:00:01,216 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 09:00:01,216 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 10:00:00 UTC)" executed successfully 2026-08-30 10:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 11:00:00 UTC)" (scheduled at 2026-08-30 10:00:00+00:00) 2026-08-30 10:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-30 10:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 10:00:01,131 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 10:00:01,133 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 10:00:01,136 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 10:00:01,136 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 10:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 10:00:01,249 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 10:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 11:00:00 UTC)" executed successfully 2026-08-30 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 12:00:00 UTC)" (scheduled at 2026-08-30 11:00:00+00:00) 2026-08-30 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-30 11:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 11:00:02,368 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 11:00:02,369 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 11:00:02,372 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 11:00:02,372 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 11:00:02,440 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 11:00:02,491 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 11:00:02,492 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 12:00:00 UTC)" executed successfully 2026-08-30 12:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 13:00:00 UTC)" (scheduled at 2026-08-30 12:00:00+00:00) 2026-08-30 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-30 12:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 12:00:01,125 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 12:00:01,126 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 12:00:01,130 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 12:00:01,131 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 12:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 12:00:01,288 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 12:00:01,289 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 13:00:00 UTC)" executed successfully 2026-08-30 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 14:00:00 UTC)" (scheduled at 2026-08-30 13:00:00+00:00) 2026-08-30 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-30 13:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 13:00:01,413 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 13:00:01,415 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 13:00:01,418 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 13:00:01,418 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 13:00:01,684 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 13:00:01,757 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 13:00:01,757 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 14:00:00 UTC)" executed successfully 2026-08-30 14:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 15:00:00 UTC)" (scheduled at 2026-08-30 14:00:00+00:00) 2026-08-30 14:00:00,016 INFO [fb-sync] Starting FB sync... 2026-08-30 14:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 14:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 14:00:01,197 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 14:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 14:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 14:00:01,252 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 14:00:01,311 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 14:00:01,312 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 15:00:00 UTC)" executed successfully 2026-08-30 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 16:00:00 UTC)" (scheduled at 2026-08-30 15:00:00+00:00) 2026-08-30 15:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-30 15:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 15:00:01,746 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 15:00:01,748 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 15:00:01,752 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 15:00:01,752 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 15:00:01,821 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 15:00:01,904 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 15:00:01,904 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 16:00:00 UTC)" executed successfully 2026-08-30 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 17:00:00 UTC)" (scheduled at 2026-08-30 16:00:00+00:00) 2026-08-30 16:00:00,018 INFO [fb-sync] Starting FB sync... 2026-08-30 16:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 16:00:01,061 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 16:00:01,062 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 16:00:01,066 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 16:00:01,066 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 16:00:01,122 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 16:00:01,178 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 16:00:01,178 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 17:00:00 UTC)" executed successfully 2026-08-30 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 18:00:00 UTC)" (scheduled at 2026-08-30 17:00:00+00:00) 2026-08-30 17:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-30 17:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 17:00:01,365 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 17:00:01,367 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 17:00:01,370 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 17:00:01,371 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 17:00:01,434 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 17:00:01,508 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 17:00:01,508 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 18:00:00 UTC)" executed successfully 2026-08-30 18:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 19:00:00 UTC)" (scheduled at 2026-08-30 18:00:00+00:00) 2026-08-30 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-30 18:00:00,098 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 18:00:01,115 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 18:00:01,117 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 18:00:01,120 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 18:00:01,120 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 18:00:01,166 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 18:00:01,237 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 18:00:01,237 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 19:00:00 UTC)" executed successfully 2026-08-30 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 20:00:00 UTC)" (scheduled at 2026-08-30 19:00:00+00:00) 2026-08-30 19:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-30 19:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 19:00:01,016 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 19:00:01,019 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 19:00:01,022 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 19:00:01,022 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 19:00:01,086 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 19:00:01,154 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 19:00:01,154 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 20:00:00 UTC)" executed successfully 2026-08-30 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 21:00:00 UTC)" (scheduled at 2026-08-30 20:00:00+00:00) 2026-08-30 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-30 20:00:00,110 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 20:00:01,162 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 20:00:01,164 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 20:00:01,168 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 20:00:01,168 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 20:00:01,237 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 20:00:01,325 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 20:00:01,326 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 21:00:00 UTC)" executed successfully 2026-08-30 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 22:00:00 UTC)" (scheduled at 2026-08-30 21:00:00+00:00) 2026-08-30 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-30 21:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 21:00:00,933 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 21:00:00,935 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 21:00:00,938 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 21:00:00,939 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 21:00:01,004 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 21:00:01,092 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 21:00:01,092 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 22:00:00 UTC)" executed successfully 2026-08-30 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 23:00:00 UTC)" (scheduled at 2026-08-30 22:00:00+00:00) 2026-08-30 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-30 22:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 22:00:00,950 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 22:00:00,951 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 22:00:00,954 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 22:00:00,954 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 22:00:01,004 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 22:00:01,061 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 22:00:01,062 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-30 23:00:00 UTC)" executed successfully 2026-08-30 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 00:00:00 UTC)" (scheduled at 2026-08-30 23:00:00+00:00) 2026-08-30 23:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-30 23:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-30 23:00:01,310 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-30 23:00:01,312 INFO [fb-sync.worker] Scraped 50 posts 2026-08-30 23:00:01,314 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-30 23:00:01,314 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-30 23:00:01,378 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-30 23:00:01,448 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-30 23:00:01,448 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 00:00:00 UTC)" executed successfully 2026-08-31 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 01:00:00 UTC)" (scheduled at 2026-08-31 00:00:00+00:00) 2026-08-31 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-31 00:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 00:00:01,574 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 00:00:01,576 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 00:00:01,579 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 00:00:01,579 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 00:00:01,642 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 00:00:01,725 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 00:00:01,726 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 01:00:00 UTC)" executed successfully 2026-08-31 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 02:00:00 UTC)" (scheduled at 2026-08-31 01:00:00+00:00) 2026-08-31 01:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-31 01:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 01:00:00,999 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 01:00:01,003 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 01:00:01,007 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 01:00:01,008 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 01:00:01,079 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 01:00:01,140 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 01:00:01,140 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 02:00:00 UTC)" executed successfully 2026-08-31 02:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 03:00:00 UTC)" (scheduled at 2026-08-31 02:00:00+00:00) 2026-08-31 02:00:00,008 INFO [fb-sync] Starting FB sync... 2026-08-31 02:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 02:00:00,931 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 02:00:00,932 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 02:00:00,935 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 02:00:00,935 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 02:00:00,975 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 02:00:01,021 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 02:00:01,021 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 03:00:00 UTC)" executed successfully 2026-08-31 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 04:00:00 UTC)" (scheduled at 2026-08-31 03:00:00+00:00) 2026-08-31 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-31 03:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 03:00:00,951 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 03:00:00,953 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 03:00:00,958 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 03:00:00,958 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 03:00:01,022 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 03:00:01,093 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 03:00:01,093 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 04:00:00 UTC)" executed successfully 2026-08-31 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 05:00:00 UTC)" (scheduled at 2026-08-31 04:00:00+00:00) 2026-08-31 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-31 04:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 04:00:01,068 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 04:00:01,069 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 04:00:01,072 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 04:00:01,073 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 04:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 04:00:01,210 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 04:00:01,211 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 05:00:00 UTC)" executed successfully 2026-08-31 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 06:00:00 UTC)" (scheduled at 2026-08-31 05:00:00+00:00) 2026-08-31 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-31 05:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 05:00:01,965 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 05:00:01,967 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 05:00:01,971 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 05:00:01,971 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 05:00:02,037 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 05:00:02,104 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 05:00:02,104 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 06:00:00 UTC)" executed successfully 2026-08-31 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 07:00:00 UTC)" (scheduled at 2026-08-31 06:00:00+00:00) 2026-08-31 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-31 06:00:00,124 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 06:00:01,364 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 06:00:01,366 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 06:00:01,370 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 06:00:01,371 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 06:00:01,420 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 06:00:01,508 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 06:00:01,509 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 07:00:00 UTC)" executed successfully 2026-08-31 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 08:00:00 UTC)" (scheduled at 2026-08-31 07:00:00+00:00) 2026-08-31 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-31 07:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 07:00:02,134 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 07:00:02,137 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 07:00:02,140 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 07:00:02,141 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 07:00:02,214 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 07:00:02,310 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 07:00:02,311 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 08:00:00 UTC)" executed successfully 2026-08-31 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 09:00:00 UTC)" (scheduled at 2026-08-31 08:00:00+00:00) 2026-08-31 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-31 08:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 08:00:01,018 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 08:00:01,019 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 08:00:01,021 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 08:00:01,021 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 08:00:01,098 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 08:00:01,186 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 08:00:01,187 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 09:00:00 UTC)" executed successfully 2026-08-31 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 10:00:00 UTC)" (scheduled at 2026-08-31 09:00:00+00:00) 2026-08-31 09:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-31 09:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 09:00:01,124 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 09:00:01,127 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 09:00:01,130 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 09:00:01,130 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 09:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 09:00:01,283 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 09:00:01,283 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 10:00:00 UTC)" executed successfully 2026-08-31 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 11:00:00 UTC)" (scheduled at 2026-08-31 10:00:00+00:00) 2026-08-31 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-31 10:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 10:00:01,540 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 10:00:01,541 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 10:00:01,545 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 10:00:01,545 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 10:00:01,612 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 10:00:01,688 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 10:00:01,688 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 11:00:00 UTC)" executed successfully 2026-08-31 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 12:00:00 UTC)" (scheduled at 2026-08-31 11:00:00+00:00) 2026-08-31 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-08-31 11:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 11:00:01,262 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 11:00:01,264 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 11:00:01,268 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 11:00:01,268 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 11:00:01,334 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 11:00:01,412 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 11:00:01,413 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 12:00:00 UTC)" executed successfully 2026-08-31 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 13:00:00 UTC)" (scheduled at 2026-08-31 12:00:00+00:00) 2026-08-31 12:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-31 12:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 12:00:02,771 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 12:00:02,772 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 12:00:02,776 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 12:00:02,776 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 12:00:02,833 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 12:00:02,900 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 12:00:02,901 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 13:00:00 UTC)" executed successfully 2026-08-31 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 14:00:00 UTC)" (scheduled at 2026-08-31 13:00:00+00:00) 2026-08-31 13:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-31 13:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 13:00:01,071 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 13:00:01,073 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 13:00:01,076 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 13:00:01,077 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 13:00:01,127 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 13:00:01,210 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 13:00:01,210 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 14:00:00 UTC)" executed successfully 2026-08-31 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 15:00:00 UTC)" (scheduled at 2026-08-31 14:00:00+00:00) 2026-08-31 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-31 14:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 14:00:02,384 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 14:00:02,385 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 14:00:02,388 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 14:00:02,389 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 14:00:02,450 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 14:00:02,504 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 14:00:02,505 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 15:00:00 UTC)" executed successfully 2026-08-31 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 16:00:00 UTC)" (scheduled at 2026-08-31 15:00:00+00:00) 2026-08-31 15:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-31 15:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 15:00:01,177 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 15:00:01,178 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 15:00:01,182 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 15:00:01,182 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 15:00:01,233 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 15:00:01,286 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 15:00:01,287 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 16:00:00 UTC)" executed successfully 2026-08-31 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 17:00:00 UTC)" (scheduled at 2026-08-31 16:00:00+00:00) 2026-08-31 16:00:00,007 INFO [fb-sync] Starting FB sync... 2026-08-31 16:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 16:00:01,273 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 16:00:01,276 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 16:00:01,279 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 16:00:01,280 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 16:00:01,348 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 16:00:01,429 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 16:00:01,430 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 17:00:00 UTC)" executed successfully 2026-08-31 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 18:00:00 UTC)" (scheduled at 2026-08-31 17:00:00+00:00) 2026-08-31 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-08-31 17:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 17:00:01,198 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 17:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 17:00:01,203 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 17:00:01,203 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 17:00:01,262 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 17:00:01,329 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 17:00:01,329 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 18:00:00 UTC)" executed successfully 2026-08-31 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 19:00:00 UTC)" (scheduled at 2026-08-31 18:00:00+00:00) 2026-08-31 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-31 18:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 18:00:01,137 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 18:00:01,138 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 18:00:01,141 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 18:00:01,141 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 18:00:01,198 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 18:00:01,254 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 18:00:01,255 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 19:00:00 UTC)" executed successfully 2026-08-31 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 20:00:00 UTC)" (scheduled at 2026-08-31 19:00:00+00:00) 2026-08-31 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-08-31 19:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 19:00:00,968 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 19:00:00,969 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 19:00:00,972 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 19:00:00,972 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 19:00:01,035 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 19:00:01,093 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 19:00:01,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 20:00:00 UTC)" executed successfully 2026-08-31 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 21:00:00 UTC)" (scheduled at 2026-08-31 20:00:00+00:00) 2026-08-31 20:00:00,014 INFO [fb-sync] Starting FB sync... 2026-08-31 20:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 20:00:01,048 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 20:00:01,050 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 20:00:01,054 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 20:00:01,054 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 20:00:01,108 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 20:00:01,160 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 20:00:01,160 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 21:00:00 UTC)" executed successfully 2026-08-31 21:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 22:00:00 UTC)" (scheduled at 2026-08-31 21:00:00+00:00) 2026-08-31 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-08-31 21:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 21:00:01,481 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 21:00:01,483 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 21:00:01,487 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 21:00:01,487 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 21:00:01,550 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 21:00:01,628 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 21:00:01,629 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 22:00:00 UTC)" executed successfully 2026-08-31 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 23:00:00 UTC)" (scheduled at 2026-08-31 22:00:00+00:00) 2026-08-31 22:00:00,006 INFO [fb-sync] Starting FB sync... 2026-08-31 22:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 22:00:01,093 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 22:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 22:00:01,099 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 22:00:01,100 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 22:00:01,175 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 22:00:01,261 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 22:00:01,261 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-08-31 23:00:00 UTC)" executed successfully 2026-08-31 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 00:00:00 UTC)" (scheduled at 2026-08-31 23:00:00+00:00) 2026-08-31 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-08-31 23:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-08-31 23:00:01,021 INFO [fb-sync.worker] Graph API returned 50 posts 2026-08-31 23:00:01,022 INFO [fb-sync.worker] Scraped 50 posts 2026-08-31 23:00:01,026 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-08-31 23:00:01,026 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-08-31 23:00:01,102 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-08-31 23:00:01,173 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-08-31 23:00:01,174 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 00:00:00 UTC)" executed successfully 2026-09-01 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 01:00:00 UTC)" (scheduled at 2026-09-01 00:00:00+00:00) 2026-09-01 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-01 00:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 00:00:01,287 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 00:00:01,289 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 00:00:01,294 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 00:00:01,295 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 00:00:01,362 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 00:00:01,448 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 00:00:01,448 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 01:00:00 UTC)" executed successfully 2026-09-01 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 02:00:00 UTC)" (scheduled at 2026-09-01 01:00:00+00:00) 2026-09-01 01:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-01 01:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 01:00:01,012 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 01:00:01,014 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 01:00:01,016 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 01:00:01,016 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 01:00:01,057 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 01:00:01,125 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 01:00:01,125 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 02:00:00 UTC)" executed successfully 2026-09-01 02:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 03:00:00 UTC)" (scheduled at 2026-09-01 02:00:00+00:00) 2026-09-01 02:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-01 02:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 02:00:01,076 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 02:00:01,078 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 02:00:01,081 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 02:00:01,081 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 02:00:01,138 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 02:00:01,215 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 02:00:01,215 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 03:00:00 UTC)" executed successfully 2026-09-01 03:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 04:00:00 UTC)" (scheduled at 2026-09-01 03:00:00+00:00) 2026-09-01 03:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-01 03:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 03:00:00,987 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 03:00:00,989 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 03:00:00,990 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 03:00:00,990 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 03:00:01,039 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 03:00:01,092 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 03:00:01,092 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 04:00:00 UTC)" executed successfully 2026-09-01 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 05:00:00 UTC)" (scheduled at 2026-09-01 04:00:00+00:00) 2026-09-01 04:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-01 04:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 04:00:01,158 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 04:00:01,160 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 04:00:01,164 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 04:00:01,164 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 04:00:01,239 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 04:00:01,306 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 04:00:01,307 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 05:00:00 UTC)" executed successfully 2026-09-01 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 06:00:00 UTC)" (scheduled at 2026-09-01 05:00:00+00:00) 2026-09-01 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-01 05:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 05:00:01,304 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 05:00:01,305 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 05:00:01,307 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 05:00:01,307 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 05:00:01,531 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 05:00:01,599 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 05:00:01,599 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 06:00:00 UTC)" executed successfully 2026-09-01 06:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 07:00:00 UTC)" (scheduled at 2026-09-01 06:00:00+00:00) 2026-09-01 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-01 06:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 06:00:01,039 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 06:00:01,041 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 06:00:01,044 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 06:00:01,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 06:00:01,094 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 06:00:01,155 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 06:00:01,156 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 07:00:00 UTC)" executed successfully 2026-09-01 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 08:00:00 UTC)" (scheduled at 2026-09-01 07:00:00+00:00) 2026-09-01 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-01 07:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 07:00:01,330 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 07:00:01,332 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 07:00:01,336 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 07:00:01,336 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 07:00:01,384 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 07:00:01,459 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 07:00:01,459 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 08:00:00 UTC)" executed successfully 2026-09-01 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 09:00:00 UTC)" (scheduled at 2026-09-01 08:00:00+00:00) 2026-09-01 08:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-01 08:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 08:00:01,191 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 08:00:01,193 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 08:00:01,196 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 08:00:01,197 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 08:00:01,248 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 08:00:01,317 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 08:00:01,317 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 09:00:00 UTC)" executed successfully 2026-09-01 09:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 10:00:00 UTC)" (scheduled at 2026-09-01 09:00:00+00:00) 2026-09-01 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-01 09:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 09:00:01,030 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 09:00:01,032 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 09:00:01,034 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 09:00:01,034 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 09:00:01,101 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 09:00:01,188 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 09:00:01,188 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 10:00:00 UTC)" executed successfully 2026-09-01 10:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 11:00:00 UTC)" (scheduled at 2026-09-01 10:00:00+00:00) 2026-09-01 10:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-01 10:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 10:00:02,775 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 10:00:02,776 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 10:00:02,778 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 10:00:02,778 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 10:00:02,812 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 10:00:02,861 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 10:00:02,862 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 11:00:00 UTC)" executed successfully 2026-09-01 11:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 12:00:00 UTC)" (scheduled at 2026-09-01 11:00:00+00:00) 2026-09-01 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-01 11:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 11:00:00,996 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 11:00:00,998 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 11:00:01,001 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 11:00:01,002 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 11:00:01,060 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 11:00:01,104 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 11:00:01,105 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 12:00:00 UTC)" executed successfully 2026-09-01 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 13:00:00 UTC)" (scheduled at 2026-09-01 12:00:00+00:00) 2026-09-01 12:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-01 12:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 12:00:01,284 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 12:00:01,285 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 12:00:01,288 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 12:00:01,288 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 12:00:01,352 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 12:00:01,416 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 12:00:01,416 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 13:00:00 UTC)" executed successfully 2026-09-01 13:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 14:00:00 UTC)" (scheduled at 2026-09-01 13:00:00+00:00) 2026-09-01 13:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-01 13:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 13:00:01,100 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 13:00:01,102 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 13:00:01,106 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 13:00:01,106 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 13:00:01,173 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 13:00:01,254 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 13:00:01,254 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 14:00:00 UTC)" executed successfully 2026-09-01 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 15:00:00 UTC)" (scheduled at 2026-09-01 14:00:00+00:00) 2026-09-01 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-01 14:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 14:00:01,514 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 14:00:01,516 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 14:00:01,520 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 14:00:01,520 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 14:00:01,591 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 14:00:01,678 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 14:00:01,679 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 15:00:00 UTC)" executed successfully 2026-09-01 15:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 16:00:00 UTC)" (scheduled at 2026-09-01 15:00:00+00:00) 2026-09-01 15:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-01 15:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 15:00:01,197 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 15:00:01,199 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 15:00:01,202 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 15:00:01,203 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 15:00:01,269 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 15:00:01,350 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 15:00:01,350 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 16:00:00 UTC)" executed successfully 2026-09-01 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 17:00:00 UTC)" (scheduled at 2026-09-01 16:00:00+00:00) 2026-09-01 16:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-01 16:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 16:00:02,395 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 16:00:02,396 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 16:00:02,400 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 16:00:02,400 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 16:00:02,463 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 16:00:02,526 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 16:00:02,527 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 17:00:00 UTC)" executed successfully 2026-09-01 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 18:00:00 UTC)" (scheduled at 2026-09-01 17:00:00+00:00) 2026-09-01 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-01 17:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 17:00:01,254 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 17:00:01,256 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 17:00:01,259 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 17:00:01,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 17:00:01,312 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 17:00:01,373 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 17:00:01,373 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 18:00:00 UTC)" executed successfully 2026-09-01 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 19:00:00 UTC)" (scheduled at 2026-09-01 18:00:00+00:00) 2026-09-01 18:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-01 18:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 18:00:01,349 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 18:00:01,351 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 18:00:01,354 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 18:00:01,354 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 18:00:01,419 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 18:00:01,508 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 18:00:01,509 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 19:00:00 UTC)" executed successfully 2026-09-01 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 20:00:00 UTC)" (scheduled at 2026-09-01 19:00:00+00:00) 2026-09-01 19:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-01 19:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 19:00:01,524 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 19:00:01,526 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 19:00:01,529 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 19:00:01,529 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 19:00:01,607 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 19:00:01,687 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 19:00:01,688 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 20:00:00 UTC)" executed successfully 2026-09-01 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 21:00:00 UTC)" (scheduled at 2026-09-01 20:00:00+00:00) 2026-09-01 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-01 20:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 20:00:01,350 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 20:00:01,352 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 20:00:01,357 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 20:00:01,357 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 20:00:01,430 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 20:00:01,501 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 20:00:01,501 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 21:00:00 UTC)" executed successfully 2026-09-01 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 22:00:00 UTC)" (scheduled at 2026-09-01 21:00:00+00:00) 2026-09-01 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-01 21:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 21:00:01,450 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 21:00:01,453 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 21:00:01,456 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 21:00:01,457 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 21:00:01,525 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 21:00:01,607 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 21:00:01,607 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 22:00:00 UTC)" executed successfully 2026-09-01 22:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 23:00:00 UTC)" (scheduled at 2026-09-01 22:00:00+00:00) 2026-09-01 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-01 22:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 22:00:01,771 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 22:00:01,773 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 22:00:01,776 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 22:00:01,777 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 22:00:01,842 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 22:00:01,922 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 22:00:01,923 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-01 23:00:00 UTC)" executed successfully 2026-09-01 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 00:00:00 UTC)" (scheduled at 2026-09-01 23:00:00+00:00) 2026-09-01 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-01 23:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-01 23:00:01,193 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-01 23:00:01,197 INFO [fb-sync.worker] Scraped 50 posts 2026-09-01 23:00:01,205 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-01 23:00:01,205 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-01 23:00:01,284 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-01 23:00:01,350 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-01 23:00:01,350 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 00:00:00 UTC)" executed successfully 2026-09-02 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 01:00:00 UTC)" (scheduled at 2026-09-02 00:00:00+00:00) 2026-09-02 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 00:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 00:00:00,939 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 00:00:00,941 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 00:00:00,944 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 00:00:00,945 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 00:00:00,997 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 00:00:01,066 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 00:00:01,067 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 01:00:00 UTC)" executed successfully 2026-09-02 01:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 02:00:00 UTC)" (scheduled at 2026-09-02 01:00:00+00:00) 2026-09-02 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-02 01:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 01:00:01,041 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 01:00:01,042 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 01:00:01,045 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 01:00:01,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 01:00:01,106 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 01:00:01,165 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 01:00:01,165 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 02:00:00 UTC)" executed successfully 2026-09-02 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 03:00:00 UTC)" (scheduled at 2026-09-02 02:00:00+00:00) 2026-09-02 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 02:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 02:00:01,219 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 02:00:01,221 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 02:00:01,225 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 02:00:01,226 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 02:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 02:00:01,353 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 02:00:01,353 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 03:00:00 UTC)" executed successfully 2026-09-02 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 04:00:00 UTC)" (scheduled at 2026-09-02 03:00:00+00:00) 2026-09-02 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-02 03:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 03:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 03:00:01,115 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 03:00:01,118 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 03:00:01,119 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 03:00:01,175 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 03:00:01,234 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 03:00:01,234 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 04:00:00 UTC)" executed successfully 2026-09-02 04:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 05:00:00 UTC)" (scheduled at 2026-09-02 04:00:00+00:00) 2026-09-02 04:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-02 04:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 04:00:01,678 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 04:00:01,682 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 04:00:01,686 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 04:00:01,686 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 04:00:01,752 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 04:00:01,856 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 04:00:01,857 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 05:00:00 UTC)" executed successfully 2026-09-02 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 06:00:00 UTC)" (scheduled at 2026-09-02 05:00:00+00:00) 2026-09-02 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 05:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 05:00:01,125 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 05:00:01,127 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 05:00:01,131 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 05:00:01,131 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 05:00:01,197 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 05:00:01,268 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 05:00:01,268 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 06:00:00 UTC)" executed successfully 2026-09-02 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 07:00:00 UTC)" (scheduled at 2026-09-02 06:00:00+00:00) 2026-09-02 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-02 06:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 06:00:01,148 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 06:00:01,150 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 06:00:01,154 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 06:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 06:00:01,222 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 06:00:01,298 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 06:00:01,298 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 07:00:00 UTC)" executed successfully 2026-09-02 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 08:00:00 UTC)" (scheduled at 2026-09-02 07:00:00+00:00) 2026-09-02 07:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-02 07:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 07:00:01,112 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 07:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 07:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 07:00:01,117 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 07:00:01,178 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 07:00:01,232 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 07:00:01,232 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 08:00:00 UTC)" executed successfully 2026-09-02 08:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 09:00:00 UTC)" (scheduled at 2026-09-02 08:00:00+00:00) 2026-09-02 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-02 08:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 08:00:01,226 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 08:00:01,227 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 08:00:01,231 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 08:00:01,231 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 08:00:01,300 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 08:00:01,372 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 08:00:01,372 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 09:00:00 UTC)" executed successfully 2026-09-02 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 10:00:00 UTC)" (scheduled at 2026-09-02 09:00:00+00:00) 2026-09-02 09:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-02 09:00:00,111 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 09:00:01,345 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 09:00:01,346 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 09:00:01,348 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 09:00:01,348 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 09:00:01,398 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 09:00:01,462 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 09:00:01,462 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 10:00:00 UTC)" executed successfully 2026-09-02 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 11:00:00 UTC)" (scheduled at 2026-09-02 10:00:00+00:00) 2026-09-02 10:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-02 10:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 10:00:01,171 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 10:00:01,174 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 10:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 10:00:01,179 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 10:00:01,234 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 10:00:01,308 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 10:00:01,309 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 11:00:00 UTC)" executed successfully 2026-09-02 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 12:00:00 UTC)" (scheduled at 2026-09-02 11:00:00+00:00) 2026-09-02 11:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-02 11:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 11:00:01,596 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 11:00:01,597 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 11:00:01,600 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 11:00:01,600 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 11:00:01,652 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 11:00:01,725 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 11:00:01,725 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 12:00:00 UTC)" executed successfully 2026-09-02 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 13:00:00 UTC)" (scheduled at 2026-09-02 12:00:00+00:00) 2026-09-02 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 12:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 12:00:01,241 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 12:00:01,242 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 12:00:01,245 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 12:00:01,245 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 12:00:01,295 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 12:00:01,358 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 12:00:01,358 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 13:00:00 UTC)" executed successfully 2026-09-02 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 14:00:00 UTC)" (scheduled at 2026-09-02 13:00:00+00:00) 2026-09-02 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 13:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 13:00:01,887 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 13:00:01,889 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 13:00:01,892 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 13:00:01,892 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 13:00:01,953 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 13:00:02,028 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 13:00:02,029 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 14:00:00 UTC)" executed successfully 2026-09-02 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 15:00:00 UTC)" (scheduled at 2026-09-02 14:00:00+00:00) 2026-09-02 14:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-02 14:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 14:00:01,192 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 14:00:01,193 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 14:00:01,196 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 14:00:01,197 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 14:00:01,248 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 14:00:01,307 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 14:00:01,308 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 15:00:00 UTC)" executed successfully 2026-09-02 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 16:00:00 UTC)" (scheduled at 2026-09-02 15:00:00+00:00) 2026-09-02 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 15:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 15:00:01,833 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 15:00:01,835 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 15:00:01,838 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 15:00:01,838 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 15:00:01,908 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 15:00:01,992 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 15:00:01,993 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 16:00:00 UTC)" executed successfully 2026-09-02 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 17:00:00 UTC)" (scheduled at 2026-09-02 16:00:00+00:00) 2026-09-02 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-02 16:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 16:00:01,132 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 16:00:01,133 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 16:00:01,136 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 16:00:01,136 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 16:00:01,190 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 16:00:01,255 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 16:00:01,255 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 17:00:00 UTC)" executed successfully 2026-09-02 17:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 18:00:00 UTC)" (scheduled at 2026-09-02 17:00:00+00:00) 2026-09-02 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-02 17:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 17:00:01,159 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 17:00:01,161 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 17:00:01,163 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 17:00:01,163 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 17:00:01,215 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 17:00:01,289 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 17:00:01,290 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 18:00:00 UTC)" executed successfully 2026-09-02 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 19:00:00 UTC)" (scheduled at 2026-09-02 18:00:00+00:00) 2026-09-02 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 18:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 18:00:01,509 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 18:00:01,511 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 18:00:01,516 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 18:00:01,517 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 18:00:01,593 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 18:00:01,679 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 18:00:01,680 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 19:00:00 UTC)" executed successfully 2026-09-02 19:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 20:00:00 UTC)" (scheduled at 2026-09-02 19:00:00+00:00) 2026-09-02 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-02 19:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 19:00:01,645 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 19:00:01,647 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 19:00:01,651 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 19:00:01,651 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 19:00:01,718 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 19:00:01,807 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 19:00:01,808 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 20:00:00 UTC)" executed successfully 2026-09-02 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 21:00:00 UTC)" (scheduled at 2026-09-02 20:00:00+00:00) 2026-09-02 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-02 20:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 20:00:01,066 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 20:00:01,067 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 20:00:01,071 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 20:00:01,071 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 20:00:01,142 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 20:00:01,227 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 20:00:01,228 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 21:00:00 UTC)" executed successfully 2026-09-02 21:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 22:00:00 UTC)" (scheduled at 2026-09-02 21:00:00+00:00) 2026-09-02 21:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-02 21:00:00,110 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 21:00:01,797 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 21:00:01,799 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 21:00:01,804 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 21:00:01,804 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 21:00:01,856 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 21:00:01,931 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 21:00:01,931 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 22:00:00 UTC)" executed successfully 2026-09-02 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 23:00:00 UTC)" (scheduled at 2026-09-02 22:00:00+00:00) 2026-09-02 22:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-02 22:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 22:00:01,059 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 22:00:01,060 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 22:00:01,063 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 22:00:01,064 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 22:00:01,129 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 22:00:01,205 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 22:00:01,205 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-02 23:00:00 UTC)" executed successfully 2026-09-02 23:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 00:00:00 UTC)" (scheduled at 2026-09-02 23:00:00+00:00) 2026-09-02 23:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-02 23:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-02 23:00:00,999 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-02 23:00:01,000 INFO [fb-sync.worker] Scraped 50 posts 2026-09-02 23:00:01,002 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-02 23:00:01,002 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-02 23:00:01,065 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-02 23:00:01,130 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-02 23:00:01,131 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 00:00:00 UTC)" executed successfully 2026-09-03 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 01:00:00 UTC)" (scheduled at 2026-09-03 00:00:00+00:00) 2026-09-03 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-03 00:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 00:00:01,008 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 00:00:01,009 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 00:00:01,013 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 00:00:01,013 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 00:00:01,082 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 00:00:01,162 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 00:00:01,163 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 01:00:00 UTC)" executed successfully 2026-09-03 01:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 02:00:00 UTC)" (scheduled at 2026-09-03 01:00:00+00:00) 2026-09-03 01:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-03 01:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 01:00:01,090 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 01:00:01,091 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 01:00:01,095 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 01:00:01,095 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 01:00:01,153 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 01:00:01,238 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 01:00:01,238 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 02:00:00 UTC)" executed successfully 2026-09-03 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 03:00:00 UTC)" (scheduled at 2026-09-03 02:00:00+00:00) 2026-09-03 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-03 02:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 02:00:01,628 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 02:00:01,630 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 02:00:01,632 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 02:00:01,633 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 02:00:01,690 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 02:00:01,764 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 02:00:01,765 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 03:00:00 UTC)" executed successfully 2026-09-03 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 04:00:00 UTC)" (scheduled at 2026-09-03 03:00:00+00:00) 2026-09-03 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-03 03:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 03:00:01,006 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 03:00:01,008 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 03:00:01,012 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 03:00:01,012 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 03:00:01,055 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 03:00:01,114 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 03:00:01,114 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 04:00:00 UTC)" executed successfully 2026-09-03 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 05:00:00 UTC)" (scheduled at 2026-09-03 04:00:00+00:00) 2026-09-03 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-03 04:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 04:00:01,068 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 04:00:01,071 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 04:00:01,074 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 04:00:01,074 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 04:00:01,113 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 04:00:01,155 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 04:00:01,155 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 05:00:00 UTC)" executed successfully 2026-09-03 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 06:00:00 UTC)" (scheduled at 2026-09-03 05:00:00+00:00) 2026-09-03 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-03 05:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 05:00:01,020 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 05:00:01,022 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 05:00:01,024 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 05:00:01,024 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 05:00:01,074 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 05:00:01,134 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 05:00:01,134 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 06:00:00 UTC)" executed successfully 2026-09-03 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 07:00:00 UTC)" (scheduled at 2026-09-03 06:00:00+00:00) 2026-09-03 06:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-03 06:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 06:00:01,119 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 06:00:01,120 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 06:00:01,125 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 06:00:01,125 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 06:00:01,182 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 06:00:01,244 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 06:00:01,244 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 07:00:00 UTC)" executed successfully 2026-09-03 07:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 08:00:00 UTC)" (scheduled at 2026-09-03 07:00:00+00:00) 2026-09-03 07:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-03 07:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 07:00:01,140 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 07:00:01,142 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 07:00:01,146 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 07:00:01,147 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 07:00:01,208 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 07:00:01,265 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 07:00:01,266 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 08:00:00 UTC)" executed successfully 2026-09-03 08:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 09:00:00 UTC)" (scheduled at 2026-09-03 08:00:00+00:00) 2026-09-03 08:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-03 08:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 08:00:01,058 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 08:00:01,061 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 08:00:01,065 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 08:00:01,066 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 08:00:01,150 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 08:00:01,242 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 08:00:01,243 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 09:00:00 UTC)" executed successfully 2026-09-03 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 10:00:00 UTC)" (scheduled at 2026-09-03 09:00:00+00:00) 2026-09-03 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-03 09:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 09:00:01,226 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 09:00:01,231 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 09:00:01,234 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 09:00:01,234 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 09:00:01,304 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 09:00:01,369 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 09:00:01,370 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 10:00:00 UTC)" executed successfully 2026-09-03 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 11:00:00 UTC)" (scheduled at 2026-09-03 10:00:00+00:00) 2026-09-03 10:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-03 10:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 10:00:00,971 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 10:00:00,973 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 10:00:00,977 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 10:00:00,977 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 10:00:01,033 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 10:00:01,094 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 10:00:01,095 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 11:00:00 UTC)" executed successfully 2026-09-03 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 12:00:00 UTC)" (scheduled at 2026-09-03 11:00:00+00:00) 2026-09-03 11:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-03 11:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 11:00:01,050 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 11:00:01,052 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 11:00:01,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 11:00:01,056 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 11:00:01,107 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 11:00:01,202 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 11:00:01,202 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 12:00:00 UTC)" executed successfully 2026-09-03 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 13:00:00 UTC)" (scheduled at 2026-09-03 12:00:00+00:00) 2026-09-03 12:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-03 12:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 12:00:01,052 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 12:00:01,053 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 12:00:01,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 12:00:01,057 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 12:00:01,115 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 12:00:01,185 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 12:00:01,186 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 13:00:00 UTC)" executed successfully 2026-09-03 13:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 14:00:00 UTC)" (scheduled at 2026-09-03 13:00:00+00:00) 2026-09-03 13:00:00,021 INFO [fb-sync] Starting FB sync... 2026-09-03 13:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 13:00:03,492 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 13:00:03,495 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 13:00:03,499 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 13:00:03,499 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 13:00:03,573 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 13:00:03,665 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 13:00:03,666 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 14:00:00 UTC)" executed successfully 2026-09-03 14:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 15:00:00 UTC)" (scheduled at 2026-09-03 14:00:00+00:00) 2026-09-03 14:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-03 14:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 14:00:01,911 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 14:00:01,912 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 14:00:01,916 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 14:00:01,916 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 14:00:01,988 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 14:00:02,064 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 14:00:02,064 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 15:00:00 UTC)" executed successfully 2026-09-03 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 16:00:00 UTC)" (scheduled at 2026-09-03 15:00:00+00:00) 2026-09-03 15:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-03 15:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 15:00:01,789 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 15:00:01,791 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 15:00:01,793 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 15:00:01,794 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 15:00:01,863 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 15:00:01,950 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 15:00:01,950 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 16:00:00 UTC)" executed successfully 2026-09-03 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 17:00:00 UTC)" (scheduled at 2026-09-03 16:00:00+00:00) 2026-09-03 16:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-03 16:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 16:00:01,738 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 16:00:01,739 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 16:00:01,743 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 16:00:01,744 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 16:00:01,805 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 16:00:01,888 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 16:00:01,888 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 17:00:00 UTC)" executed successfully 2026-09-03 17:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 18:00:00 UTC)" (scheduled at 2026-09-03 17:00:00+00:00) 2026-09-03 17:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-03 17:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 17:00:01,121 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 17:00:01,123 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 17:00:01,127 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 17:00:01,127 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 17:00:01,204 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 17:00:01,292 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 17:00:01,292 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 18:00:00 UTC)" executed successfully 2026-09-03 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 19:00:00 UTC)" (scheduled at 2026-09-03 18:00:00+00:00) 2026-09-03 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-03 18:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 18:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 18:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 18:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 18:00:01,201 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 18:00:01,286 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 18:00:01,379 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 18:00:01,379 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 19:00:00 UTC)" executed successfully 2026-09-03 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 20:00:00 UTC)" (scheduled at 2026-09-03 19:00:00+00:00) 2026-09-03 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-03 19:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 19:00:01,462 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 19:00:01,464 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 19:00:01,469 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 19:00:01,469 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 19:00:01,533 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 19:00:01,599 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 19:00:01,600 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 20:00:00 UTC)" executed successfully 2026-09-03 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 21:00:00 UTC)" (scheduled at 2026-09-03 20:00:00+00:00) 2026-09-03 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-03 20:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 20:00:01,066 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 20:00:01,068 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 20:00:01,073 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 20:00:01,073 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 20:00:01,147 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 20:00:01,221 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 20:00:01,222 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 21:00:00 UTC)" executed successfully 2026-09-03 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 22:00:00 UTC)" (scheduled at 2026-09-03 21:00:00+00:00) 2026-09-03 21:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-03 21:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 21:00:01,107 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 21:00:01,109 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 21:00:01,112 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 21:00:01,112 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 21:00:01,172 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 21:00:01,232 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 21:00:01,233 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 22:00:00 UTC)" executed successfully 2026-09-03 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 23:00:00 UTC)" (scheduled at 2026-09-03 22:00:00+00:00) 2026-09-03 22:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-03 22:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 22:00:01,040 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 22:00:01,042 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 22:00:01,044 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 22:00:01,045 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 22:00:01,095 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 22:00:01,168 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 22:00:01,168 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-03 23:00:00 UTC)" executed successfully 2026-09-03 23:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 00:00:00 UTC)" (scheduled at 2026-09-03 23:00:00+00:00) 2026-09-03 23:00:00,016 INFO [fb-sync] Starting FB sync... 2026-09-03 23:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-03 23:00:01,104 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-03 23:00:01,106 INFO [fb-sync.worker] Scraped 50 posts 2026-09-03 23:00:01,109 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-03 23:00:01,110 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-03 23:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-03 23:00:01,233 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-03 23:00:01,233 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 00:00:00 UTC)" executed successfully 2026-09-04 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 01:00:00 UTC)" (scheduled at 2026-09-04 00:00:00+00:00) 2026-09-04 00:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-04 00:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 00:00:01,091 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 00:00:01,094 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 00:00:01,097 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 00:00:01,098 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 00:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 00:00:01,235 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 00:00:01,235 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 01:00:00 UTC)" executed successfully 2026-09-04 01:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 02:00:00 UTC)" (scheduled at 2026-09-04 01:00:00+00:00) 2026-09-04 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-04 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 01:00:01,054 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 01:00:01,055 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 01:00:01,059 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 01:00:01,059 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 01:00:01,112 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 01:00:01,165 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 01:00:01,165 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 02:00:00 UTC)" executed successfully 2026-09-04 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 03:00:00 UTC)" (scheduled at 2026-09-04 02:00:00+00:00) 2026-09-04 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-04 02:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 02:00:01,785 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 02:00:01,786 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 02:00:01,789 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 02:00:01,789 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 02:00:01,845 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 02:00:01,912 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 02:00:01,913 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 03:00:00 UTC)" executed successfully 2026-09-04 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 04:00:00 UTC)" (scheduled at 2026-09-04 03:00:00+00:00) 2026-09-04 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-04 03:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 03:00:01,137 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 03:00:01,139 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 03:00:01,142 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 03:00:01,142 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 03:00:01,186 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 03:00:01,249 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 03:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 04:00:00 UTC)" executed successfully 2026-09-04 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 05:00:00 UTC)" (scheduled at 2026-09-04 04:00:00+00:00) 2026-09-04 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-04 04:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 04:00:01,923 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 04:00:01,925 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 04:00:01,928 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 04:00:01,929 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 04:00:01,993 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 04:00:02,077 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 04:00:02,077 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 05:00:00 UTC)" executed successfully 2026-09-04 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 06:00:00 UTC)" (scheduled at 2026-09-04 05:00:00+00:00) 2026-09-04 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-04 05:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 05:00:01,109 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 05:00:01,110 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 05:00:01,113 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 05:00:01,113 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 05:00:01,202 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 05:00:01,316 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 05:00:01,316 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 06:00:00 UTC)" executed successfully 2026-09-04 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 07:00:00 UTC)" (scheduled at 2026-09-04 06:00:00+00:00) 2026-09-04 06:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-04 06:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 06:00:02,216 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 06:00:02,218 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 06:00:02,222 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 06:00:02,222 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 06:00:02,296 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 06:00:02,383 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 06:00:02,384 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 07:00:00 UTC)" executed successfully 2026-09-04 07:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 08:00:00 UTC)" (scheduled at 2026-09-04 07:00:00+00:00) 2026-09-04 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-04 07:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 07:00:01,058 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 07:00:01,060 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 07:00:01,063 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 07:00:01,064 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 07:00:01,306 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 07:00:01,378 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 07:00:01,378 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 08:00:00 UTC)" executed successfully 2026-09-04 08:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 09:00:00 UTC)" (scheduled at 2026-09-04 08:00:00+00:00) 2026-09-04 08:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-04 08:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 08:00:01,007 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 08:00:01,008 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 08:00:01,010 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 08:00:01,010 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 08:00:01,062 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 08:00:01,118 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 08:00:01,118 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 09:00:00 UTC)" executed successfully 2026-09-04 09:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 10:00:00 UTC)" (scheduled at 2026-09-04 09:00:00+00:00) 2026-09-04 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-04 09:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 09:00:01,512 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 09:00:01,514 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 09:00:01,518 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 09:00:01,518 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 09:00:01,576 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 09:00:01,650 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 09:00:01,651 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 10:00:00 UTC)" executed successfully 2026-09-04 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 11:00:00 UTC)" (scheduled at 2026-09-04 10:00:00+00:00) 2026-09-04 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-04 10:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 10:00:01,639 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 10:00:01,641 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 10:00:01,644 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 10:00:01,644 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 10:00:01,711 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 10:00:01,787 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 10:00:01,787 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 11:00:00 UTC)" executed successfully 2026-09-04 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 12:00:00 UTC)" (scheduled at 2026-09-04 11:00:00+00:00) 2026-09-04 11:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-04 11:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 11:00:02,050 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 11:00:02,052 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 11:00:02,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 11:00:02,056 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 11:00:02,124 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 11:00:02,203 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 11:00:02,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 12:00:00 UTC)" executed successfully 2026-09-04 12:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 13:00:00 UTC)" (scheduled at 2026-09-04 12:00:00+00:00) 2026-09-04 12:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-04 12:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 12:00:01,119 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 12:00:01,120 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 12:00:01,125 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 12:00:01,125 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 12:00:01,187 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 12:00:01,261 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 12:00:01,261 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 13:00:00 UTC)" executed successfully 2026-09-04 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 14:00:00 UTC)" (scheduled at 2026-09-04 13:00:00+00:00) 2026-09-04 13:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-04 13:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 13:00:01,938 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 13:00:01,941 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 13:00:01,944 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 13:00:01,944 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 13:00:02,006 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 13:00:02,074 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 13:00:02,074 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 14:00:00 UTC)" executed successfully 2026-09-04 14:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 15:00:00 UTC)" (scheduled at 2026-09-04 14:00:00+00:00) 2026-09-04 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-04 14:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 14:00:01,348 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 14:00:01,351 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 14:00:01,354 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 14:00:01,354 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 14:00:01,419 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 14:00:01,495 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 14:00:01,495 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 15:00:00 UTC)" executed successfully 2026-09-04 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 16:00:00 UTC)" (scheduled at 2026-09-04 15:00:00+00:00) 2026-09-04 15:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-04 15:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 15:00:01,473 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 15:00:01,476 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 15:00:01,479 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 15:00:01,479 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 15:00:01,541 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 15:00:01,599 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 15:00:01,599 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 16:00:00 UTC)" executed successfully 2026-09-04 16:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 17:00:00 UTC)" (scheduled at 2026-09-04 16:00:00+00:00) 2026-09-04 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-04 16:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 16:00:01,190 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 16:00:01,191 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 16:00:01,193 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 16:00:01,193 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 16:00:01,228 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 16:00:01,271 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 16:00:01,272 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 17:00:00 UTC)" executed successfully 2026-09-04 17:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 18:00:00 UTC)" (scheduled at 2026-09-04 17:00:00+00:00) 2026-09-04 17:00:00,004 INFO [fb-sync] Starting FB sync... 2026-09-04 17:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 17:00:01,213 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 17:00:01,215 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 17:00:01,218 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 17:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 17:00:01,276 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 17:00:01,346 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 17:00:01,347 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 18:00:00 UTC)" executed successfully 2026-09-04 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 19:00:00 UTC)" (scheduled at 2026-09-04 18:00:00+00:00) 2026-09-04 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-04 18:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 18:00:01,162 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 18:00:01,164 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 18:00:01,168 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 18:00:01,168 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 18:00:01,224 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 18:00:01,297 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 18:00:01,298 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 19:00:00 UTC)" executed successfully 2026-09-04 19:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 20:00:00 UTC)" (scheduled at 2026-09-04 19:00:00+00:00) 2026-09-04 19:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-04 19:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 19:00:00,971 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 19:00:00,973 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 19:00:00,975 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 19:00:00,975 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 19:00:01,028 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 19:00:01,094 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 19:00:01,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 20:00:00 UTC)" executed successfully 2026-09-04 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 21:00:00 UTC)" (scheduled at 2026-09-04 20:00:00+00:00) 2026-09-04 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-04 20:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 20:00:00,916 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 20:00:00,917 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 20:00:00,920 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 20:00:00,920 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 20:00:00,976 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 20:00:01,045 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 20:00:01,046 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 21:00:00 UTC)" executed successfully 2026-09-04 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 22:00:00 UTC)" (scheduled at 2026-09-04 21:00:00+00:00) 2026-09-04 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-04 21:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 21:00:01,234 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 21:00:01,235 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 21:00:01,237 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 21:00:01,237 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 21:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 21:00:01,346 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 21:00:01,346 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 22:00:00 UTC)" executed successfully 2026-09-04 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 23:00:00 UTC)" (scheduled at 2026-09-04 22:00:00+00:00) 2026-09-04 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-04 22:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 22:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 22:00:01,030 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 22:00:01,033 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 22:00:01,033 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 22:00:01,084 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 22:00:01,133 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 22:00:01,133 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-04 23:00:00 UTC)" executed successfully 2026-09-04 23:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 00:00:00 UTC)" (scheduled at 2026-09-04 23:00:00+00:00) 2026-09-04 23:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-04 23:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-04 23:00:01,264 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-04 23:00:01,266 INFO [fb-sync.worker] Scraped 50 posts 2026-09-04 23:00:01,268 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-04 23:00:01,269 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-04 23:00:01,325 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-04 23:00:01,409 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-04 23:00:01,410 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 00:00:00 UTC)" executed successfully 2026-09-05 00:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 01:00:00 UTC)" (scheduled at 2026-09-05 00:00:00+00:00) 2026-09-05 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 00:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 00:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 00:00:01,030 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 00:00:01,032 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 00:00:01,033 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 00:00:01,088 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 00:00:01,181 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 00:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 01:00:00 UTC)" executed successfully 2026-09-05 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 02:00:00 UTC)" (scheduled at 2026-09-05 01:00:00+00:00) 2026-09-05 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-05 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 01:00:00,928 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 01:00:00,929 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 01:00:00,932 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 01:00:00,932 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 01:00:00,973 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 01:00:01,033 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 01:00:01,034 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 02:00:00 UTC)" executed successfully 2026-09-05 02:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 03:00:00 UTC)" (scheduled at 2026-09-05 02:00:00+00:00) 2026-09-05 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 02:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 02:00:00,968 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 02:00:00,969 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 02:00:00,973 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 02:00:00,973 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 02:00:01,030 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 02:00:01,095 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 02:00:01,095 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 03:00:00 UTC)" executed successfully 2026-09-05 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 04:00:00 UTC)" (scheduled at 2026-09-05 03:00:00+00:00) 2026-09-05 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-05 03:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 03:00:00,961 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 03:00:00,962 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 03:00:00,964 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 03:00:00,964 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 03:00:01,007 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 03:00:01,062 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 03:00:01,062 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 04:00:00 UTC)" executed successfully 2026-09-05 04:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 05:00:00 UTC)" (scheduled at 2026-09-05 04:00:00+00:00) 2026-09-05 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-05 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 04:00:01,038 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 04:00:01,039 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 04:00:01,041 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 04:00:01,041 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 04:00:01,084 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 04:00:01,136 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 04:00:01,136 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 05:00:00 UTC)" executed successfully 2026-09-05 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 06:00:00 UTC)" (scheduled at 2026-09-05 05:00:00+00:00) 2026-09-05 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-05 05:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 05:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 05:00:01,031 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 05:00:01,033 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 05:00:01,034 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 05:00:01,090 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 05:00:01,159 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 05:00:01,159 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 06:00:00 UTC)" executed successfully 2026-09-05 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 07:00:00 UTC)" (scheduled at 2026-09-05 06:00:00+00:00) 2026-09-05 06:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-05 06:00:00,135 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 06:00:01,383 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 06:00:01,386 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 06:00:01,389 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 06:00:01,389 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 06:00:01,470 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 06:00:01,516 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 06:00:01,516 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 07:00:00 UTC)" executed successfully 2026-09-05 07:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 08:00:00 UTC)" (scheduled at 2026-09-05 07:00:00+00:00) 2026-09-05 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-05 07:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 07:00:01,090 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 07:00:01,092 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 07:00:01,096 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 07:00:01,097 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 07:00:01,191 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 07:00:01,273 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 07:00:01,274 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 08:00:00 UTC)" executed successfully 2026-09-05 08:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 09:00:00 UTC)" (scheduled at 2026-09-05 08:00:00+00:00) 2026-09-05 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 08:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 08:00:01,430 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 08:00:01,432 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 08:00:01,436 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 08:00:01,436 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 08:00:01,501 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 08:00:01,576 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 08:00:01,577 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 09:00:00 UTC)" executed successfully 2026-09-05 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 10:00:00 UTC)" (scheduled at 2026-09-05 09:00:00+00:00) 2026-09-05 09:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 09:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 09:00:01,422 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 09:00:01,423 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 09:00:01,426 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 09:00:01,426 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 09:00:01,473 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 09:00:01,545 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 09:00:01,545 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 10:00:00 UTC)" executed successfully 2026-09-05 10:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 11:00:00 UTC)" (scheduled at 2026-09-05 10:00:00+00:00) 2026-09-05 10:00:00,016 INFO [fb-sync] Starting FB sync... 2026-09-05 10:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 10:00:00,989 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 10:00:00,992 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 10:00:00,995 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 10:00:00,995 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 10:00:01,061 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 10:00:01,112 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 10:00:01,112 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 11:00:00 UTC)" executed successfully 2026-09-05 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 12:00:00 UTC)" (scheduled at 2026-09-05 11:00:00+00:00) 2026-09-05 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-05 11:00:00,116 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 11:00:01,078 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 11:00:01,079 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 11:00:01,082 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 11:00:01,082 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 11:00:01,133 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 11:00:01,171 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 11:00:01,171 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 12:00:00 UTC)" executed successfully 2026-09-05 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 13:00:00 UTC)" (scheduled at 2026-09-05 12:00:00+00:00) 2026-09-05 12:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 12:00:01,052 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 12:00:01,054 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 12:00:01,057 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 12:00:01,057 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 12:00:01,108 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 12:00:01,176 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 12:00:01,176 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 13:00:00 UTC)" executed successfully 2026-09-05 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 14:00:00 UTC)" (scheduled at 2026-09-05 13:00:00+00:00) 2026-09-05 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-05 13:00:00,114 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 13:00:01,511 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 13:00:01,512 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 13:00:01,516 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 13:00:01,516 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 13:00:01,608 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 13:00:01,683 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 13:00:01,683 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 14:00:00 UTC)" executed successfully 2026-09-05 14:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 15:00:00 UTC)" (scheduled at 2026-09-05 14:00:00+00:00) 2026-09-05 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-05 14:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 14:00:01,097 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 14:00:01,098 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 14:00:01,101 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 14:00:01,102 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 14:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 14:00:01,221 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 14:00:01,221 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 15:00:00 UTC)" executed successfully 2026-09-05 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 16:00:00 UTC)" (scheduled at 2026-09-05 15:00:00+00:00) 2026-09-05 15:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-05 15:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 15:00:01,631 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 15:00:01,632 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 15:00:01,635 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 15:00:01,635 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 15:00:01,693 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 15:00:01,750 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 15:00:01,750 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 16:00:00 UTC)" executed successfully 2026-09-05 16:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 17:00:00 UTC)" (scheduled at 2026-09-05 16:00:00+00:00) 2026-09-05 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-05 16:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 16:00:01,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 16:00:01,174 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 16:00:01,177 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 16:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 16:00:01,236 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 16:00:01,299 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 16:00:01,299 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 17:00:00 UTC)" executed successfully 2026-09-05 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 18:00:00 UTC)" (scheduled at 2026-09-05 17:00:00+00:00) 2026-09-05 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-05 17:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 17:00:01,093 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 17:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 17:00:01,097 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 17:00:01,097 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 17:00:01,146 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 17:00:01,216 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 17:00:01,216 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 18:00:00 UTC)" executed successfully 2026-09-05 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 19:00:00 UTC)" (scheduled at 2026-09-05 18:00:00+00:00) 2026-09-05 18:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-05 18:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 18:00:02,364 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 18:00:02,365 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 18:00:02,369 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 18:00:02,369 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 18:00:02,433 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 18:00:02,502 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 18:00:02,502 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 19:00:00 UTC)" executed successfully 2026-09-05 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 20:00:00 UTC)" (scheduled at 2026-09-05 19:00:00+00:00) 2026-09-05 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 19:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 19:00:03,125 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 19:00:03,127 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 19:00:03,129 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 19:00:03,129 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 19:00:03,197 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 19:00:03,258 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 19:00:03,258 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 20:00:00 UTC)" executed successfully 2026-09-05 20:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 21:00:00 UTC)" (scheduled at 2026-09-05 20:00:00+00:00) 2026-09-05 20:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-05 20:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 20:00:00,904 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 20:00:00,905 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 20:00:00,907 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 20:00:00,907 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 20:00:00,999 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 20:00:01,089 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 20:00:01,089 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 21:00:00 UTC)" executed successfully 2026-09-05 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 22:00:00 UTC)" (scheduled at 2026-09-05 21:00:00+00:00) 2026-09-05 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-05 21:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 21:00:01,112 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 21:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 21:00:01,116 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 21:00:01,117 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 21:00:01,179 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 21:00:01,257 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 21:00:01,257 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 22:00:00 UTC)" executed successfully 2026-09-05 22:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 23:00:00 UTC)" (scheduled at 2026-09-05 22:00:00+00:00) 2026-09-05 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-05 22:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 22:00:00,990 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 22:00:00,992 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 22:00:00,995 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 22:00:00,996 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 22:00:01,054 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 22:00:01,129 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 22:00:01,129 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-05 23:00:00 UTC)" executed successfully 2026-09-05 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 00:00:00 UTC)" (scheduled at 2026-09-05 23:00:00+00:00) 2026-09-05 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-05 23:00:00,097 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-05 23:00:01,049 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-05 23:00:01,049 INFO [fb-sync.worker] Scraped 50 posts 2026-09-05 23:00:01,052 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-05 23:00:01,052 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-05 23:00:01,109 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-05 23:00:01,166 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-05 23:00:01,166 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 00:00:00 UTC)" executed successfully 2026-09-06 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 01:00:00 UTC)" (scheduled at 2026-09-06 00:00:00+00:00) 2026-09-06 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-06 00:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 00:00:00,959 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 00:00:00,960 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 00:00:00,963 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 00:00:00,964 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 00:00:01,021 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 00:00:01,088 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 00:00:01,089 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 01:00:00 UTC)" executed successfully 2026-09-06 01:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 02:00:00 UTC)" (scheduled at 2026-09-06 01:00:00+00:00) 2026-09-06 01:00:00,023 INFO [fb-sync] Starting FB sync... 2026-09-06 01:00:00,098 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 01:00:01,063 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 01:00:01,065 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 01:00:01,067 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 01:00:01,068 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 01:00:01,120 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 01:00:01,179 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 01:00:01,179 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 02:00:00 UTC)" executed successfully 2026-09-06 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 03:00:00 UTC)" (scheduled at 2026-09-06 02:00:00+00:00) 2026-09-06 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-06 02:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 02:00:01,168 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 02:00:01,170 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 02:00:01,173 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 02:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 02:00:01,224 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 02:00:01,276 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 02:00:01,277 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 03:00:00 UTC)" executed successfully 2026-09-06 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 04:00:00 UTC)" (scheduled at 2026-09-06 03:00:00+00:00) 2026-09-06 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 03:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 03:00:01,173 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 03:00:01,175 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 03:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 03:00:01,179 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 03:00:01,236 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 03:00:01,326 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 03:00:01,327 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 04:00:00 UTC)" executed successfully 2026-09-06 04:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 05:00:00 UTC)" (scheduled at 2026-09-06 04:00:00+00:00) 2026-09-06 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-06 04:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 04:00:01,553 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 04:00:01,554 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 04:00:01,557 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 04:00:01,557 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 04:00:01,604 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 04:00:01,678 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 04:00:01,678 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 05:00:00 UTC)" executed successfully 2026-09-06 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 06:00:00 UTC)" (scheduled at 2026-09-06 05:00:00+00:00) 2026-09-06 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 05:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 05:00:01,084 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 05:00:01,085 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 05:00:01,088 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 05:00:01,089 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 05:00:01,146 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 05:00:01,216 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 05:00:01,216 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 06:00:00 UTC)" executed successfully 2026-09-06 06:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 07:00:00 UTC)" (scheduled at 2026-09-06 06:00:00+00:00) 2026-09-06 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-06 06:00:00,107 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 06:00:00,950 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 06:00:00,951 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 06:00:00,954 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 06:00:00,955 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 06:00:01,022 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 06:00:01,100 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 06:00:01,101 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 07:00:00 UTC)" executed successfully 2026-09-06 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 08:00:00 UTC)" (scheduled at 2026-09-06 07:00:00+00:00) 2026-09-06 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 07:00:01,082 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 07:00:01,084 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 07:00:01,086 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 07:00:01,086 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 07:00:01,137 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 07:00:01,204 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 07:00:01,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 08:00:00 UTC)" executed successfully 2026-09-06 08:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 09:00:00 UTC)" (scheduled at 2026-09-06 08:00:00+00:00) 2026-09-06 08:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-06 08:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 08:00:00,987 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 08:00:00,989 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 08:00:00,993 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 08:00:00,993 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 08:00:01,046 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 08:00:01,112 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 08:00:01,112 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 09:00:00 UTC)" executed successfully 2026-09-06 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 10:00:00 UTC)" (scheduled at 2026-09-06 09:00:00+00:00) 2026-09-06 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 09:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 09:00:01,448 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 09:00:01,449 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 09:00:01,452 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 09:00:01,452 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 09:00:01,501 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 09:00:01,560 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 09:00:01,560 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 10:00:00 UTC)" executed successfully 2026-09-06 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 11:00:00 UTC)" (scheduled at 2026-09-06 10:00:00+00:00) 2026-09-06 10:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-06 10:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 10:00:01,067 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 10:00:01,068 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 10:00:01,072 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 10:00:01,072 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 10:00:01,146 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 10:00:01,203 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 10:00:01,203 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 11:00:00 UTC)" executed successfully 2026-09-06 11:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 12:00:00 UTC)" (scheduled at 2026-09-06 11:00:00+00:00) 2026-09-06 11:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-06 11:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 11:00:01,380 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 11:00:01,383 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 11:00:01,384 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 11:00:01,385 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 11:00:01,439 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 11:00:01,509 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 11:00:01,510 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 12:00:00 UTC)" executed successfully 2026-09-06 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 13:00:00 UTC)" (scheduled at 2026-09-06 12:00:00+00:00) 2026-09-06 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 12:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 12:00:01,903 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 12:00:01,904 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 12:00:01,908 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 12:00:01,909 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 12:00:01,971 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 12:00:02,037 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 12:00:02,038 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 13:00:00 UTC)" executed successfully 2026-09-06 13:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 14:00:00 UTC)" (scheduled at 2026-09-06 13:00:00+00:00) 2026-09-06 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-06 13:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 13:00:02,236 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 13:00:02,239 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 13:00:02,241 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 13:00:02,241 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 13:00:02,329 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 13:00:02,413 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 13:00:02,416 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 14:00:00 UTC)" executed successfully 2026-09-06 14:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 15:00:00 UTC)" (scheduled at 2026-09-06 14:00:00+00:00) 2026-09-06 14:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-06 14:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 14:00:01,295 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 14:00:01,297 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 14:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 14:00:01,301 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 14:00:01,360 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 14:00:01,415 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 14:00:01,416 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 15:00:00 UTC)" executed successfully 2026-09-06 15:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 16:00:00 UTC)" (scheduled at 2026-09-06 15:00:00+00:00) 2026-09-06 15:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-06 15:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 15:00:02,253 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 15:00:02,255 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 15:00:02,259 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 15:00:02,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 15:00:02,315 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 15:00:02,369 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 15:00:02,370 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 16:00:00 UTC)" executed successfully 2026-09-06 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 17:00:00 UTC)" (scheduled at 2026-09-06 16:00:00+00:00) 2026-09-06 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 16:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 16:00:01,113 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 16:00:01,114 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 16:00:01,117 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 16:00:01,118 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 16:00:01,171 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 16:00:01,245 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 16:00:01,246 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 17:00:00 UTC)" executed successfully 2026-09-06 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 18:00:00 UTC)" (scheduled at 2026-09-06 17:00:00+00:00) 2026-09-06 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-06 17:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 17:00:02,428 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 17:00:02,429 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 17:00:02,432 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 17:00:02,432 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 17:00:02,518 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 17:00:02,597 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 17:00:02,598 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 18:00:00 UTC)" executed successfully 2026-09-06 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 19:00:00 UTC)" (scheduled at 2026-09-06 18:00:00+00:00) 2026-09-06 18:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-06 18:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 18:00:02,296 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 18:00:02,298 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 18:00:02,302 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 18:00:02,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 18:00:02,391 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 18:00:02,465 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 18:00:02,466 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 19:00:00 UTC)" executed successfully 2026-09-06 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 20:00:00 UTC)" (scheduled at 2026-09-06 19:00:00+00:00) 2026-09-06 19:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-06 19:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 19:00:01,652 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 19:00:01,654 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 19:00:01,657 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 19:00:01,657 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 19:00:01,724 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 19:00:01,787 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 19:00:01,787 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 20:00:00 UTC)" executed successfully 2026-09-06 20:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 21:00:00 UTC)" (scheduled at 2026-09-06 20:00:00+00:00) 2026-09-06 20:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-06 20:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 20:00:00,959 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 20:00:00,961 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 20:00:00,963 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 20:00:00,964 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 20:00:01,017 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 20:00:01,063 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 20:00:01,064 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 21:00:00 UTC)" executed successfully 2026-09-06 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 22:00:00 UTC)" (scheduled at 2026-09-06 21:00:00+00:00) 2026-09-06 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-06 21:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 21:00:01,213 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 21:00:01,214 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 21:00:01,217 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 21:00:01,218 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 21:00:01,274 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 21:00:01,330 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 21:00:01,330 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 22:00:00 UTC)" executed successfully 2026-09-06 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 23:00:00 UTC)" (scheduled at 2026-09-06 22:00:00+00:00) 2026-09-06 22:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-06 22:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 22:00:01,068 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 22:00:01,071 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 22:00:01,074 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 22:00:01,074 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 22:00:01,149 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 22:00:01,281 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 22:00:01,282 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-06 23:00:00 UTC)" executed successfully 2026-09-06 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 00:00:00 UTC)" (scheduled at 2026-09-06 23:00:00+00:00) 2026-09-06 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-06 23:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-06 23:00:00,902 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-06 23:00:00,904 INFO [fb-sync.worker] Scraped 50 posts 2026-09-06 23:00:00,906 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-06 23:00:00,907 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-06 23:00:00,959 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-06 23:00:01,018 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-06 23:00:01,018 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 00:00:00 UTC)" executed successfully 2026-09-07 00:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 01:00:00 UTC)" (scheduled at 2026-09-07 00:00:00+00:00) 2026-09-07 00:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-07 00:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 00:00:02,300 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 00:00:02,306 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 00:00:02,315 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 00:00:02,316 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 00:00:02,414 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 00:00:02,504 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 00:00:02,505 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 01:00:00 UTC)" executed successfully 2026-09-07 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 02:00:00 UTC)" (scheduled at 2026-09-07 01:00:00+00:00) 2026-09-07 01:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-07 01:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 01:00:00,933 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 01:00:00,934 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 01:00:00,935 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 01:00:00,936 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 01:00:00,984 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 01:00:01,059 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 01:00:01,060 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 02:00:00 UTC)" executed successfully 2026-09-07 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 03:00:00 UTC)" (scheduled at 2026-09-07 02:00:00+00:00) 2026-09-07 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 02:00:01,676 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 02:00:01,679 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 02:00:01,682 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 02:00:01,683 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 02:00:01,751 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 02:00:01,827 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 02:00:01,828 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 03:00:00 UTC)" executed successfully 2026-09-07 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 04:00:00 UTC)" (scheduled at 2026-09-07 03:00:00+00:00) 2026-09-07 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-07 03:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 03:00:01,077 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 03:00:01,080 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 03:00:01,083 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 03:00:01,084 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 03:00:01,154 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 03:00:01,213 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 03:00:01,214 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 04:00:00 UTC)" executed successfully 2026-09-07 04:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 05:00:00 UTC)" (scheduled at 2026-09-07 04:00:00+00:00) 2026-09-07 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-07 04:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 04:00:01,014 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 04:00:01,015 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 04:00:01,018 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 04:00:01,018 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 04:00:01,078 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 04:00:01,166 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 04:00:01,167 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 05:00:00 UTC)" executed successfully 2026-09-07 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 06:00:00 UTC)" (scheduled at 2026-09-07 05:00:00+00:00) 2026-09-07 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-07 05:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 05:00:01,312 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 05:00:01,315 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 05:00:01,317 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 05:00:01,317 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 05:00:01,406 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 05:00:01,487 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 05:00:01,488 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 06:00:00 UTC)" executed successfully 2026-09-07 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 07:00:00 UTC)" (scheduled at 2026-09-07 06:00:00+00:00) 2026-09-07 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-07 06:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 06:00:01,017 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 06:00:01,020 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 06:00:01,024 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 06:00:01,025 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 06:00:01,093 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 06:00:01,156 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 06:00:01,156 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 07:00:00 UTC)" executed successfully 2026-09-07 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 08:00:00 UTC)" (scheduled at 2026-09-07 07:00:00+00:00) 2026-09-07 07:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-07 07:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 07:00:01,678 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 07:00:01,680 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 07:00:01,684 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 07:00:01,684 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 07:00:01,738 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 07:00:01,796 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 07:00:01,797 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 08:00:00 UTC)" executed successfully 2026-09-07 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 09:00:00 UTC)" (scheduled at 2026-09-07 08:00:00+00:00) 2026-09-07 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-07 08:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 08:00:01,208 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 08:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 08:00:01,215 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 08:00:01,215 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 08:00:01,284 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 08:00:01,348 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 08:00:01,349 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 09:00:00 UTC)" executed successfully 2026-09-07 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 10:00:00 UTC)" (scheduled at 2026-09-07 09:00:00+00:00) 2026-09-07 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-07 09:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 09:00:01,059 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 09:00:01,061 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 09:00:01,063 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 09:00:01,063 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 09:00:01,123 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 09:00:01,184 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 09:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 10:00:00 UTC)" executed successfully 2026-09-07 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 11:00:00 UTC)" (scheduled at 2026-09-07 10:00:00+00:00) 2026-09-07 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-07 10:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 10:00:01,089 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 10:00:01,089 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 10:00:01,092 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 10:00:01,093 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 10:00:01,144 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 10:00:01,200 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 10:00:01,201 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 11:00:00 UTC)" executed successfully 2026-09-07 11:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 12:00:00 UTC)" (scheduled at 2026-09-07 11:00:00+00:00) 2026-09-07 11:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 11:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 11:00:01,002 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 11:00:01,004 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 11:00:01,007 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 11:00:01,007 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 11:00:01,063 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 11:00:01,124 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 11:00:01,124 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 12:00:00 UTC)" executed successfully 2026-09-07 12:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 13:00:00 UTC)" (scheduled at 2026-09-07 12:00:00+00:00) 2026-09-07 12:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-07 12:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 12:00:01,019 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 12:00:01,020 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 12:00:01,022 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 12:00:01,022 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 12:00:01,075 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 12:00:01,143 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 12:00:01,143 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 13:00:00 UTC)" executed successfully 2026-09-07 13:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 14:00:00 UTC)" (scheduled at 2026-09-07 13:00:00+00:00) 2026-09-07 13:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-07 13:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 13:00:02,291 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 13:00:02,293 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 13:00:02,296 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 13:00:02,297 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 13:00:02,348 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 13:00:02,427 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 13:00:02,428 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 14:00:00 UTC)" executed successfully 2026-09-07 14:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 15:00:00 UTC)" (scheduled at 2026-09-07 14:00:00+00:00) 2026-09-07 14:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-07 14:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 14:00:01,199 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 14:00:01,201 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 14:00:01,205 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 14:00:01,205 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 14:00:01,277 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 14:00:01,375 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 14:00:01,375 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 15:00:00 UTC)" executed successfully 2026-09-07 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 16:00:00 UTC)" (scheduled at 2026-09-07 15:00:00+00:00) 2026-09-07 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-07 15:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 15:00:01,168 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 15:00:01,169 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 15:00:01,172 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 15:00:01,172 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 15:00:01,227 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 15:00:01,289 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 15:00:01,290 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 16:00:00 UTC)" executed successfully 2026-09-07 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 17:00:00 UTC)" (scheduled at 2026-09-07 16:00:00+00:00) 2026-09-07 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 16:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 16:00:01,038 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 16:00:01,039 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 16:00:01,041 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 16:00:01,041 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 16:00:01,079 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 16:00:01,144 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 16:00:01,144 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 17:00:00 UTC)" executed successfully 2026-09-07 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 18:00:00 UTC)" (scheduled at 2026-09-07 17:00:00+00:00) 2026-09-07 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-07 17:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 17:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 17:00:01,198 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 17:00:01,202 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 17:00:01,202 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 17:00:01,294 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 17:00:01,373 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 17:00:01,374 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 18:00:00 UTC)" executed successfully 2026-09-07 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 19:00:00 UTC)" (scheduled at 2026-09-07 18:00:00+00:00) 2026-09-07 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 18:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 18:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 18:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 18:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 18:00:01,210 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 18:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 18:00:01,322 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 18:00:01,323 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 19:00:00 UTC)" executed successfully 2026-09-07 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 20:00:00 UTC)" (scheduled at 2026-09-07 19:00:00+00:00) 2026-09-07 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 19:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 19:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 19:00:01,031 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 19:00:01,034 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 19:00:01,035 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 19:00:01,094 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 19:00:01,139 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 19:00:01,139 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 20:00:00 UTC)" executed successfully 2026-09-07 20:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 21:00:00 UTC)" (scheduled at 2026-09-07 20:00:00+00:00) 2026-09-07 20:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-07 20:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 20:00:01,512 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 20:00:01,514 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 20:00:01,518 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 20:00:01,518 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 20:00:01,560 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 20:00:01,620 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 20:00:01,620 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 21:00:00 UTC)" executed successfully 2026-09-07 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 22:00:00 UTC)" (scheduled at 2026-09-07 21:00:00+00:00) 2026-09-07 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-07 21:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 21:00:01,527 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 21:00:01,528 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 21:00:01,532 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 21:00:01,532 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 21:00:01,582 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 21:00:01,669 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 21:00:01,669 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 22:00:00 UTC)" executed successfully 2026-09-07 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 23:00:00 UTC)" (scheduled at 2026-09-07 22:00:00+00:00) 2026-09-07 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-07 22:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 22:00:01,271 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 22:00:01,273 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 22:00:01,276 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 22:00:01,277 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 22:00:01,335 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 22:00:01,410 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 22:00:01,410 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-07 23:00:00 UTC)" executed successfully 2026-09-07 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 00:00:00 UTC)" (scheduled at 2026-09-07 23:00:00+00:00) 2026-09-07 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-07 23:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-07 23:00:01,587 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-07 23:00:01,589 INFO [fb-sync.worker] Scraped 50 posts 2026-09-07 23:00:01,593 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-07 23:00:01,593 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-07 23:00:01,660 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-07 23:00:01,743 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-07 23:00:01,744 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 00:00:00 UTC)" executed successfully 2026-09-08 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 01:00:00 UTC)" (scheduled at 2026-09-08 00:00:00+00:00) 2026-09-08 00:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-08 00:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 00:00:01,700 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 00:00:01,702 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 00:00:01,705 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 00:00:01,706 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 00:00:01,768 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 00:00:01,840 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 00:00:01,840 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 01:00:00 UTC)" executed successfully 2026-09-08 01:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 02:00:00 UTC)" (scheduled at 2026-09-08 01:00:00+00:00) 2026-09-08 01:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-08 01:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 01:00:01,274 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 01:00:01,276 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 01:00:01,279 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 01:00:01,279 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 01:00:01,344 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 01:00:01,410 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 01:00:01,411 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 02:00:00 UTC)" executed successfully 2026-09-08 02:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 03:00:00 UTC)" (scheduled at 2026-09-08 02:00:00+00:00) 2026-09-08 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-08 02:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 02:00:02,056 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 02:00:02,057 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 02:00:02,061 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 02:00:02,062 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 02:00:02,111 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 02:00:02,169 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 02:00:02,169 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 03:00:00 UTC)" executed successfully 2026-09-08 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 04:00:00 UTC)" (scheduled at 2026-09-08 03:00:00+00:00) 2026-09-08 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-08 03:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 03:00:01,029 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 03:00:01,031 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 03:00:01,034 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 03:00:01,034 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 03:00:01,089 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 03:00:01,169 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 03:00:01,169 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 04:00:00 UTC)" executed successfully 2026-09-08 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 05:00:00 UTC)" (scheduled at 2026-09-08 04:00:00+00:00) 2026-09-08 04:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-08 04:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 04:00:01,118 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 04:00:01,119 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 04:00:01,122 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 04:00:01,122 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 04:00:01,181 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 04:00:01,244 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 04:00:01,244 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 05:00:00 UTC)" executed successfully 2026-09-08 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 06:00:00 UTC)" (scheduled at 2026-09-08 05:00:00+00:00) 2026-09-08 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-08 05:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 05:00:01,152 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 05:00:01,153 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 05:00:01,155 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 05:00:01,155 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 05:00:01,206 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 05:00:01,255 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 05:00:01,255 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 06:00:00 UTC)" executed successfully 2026-09-08 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 07:00:00 UTC)" (scheduled at 2026-09-08 06:00:00+00:00) 2026-09-08 06:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-08 06:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 06:00:01,144 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 06:00:01,145 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 06:00:01,149 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 06:00:01,149 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 06:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 06:00:01,238 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 06:00:01,238 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 07:00:00 UTC)" executed successfully 2026-09-08 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 08:00:00 UTC)" (scheduled at 2026-09-08 07:00:00+00:00) 2026-09-08 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-08 07:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 07:00:01,356 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 07:00:01,356 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 07:00:01,360 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 07:00:01,360 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 07:00:01,411 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 07:00:01,482 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 07:00:01,482 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 08:00:00 UTC)" executed successfully 2026-09-08 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 09:00:00 UTC)" (scheduled at 2026-09-08 08:00:00+00:00) 2026-09-08 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-08 08:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 08:00:01,069 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 08:00:01,071 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 08:00:01,074 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 08:00:01,074 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 08:00:01,124 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 08:00:01,187 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 08:00:01,187 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 09:00:00 UTC)" executed successfully 2026-09-08 09:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 10:00:00 UTC)" (scheduled at 2026-09-08 09:00:00+00:00) 2026-09-08 09:00:00,020 INFO [fb-sync] Starting FB sync... 2026-09-08 09:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 09:00:00,995 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 09:00:00,997 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 09:00:01,000 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 09:00:01,000 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 09:00:01,043 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 09:00:01,109 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 09:00:01,110 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 10:00:00 UTC)" executed successfully 2026-09-08 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 11:00:00 UTC)" (scheduled at 2026-09-08 10:00:00+00:00) 2026-09-08 10:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-08 10:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 10:00:01,166 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 10:00:01,167 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 10:00:01,169 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 10:00:01,170 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 10:00:01,222 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 10:00:01,283 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 10:00:01,284 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 11:00:00 UTC)" executed successfully 2026-09-08 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 12:00:00 UTC)" (scheduled at 2026-09-08 11:00:00+00:00) 2026-09-08 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-08 11:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 11:00:01,330 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 11:00:01,331 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 11:00:01,335 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 11:00:01,336 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 11:00:01,392 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 11:00:01,465 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 11:00:01,466 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 12:00:00 UTC)" executed successfully 2026-09-08 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 13:00:00 UTC)" (scheduled at 2026-09-08 12:00:00+00:00) 2026-09-08 12:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-08 12:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 12:00:01,138 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 12:00:01,140 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 12:00:01,143 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 12:00:01,144 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 12:00:01,211 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 12:00:01,288 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 12:00:01,289 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 13:00:00 UTC)" executed successfully 2026-09-08 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 14:00:00 UTC)" (scheduled at 2026-09-08 13:00:00+00:00) 2026-09-08 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-08 13:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 13:00:01,446 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 13:00:01,448 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 13:00:01,452 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 13:00:01,452 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 13:00:01,512 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 13:00:01,582 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 13:00:01,583 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 14:00:00 UTC)" executed successfully 2026-09-08 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 15:00:00 UTC)" (scheduled at 2026-09-08 14:00:00+00:00) 2026-09-08 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-08 14:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 14:00:01,262 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 14:00:01,264 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 14:00:01,267 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 14:00:01,268 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 14:00:01,318 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 14:00:01,359 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 14:00:01,359 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 15:00:00 UTC)" executed successfully 2026-09-08 15:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 16:00:00 UTC)" (scheduled at 2026-09-08 15:00:00+00:00) 2026-09-08 15:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-08 15:00:00,090 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 15:00:02,412 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 15:00:02,413 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 15:00:02,416 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 15:00:02,416 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 15:00:02,470 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 15:00:02,540 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 15:00:02,541 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 16:00:00 UTC)" executed successfully 2026-09-08 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 17:00:00 UTC)" (scheduled at 2026-09-08 16:00:00+00:00) 2026-09-08 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-08 16:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 16:00:01,251 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 16:00:01,252 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 16:00:01,256 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 16:00:01,256 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 16:00:01,308 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 16:00:01,350 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 16:00:01,350 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 17:00:00 UTC)" executed successfully 2026-09-08 17:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 18:00:00 UTC)" (scheduled at 2026-09-08 17:00:00+00:00) 2026-09-08 17:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-08 17:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 17:00:01,327 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 17:00:01,328 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 17:00:01,332 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 17:00:01,332 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 17:00:01,393 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 17:00:01,475 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 17:00:01,476 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 18:00:00 UTC)" executed successfully 2026-09-08 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 19:00:00 UTC)" (scheduled at 2026-09-08 18:00:00+00:00) 2026-09-08 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-08 18:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 18:00:01,594 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 18:00:01,595 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 18:00:01,599 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 18:00:01,600 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 18:00:01,674 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 18:00:01,745 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 18:00:01,746 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 19:00:00 UTC)" executed successfully 2026-09-08 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 20:00:00 UTC)" (scheduled at 2026-09-08 19:00:00+00:00) 2026-09-08 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-08 19:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 19:00:01,122 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 19:00:01,124 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 19:00:01,128 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 19:00:01,128 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 19:00:01,190 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 19:00:01,259 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 19:00:01,259 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 20:00:00 UTC)" executed successfully 2026-09-08 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 21:00:00 UTC)" (scheduled at 2026-09-08 20:00:00+00:00) 2026-09-08 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-08 20:00:00,096 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 20:00:01,599 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 20:00:01,601 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 20:00:01,605 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 20:00:01,605 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 20:00:01,662 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 20:00:01,737 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 20:00:01,738 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 21:00:00 UTC)" executed successfully 2026-09-08 21:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 22:00:00 UTC)" (scheduled at 2026-09-08 21:00:00+00:00) 2026-09-08 21:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-08 21:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 21:00:01,879 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 21:00:01,879 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 21:00:01,882 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 21:00:01,883 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 21:00:01,955 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 21:00:02,027 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 21:00:02,028 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 22:00:00 UTC)" executed successfully 2026-09-08 22:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 23:00:00 UTC)" (scheduled at 2026-09-08 22:00:00+00:00) 2026-09-08 22:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-08 22:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 22:00:00,977 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 22:00:00,979 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 22:00:00,982 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 22:00:00,983 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 22:00:01,062 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 22:00:01,134 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 22:00:01,134 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-08 23:00:00 UTC)" executed successfully 2026-09-08 23:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 00:00:00 UTC)" (scheduled at 2026-09-08 23:00:00+00:00) 2026-09-08 23:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-08 23:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-08 23:00:01,088 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-08 23:00:01,089 INFO [fb-sync.worker] Scraped 50 posts 2026-09-08 23:00:01,092 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-08 23:00:01,092 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-08 23:00:01,134 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-08 23:00:01,183 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-08 23:00:01,184 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 00:00:00 UTC)" executed successfully 2026-09-09 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 01:00:00 UTC)" (scheduled at 2026-09-09 00:00:00+00:00) 2026-09-09 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-09 00:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 00:00:01,179 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 00:00:01,181 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 00:00:01,184 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 00:00:01,185 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 00:00:01,232 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 00:00:01,290 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 00:00:01,290 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 01:00:00 UTC)" executed successfully 2026-09-09 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 02:00:00 UTC)" (scheduled at 2026-09-09 01:00:00+00:00) 2026-09-09 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-09 01:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 01:00:01,099 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 01:00:01,100 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 01:00:01,105 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 01:00:01,105 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 01:00:01,162 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 01:00:01,241 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 01:00:01,241 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 02:00:00 UTC)" executed successfully 2026-09-09 02:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 03:00:00 UTC)" (scheduled at 2026-09-09 02:00:00+00:00) 2026-09-09 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-09 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 02:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 02:00:01,197 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 02:00:01,200 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 02:00:01,201 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 02:00:01,268 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 02:00:01,354 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 02:00:01,354 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 03:00:00 UTC)" executed successfully 2026-09-09 03:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 04:00:00 UTC)" (scheduled at 2026-09-09 03:00:00+00:00) 2026-09-09 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-09 03:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 03:00:01,266 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 03:00:01,267 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 03:00:01,270 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 03:00:01,271 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 03:00:01,329 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 03:00:01,372 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 03:00:01,372 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 04:00:00 UTC)" executed successfully 2026-09-09 04:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 05:00:00 UTC)" (scheduled at 2026-09-09 04:00:00+00:00) 2026-09-09 04:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-09 04:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 04:00:01,049 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 04:00:01,051 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 04:00:01,054 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 04:00:01,054 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 04:00:01,109 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 04:00:01,180 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 04:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 05:00:00 UTC)" executed successfully 2026-09-09 05:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 06:00:00 UTC)" (scheduled at 2026-09-09 05:00:00+00:00) 2026-09-09 05:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-09 05:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 05:00:01,192 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 05:00:01,194 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 05:00:01,197 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 05:00:01,198 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 05:00:01,271 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 05:00:01,330 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 05:00:01,331 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 06:00:00 UTC)" executed successfully 2026-09-09 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 07:00:00 UTC)" (scheduled at 2026-09-09 06:00:00+00:00) 2026-09-09 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-09 06:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 06:00:01,074 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 06:00:01,076 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 06:00:01,079 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 06:00:01,080 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 06:00:01,126 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 06:00:01,181 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 06:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 07:00:00 UTC)" executed successfully 2026-09-09 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 08:00:00 UTC)" (scheduled at 2026-09-09 07:00:00+00:00) 2026-09-09 07:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-09 07:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 07:00:02,423 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 07:00:02,424 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 07:00:02,428 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 07:00:02,428 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 07:00:02,492 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 07:00:02,567 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 07:00:02,568 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 08:00:00 UTC)" executed successfully 2026-09-09 08:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 09:00:00 UTC)" (scheduled at 2026-09-09 08:00:00+00:00) 2026-09-09 08:00:00,004 INFO [fb-sync] Starting FB sync... 2026-09-09 08:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 08:00:01,158 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 08:00:01,159 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 08:00:01,162 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 08:00:01,162 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 08:00:01,208 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 08:00:01,263 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 08:00:01,263 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 09:00:00 UTC)" executed successfully 2026-09-09 09:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 10:00:00 UTC)" (scheduled at 2026-09-09 09:00:00+00:00) 2026-09-09 09:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-09 09:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 09:00:01,127 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 09:00:01,128 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 09:00:01,131 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 09:00:01,132 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 09:00:01,196 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 09:00:01,270 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 09:00:01,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 10:00:00 UTC)" executed successfully 2026-09-09 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 11:00:00 UTC)" (scheduled at 2026-09-09 10:00:00+00:00) 2026-09-09 10:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-09 10:00:00,101 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 10:00:01,063 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 10:00:01,065 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 10:00:01,067 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 10:00:01,068 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 10:00:01,154 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 10:00:01,207 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 10:00:01,207 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 11:00:00 UTC)" executed successfully 2026-09-09 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 12:00:00 UTC)" (scheduled at 2026-09-09 11:00:00+00:00) 2026-09-09 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-09 11:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 11:00:01,233 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 11:00:01,234 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 11:00:01,238 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 11:00:01,238 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 11:00:01,297 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 11:00:01,373 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 11:00:01,373 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 12:00:00 UTC)" executed successfully 2026-09-09 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 13:00:00 UTC)" (scheduled at 2026-09-09 12:00:00+00:00) 2026-09-09 12:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-09 12:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 12:00:02,686 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 12:00:02,688 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 12:00:02,691 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 12:00:02,692 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 12:00:02,756 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 12:00:02,827 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 12:00:02,828 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 13:00:00 UTC)" executed successfully 2026-09-09 13:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 14:00:00 UTC)" (scheduled at 2026-09-09 13:00:00+00:00) 2026-09-09 13:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-09 13:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 13:00:01,291 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 13:00:01,293 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 13:00:01,297 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 13:00:01,297 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 13:00:01,368 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 13:00:01,456 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 13:00:01,458 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 14:00:00 UTC)" executed successfully 2026-09-09 14:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 15:00:00 UTC)" (scheduled at 2026-09-09 14:00:00+00:00) 2026-09-09 14:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-09 14:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 14:00:02,744 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 14:00:02,746 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 14:00:02,749 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 14:00:02,749 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 14:00:02,809 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 14:00:02,879 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 14:00:02,879 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 15:00:00 UTC)" executed successfully 2026-09-09 15:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 16:00:00 UTC)" (scheduled at 2026-09-09 15:00:00+00:00) 2026-09-09 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-09 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 15:00:02,235 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 15:00:02,236 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 15:00:02,239 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 15:00:02,239 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 15:00:02,304 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 15:00:02,377 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 15:00:02,377 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 16:00:00 UTC)" executed successfully 2026-09-09 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 17:00:00 UTC)" (scheduled at 2026-09-09 16:00:00+00:00) 2026-09-09 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-09 16:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 16:00:02,179 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 16:00:02,181 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 16:00:02,184 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 16:00:02,185 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 16:00:02,269 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 16:00:02,358 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 16:00:02,359 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 17:00:00 UTC)" executed successfully 2026-09-09 17:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 18:00:00 UTC)" (scheduled at 2026-09-09 17:00:00+00:00) 2026-09-09 17:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-09 17:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 17:00:02,133 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 17:00:02,135 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 17:00:02,140 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 17:00:02,140 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 17:00:02,230 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 17:00:02,313 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 17:00:02,313 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 18:00:00 UTC)" executed successfully 2026-09-09 18:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 19:00:00 UTC)" (scheduled at 2026-09-09 18:00:00+00:00) 2026-09-09 18:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-09 18:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 18:00:01,655 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 18:00:01,657 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 18:00:01,661 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 18:00:01,661 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 18:00:01,710 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 18:00:01,752 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 18:00:01,752 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 19:00:00 UTC)" executed successfully 2026-09-09 19:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 20:00:00 UTC)" (scheduled at 2026-09-09 19:00:00+00:00) 2026-09-09 19:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-09 19:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 19:00:01,400 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 19:00:01,401 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 19:00:01,404 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 19:00:01,404 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 19:00:01,456 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 19:00:01,524 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 19:00:01,525 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 20:00:00 UTC)" executed successfully 2026-09-09 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 21:00:00 UTC)" (scheduled at 2026-09-09 20:00:00+00:00) 2026-09-09 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-09 20:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 20:00:01,502 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 20:00:01,504 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 20:00:01,508 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 20:00:01,508 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 20:00:01,561 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 20:00:01,638 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 20:00:01,639 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 21:00:00 UTC)" executed successfully 2026-09-09 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 22:00:00 UTC)" (scheduled at 2026-09-09 21:00:00+00:00) 2026-09-09 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-09 21:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 21:00:01,500 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 21:00:01,503 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 21:00:01,506 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 21:00:01,507 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 21:00:01,576 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 21:00:01,651 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 21:00:01,651 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 22:00:00 UTC)" executed successfully 2026-09-09 22:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 23:00:00 UTC)" (scheduled at 2026-09-09 22:00:00+00:00) 2026-09-09 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-09 22:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 22:00:01,253 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 22:00:01,254 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 22:00:01,259 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 22:00:01,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 22:00:01,326 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 22:00:01,382 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 22:00:01,382 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-09 23:00:00 UTC)" executed successfully 2026-09-09 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 00:00:00 UTC)" (scheduled at 2026-09-09 23:00:00+00:00) 2026-09-09 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-09 23:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-09 23:00:01,199 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-09 23:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-09-09 23:00:01,203 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-09 23:00:01,204 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-09 23:00:01,272 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-09 23:00:01,391 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-09 23:00:01,391 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 00:00:00 UTC)" executed successfully 2026-09-10 00:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 01:00:00 UTC)" (scheduled at 2026-09-10 00:00:00+00:00) 2026-09-10 00:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-10 00:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 00:00:01,233 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 00:00:01,234 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 00:00:01,238 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 00:00:01,238 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 00:00:01,305 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 00:00:01,389 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 00:00:01,390 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 01:00:00 UTC)" executed successfully 2026-09-10 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 02:00:00 UTC)" (scheduled at 2026-09-10 01:00:00+00:00) 2026-09-10 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-10 01:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 01:00:01,202 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 01:00:01,204 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 01:00:01,208 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 01:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 01:00:01,292 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 01:00:01,401 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 01:00:01,402 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 02:00:00 UTC)" executed successfully 2026-09-10 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 03:00:00 UTC)" (scheduled at 2026-09-10 02:00:00+00:00) 2026-09-10 02:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-10 02:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 02:00:03,638 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 02:00:03,640 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 02:00:03,644 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 02:00:03,645 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 02:00:03,697 INFO [fb-sync] Sync done: 0 new posts in 4s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 02:00:03,763 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 02:00:03,764 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 03:00:00 UTC)" executed successfully 2026-09-10 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 04:00:00 UTC)" (scheduled at 2026-09-10 03:00:00+00:00) 2026-09-10 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-10 03:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 03:00:01,230 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 03:00:01,231 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 03:00:01,234 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 03:00:01,234 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 03:00:01,290 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 03:00:01,340 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 03:00:01,340 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 04:00:00 UTC)" executed successfully 2026-09-10 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 05:00:00 UTC)" (scheduled at 2026-09-10 04:00:00+00:00) 2026-09-10 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-10 04:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 04:00:01,352 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 04:00:01,354 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 04:00:01,358 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 04:00:01,358 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 04:00:01,413 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 04:00:01,470 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 04:00:01,471 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 05:00:00 UTC)" executed successfully 2026-09-10 05:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 06:00:00 UTC)" (scheduled at 2026-09-10 05:00:00+00:00) 2026-09-10 05:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-10 05:00:00,100 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 05:00:01,402 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 05:00:01,403 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 05:00:01,407 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 05:00:01,407 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 05:00:01,467 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 05:00:01,551 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 05:00:01,551 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 06:00:00 UTC)" executed successfully 2026-09-10 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 07:00:00 UTC)" (scheduled at 2026-09-10 06:00:00+00:00) 2026-09-10 06:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-10 06:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 06:00:01,629 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 06:00:01,632 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 06:00:01,636 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 06:00:01,636 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 06:00:01,693 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 06:00:01,750 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 06:00:01,750 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 07:00:00 UTC)" executed successfully 2026-09-10 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 08:00:00 UTC)" (scheduled at 2026-09-10 07:00:00+00:00) 2026-09-10 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-10 07:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 07:00:01,313 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 07:00:01,315 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 07:00:01,318 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 07:00:01,319 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 07:00:01,390 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 07:00:01,467 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 07:00:01,468 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 08:00:00 UTC)" executed successfully 2026-09-10 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 09:00:00 UTC)" (scheduled at 2026-09-10 08:00:00+00:00) 2026-09-10 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-10 08:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 08:00:01,349 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 08:00:01,350 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 08:00:01,352 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 08:00:01,353 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 08:00:01,400 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 08:00:01,467 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 08:00:01,468 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 09:00:00 UTC)" executed successfully 2026-09-10 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 10:00:00 UTC)" (scheduled at 2026-09-10 09:00:00+00:00) 2026-09-10 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-10 09:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 09:00:01,475 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 09:00:01,477 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 09:00:01,481 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 09:00:01,481 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 09:00:01,545 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 09:00:01,633 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 09:00:01,634 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 10:00:00 UTC)" executed successfully 2026-09-10 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 11:00:00 UTC)" (scheduled at 2026-09-10 10:00:00+00:00) 2026-09-10 10:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-10 10:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 10:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 10:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 10:00:01,378 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 10:00:01,379 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 10:00:01,438 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 10:00:01,519 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 10:00:01,520 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 11:00:00 UTC)" executed successfully 2026-09-10 11:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 12:00:00 UTC)" (scheduled at 2026-09-10 11:00:00+00:00) 2026-09-10 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-10 11:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 11:00:01,328 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 11:00:01,329 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 11:00:01,331 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 11:00:01,331 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 11:00:01,402 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 11:00:01,482 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 11:00:01,482 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 12:00:00 UTC)" executed successfully 2026-09-10 12:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 13:00:00 UTC)" (scheduled at 2026-09-10 12:00:00+00:00) 2026-09-10 12:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-10 12:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 12:00:01,682 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 12:00:01,684 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 12:00:01,688 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 12:00:01,688 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 12:00:01,751 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 12:00:01,831 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 12:00:01,831 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 13:00:00 UTC)" executed successfully 2026-09-10 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 14:00:00 UTC)" (scheduled at 2026-09-10 13:00:00+00:00) 2026-09-10 13:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-10 13:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 13:00:01,219 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 13:00:01,221 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 13:00:01,225 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 13:00:01,225 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 13:00:01,285 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 13:00:01,353 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 13:00:01,353 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 14:00:00 UTC)" executed successfully 2026-09-10 14:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 15:00:00 UTC)" (scheduled at 2026-09-10 14:00:00+00:00) 2026-09-10 14:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-10 14:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 14:00:01,926 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 14:00:01,928 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 14:00:01,931 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 14:00:01,932 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 14:00:02,025 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 14:00:02,103 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 14:00:02,103 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 15:00:00 UTC)" executed successfully 2026-09-10 15:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 16:00:00 UTC)" (scheduled at 2026-09-10 15:00:00+00:00) 2026-09-10 15:00:00,004 INFO [fb-sync] Starting FB sync... 2026-09-10 15:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 15:00:01,618 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 15:00:01,620 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 15:00:01,623 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 15:00:01,623 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 15:00:01,679 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 15:00:01,749 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 15:00:01,750 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 16:00:00 UTC)" executed successfully 2026-09-10 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 17:00:00 UTC)" (scheduled at 2026-09-10 16:00:00+00:00) 2026-09-10 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-10 16:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 16:00:01,441 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 16:00:01,443 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 16:00:01,445 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 16:00:01,445 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 16:00:01,500 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 16:00:01,568 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 16:00:01,569 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 17:00:00 UTC)" executed successfully 2026-09-10 17:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 18:00:00 UTC)" (scheduled at 2026-09-10 17:00:00+00:00) 2026-09-10 17:00:00,016 INFO [fb-sync] Starting FB sync... 2026-09-10 17:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 17:00:01,435 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 17:00:01,436 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 17:00:01,440 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 17:00:01,440 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 17:00:01,484 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 17:00:01,548 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 17:00:01,548 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 18:00:00 UTC)" executed successfully 2026-09-10 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 19:00:00 UTC)" (scheduled at 2026-09-10 18:00:00+00:00) 2026-09-10 18:00:00,025 INFO [fb-sync] Starting FB sync... 2026-09-10 18:00:00,098 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 18:00:01,724 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 18:00:01,726 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 18:00:01,729 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 18:00:01,730 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 18:00:01,778 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 18:00:01,859 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 18:00:01,859 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 19:00:00 UTC)" executed successfully 2026-09-10 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 20:00:00 UTC)" (scheduled at 2026-09-10 19:00:00+00:00) 2026-09-10 19:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-10 19:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 19:00:01,426 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 19:00:01,428 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 19:00:01,431 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 19:00:01,431 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 19:00:01,487 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 19:00:01,562 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 19:00:01,563 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 20:00:00 UTC)" executed successfully 2026-09-10 20:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 21:00:00 UTC)" (scheduled at 2026-09-10 20:00:00+00:00) 2026-09-10 20:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-10 20:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 20:00:01,265 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 20:00:01,266 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 20:00:01,269 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 20:00:01,269 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 20:00:01,335 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 20:00:01,410 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 20:00:01,410 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 21:00:00 UTC)" executed successfully 2026-09-10 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 22:00:00 UTC)" (scheduled at 2026-09-10 21:00:00+00:00) 2026-09-10 21:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-10 21:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 21:00:01,271 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 21:00:01,273 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 21:00:01,277 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 21:00:01,277 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 21:00:01,334 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 21:00:01,399 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 21:00:01,399 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 22:00:00 UTC)" executed successfully 2026-09-10 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 23:00:00 UTC)" (scheduled at 2026-09-10 22:00:00+00:00) 2026-09-10 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-10 22:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 22:00:01,272 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 22:00:01,273 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 22:00:01,277 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 22:00:01,277 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 22:00:01,341 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 22:00:01,414 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 22:00:01,414 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-10 23:00:00 UTC)" executed successfully 2026-09-10 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 00:00:00 UTC)" (scheduled at 2026-09-10 23:00:00+00:00) 2026-09-10 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-10 23:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-10 23:00:01,416 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-10 23:00:01,418 INFO [fb-sync.worker] Scraped 50 posts 2026-09-10 23:00:01,421 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-10 23:00:01,421 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-10 23:00:01,493 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-10 23:00:01,568 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-10 23:00:01,569 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 00:00:00 UTC)" executed successfully 2026-09-11 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 01:00:00 UTC)" (scheduled at 2026-09-11 00:00:00+00:00) 2026-09-11 00:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-11 00:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 00:00:01,282 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 00:00:01,284 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 00:00:01,286 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 00:00:01,287 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 00:00:01,347 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 00:00:01,408 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 00:00:01,409 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 01:00:00 UTC)" executed successfully 2026-09-11 01:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 02:00:00 UTC)" (scheduled at 2026-09-11 01:00:00+00:00) 2026-09-11 01:00:00,017 INFO [fb-sync] Starting FB sync... 2026-09-11 01:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 01:00:01,183 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 01:00:01,184 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 01:00:01,187 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 01:00:01,187 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 01:00:01,240 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 01:00:01,296 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 01:00:01,296 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 02:00:00 UTC)" executed successfully 2026-09-11 02:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 03:00:00 UTC)" (scheduled at 2026-09-11 02:00:00+00:00) 2026-09-11 02:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-11 02:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 02:00:01,094 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 02:00:01,095 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 02:00:01,098 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 02:00:01,098 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 02:00:01,153 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 02:00:01,202 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 02:00:01,202 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 03:00:00 UTC)" executed successfully 2026-09-11 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 04:00:00 UTC)" (scheduled at 2026-09-11 03:00:00+00:00) 2026-09-11 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-11 03:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 03:00:01,167 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 03:00:01,168 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 03:00:01,171 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 03:00:01,172 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 03:00:01,233 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 03:00:01,302 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 03:00:01,302 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 04:00:00 UTC)" executed successfully 2026-09-11 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 05:00:00 UTC)" (scheduled at 2026-09-11 04:00:00+00:00) 2026-09-11 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-11 04:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 04:00:01,136 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 04:00:01,139 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 04:00:01,142 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 04:00:01,143 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 04:00:01,232 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 04:00:01,316 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 04:00:01,316 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 05:00:00 UTC)" executed successfully 2026-09-11 05:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 06:00:00 UTC)" (scheduled at 2026-09-11 05:00:00+00:00) 2026-09-11 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-11 05:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 05:00:01,763 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 05:00:01,766 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 05:00:01,770 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 05:00:01,770 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 05:00:01,849 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 05:00:01,927 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 05:00:01,927 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 06:00:00 UTC)" executed successfully 2026-09-11 06:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 07:00:00 UTC)" (scheduled at 2026-09-11 06:00:00+00:00) 2026-09-11 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-11 06:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 06:00:01,221 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 06:00:01,222 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 06:00:01,225 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 06:00:01,225 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 06:00:01,267 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 06:00:01,317 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 06:00:01,317 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 07:00:00 UTC)" executed successfully 2026-09-11 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 08:00:00 UTC)" (scheduled at 2026-09-11 07:00:00+00:00) 2026-09-11 07:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-11 07:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 07:00:01,107 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 07:00:01,109 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 07:00:01,112 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 07:00:01,112 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 07:00:01,173 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 07:00:01,238 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 07:00:01,238 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 08:00:00 UTC)" executed successfully 2026-09-11 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 09:00:00 UTC)" (scheduled at 2026-09-11 08:00:00+00:00) 2026-09-11 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-11 08:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 08:00:01,754 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 08:00:01,757 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 08:00:01,760 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 08:00:01,760 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 08:00:01,840 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 08:00:01,923 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 08:00:01,924 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 09:00:00 UTC)" executed successfully 2026-09-11 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 10:00:00 UTC)" (scheduled at 2026-09-11 09:00:00+00:00) 2026-09-11 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-11 09:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 09:00:01,340 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 09:00:01,341 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 09:00:01,344 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 09:00:01,344 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 09:00:01,400 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 09:00:01,454 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 09:00:01,454 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 10:00:00 UTC)" executed successfully 2026-09-11 10:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 11:00:00 UTC)" (scheduled at 2026-09-11 10:00:00+00:00) 2026-09-11 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-11 10:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 10:00:01,354 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 10:00:01,356 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 10:00:01,358 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 10:00:01,358 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 10:00:01,426 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 10:00:01,494 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 10:00:01,494 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 11:00:00 UTC)" executed successfully 2026-09-11 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 12:00:00 UTC)" (scheduled at 2026-09-11 11:00:00+00:00) 2026-09-11 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-11 11:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 11:00:01,549 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 11:00:01,551 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 11:00:01,554 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 11:00:01,555 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 11:00:01,620 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 11:00:01,692 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 11:00:01,693 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 12:00:00 UTC)" executed successfully 2026-09-11 12:00:00,013 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 13:00:00 UTC)" (scheduled at 2026-09-11 12:00:00+00:00) 2026-09-11 12:00:00,022 INFO [fb-sync] Starting FB sync... 2026-09-11 12:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 12:00:01,502 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 12:00:01,503 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 12:00:01,506 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 12:00:01,506 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 12:00:01,563 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 12:00:01,638 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 12:00:01,639 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 13:00:00 UTC)" executed successfully 2026-09-11 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 14:00:00 UTC)" (scheduled at 2026-09-11 13:00:00+00:00) 2026-09-11 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-11 13:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 13:00:01,955 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 13:00:01,957 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 13:00:01,961 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 13:00:01,961 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 13:00:02,025 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 13:00:02,102 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 13:00:02,102 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 14:00:00 UTC)" executed successfully 2026-09-11 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 15:00:00 UTC)" (scheduled at 2026-09-11 14:00:00+00:00) 2026-09-11 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-11 14:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 14:00:01,828 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 14:00:01,831 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 14:00:01,836 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 14:00:01,837 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 14:00:01,906 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 14:00:01,986 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 14:00:01,986 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 15:00:00 UTC)" executed successfully 2026-09-11 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 16:00:00 UTC)" (scheduled at 2026-09-11 15:00:00+00:00) 2026-09-11 15:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-11 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 15:00:01,787 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 15:00:01,789 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 15:00:01,792 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 15:00:01,793 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 15:00:01,852 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 15:00:01,927 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 15:00:01,927 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 16:00:00 UTC)" executed successfully 2026-09-11 16:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 17:00:00 UTC)" (scheduled at 2026-09-11 16:00:00+00:00) 2026-09-11 16:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-11 16:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 16:00:01,542 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 16:00:01,545 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 16:00:01,548 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 16:00:01,549 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 16:00:01,616 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 16:00:01,668 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 16:00:01,668 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 17:00:00 UTC)" executed successfully 2026-09-11 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 18:00:00 UTC)" (scheduled at 2026-09-11 17:00:00+00:00) 2026-09-11 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-11 17:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 17:00:02,775 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 17:00:02,777 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 17:00:02,780 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 17:00:02,780 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 17:00:02,827 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 17:00:02,886 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 17:00:02,886 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 18:00:00 UTC)" executed successfully 2026-09-11 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 19:00:00 UTC)" (scheduled at 2026-09-11 18:00:00+00:00) 2026-09-11 18:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-11 18:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 18:00:01,605 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 18:00:01,607 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 18:00:01,611 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 18:00:01,611 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 18:00:01,661 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 18:00:01,725 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 18:00:01,725 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 19:00:00 UTC)" executed successfully 2026-09-11 19:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 20:00:00 UTC)" (scheduled at 2026-09-11 19:00:00+00:00) 2026-09-11 19:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-11 19:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 19:00:02,051 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 19:00:02,053 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 19:00:02,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 19:00:02,056 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 19:00:02,118 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 19:00:02,188 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 19:00:02,188 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 20:00:00 UTC)" executed successfully 2026-09-11 20:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 21:00:00 UTC)" (scheduled at 2026-09-11 20:00:00+00:00) 2026-09-11 20:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-11 20:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 20:00:01,280 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 20:00:01,282 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 20:00:01,286 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 20:00:01,286 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 20:00:01,350 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 20:00:01,424 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 20:00:01,424 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 21:00:00 UTC)" executed successfully 2026-09-11 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 22:00:00 UTC)" (scheduled at 2026-09-11 21:00:00+00:00) 2026-09-11 21:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-11 21:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 21:00:01,171 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 21:00:01,173 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 21:00:01,176 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 21:00:01,176 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 21:00:01,233 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 21:00:01,293 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 21:00:01,294 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 22:00:00 UTC)" executed successfully 2026-09-11 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 23:00:00 UTC)" (scheduled at 2026-09-11 22:00:00+00:00) 2026-09-11 22:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-11 22:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 22:00:03,483 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 22:00:03,485 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 22:00:03,489 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 22:00:03,489 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 22:00:03,551 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 22:00:03,616 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 22:00:03,616 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-11 23:00:00 UTC)" executed successfully 2026-09-11 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 00:00:00 UTC)" (scheduled at 2026-09-11 23:00:00+00:00) 2026-09-11 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-11 23:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-11 23:00:01,183 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-11 23:00:01,185 INFO [fb-sync.worker] Scraped 50 posts 2026-09-11 23:00:01,189 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-11 23:00:01,189 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-11 23:00:01,257 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-11 23:00:01,296 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-11 23:00:01,297 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 00:00:00 UTC)" executed successfully 2026-09-12 00:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 01:00:00 UTC)" (scheduled at 2026-09-12 00:00:00+00:00) 2026-09-12 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-12 00:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 00:00:01,164 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 00:00:01,167 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 00:00:01,171 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 00:00:01,171 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 00:00:01,257 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 00:00:01,357 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 00:00:01,358 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 01:00:00 UTC)" executed successfully 2026-09-12 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 02:00:00 UTC)" (scheduled at 2026-09-12 01:00:00+00:00) 2026-09-12 01:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-12 01:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 01:00:01,114 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 01:00:01,115 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 01:00:01,120 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 01:00:01,120 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 01:00:01,171 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 01:00:01,221 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 01:00:01,221 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 02:00:00 UTC)" executed successfully 2026-09-12 02:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 03:00:00 UTC)" (scheduled at 2026-09-12 02:00:00+00:00) 2026-09-12 02:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-12 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 02:00:01,209 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 02:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 02:00:01,214 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 02:00:01,214 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 02:00:01,264 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 02:00:01,332 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 02:00:01,332 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 03:00:00 UTC)" executed successfully 2026-09-12 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 04:00:00 UTC)" (scheduled at 2026-09-12 03:00:00+00:00) 2026-09-12 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 03:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 03:00:01,082 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 03:00:01,087 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 03:00:01,090 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 03:00:01,091 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 03:00:01,155 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 03:00:01,222 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 03:00:01,222 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 04:00:00 UTC)" executed successfully 2026-09-12 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 05:00:00 UTC)" (scheduled at 2026-09-12 04:00:00+00:00) 2026-09-12 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-12 04:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 04:00:01,256 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 04:00:01,258 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 04:00:01,262 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 04:00:01,262 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 04:00:01,331 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 04:00:01,374 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 04:00:01,375 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 05:00:00 UTC)" executed successfully 2026-09-12 05:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 06:00:00 UTC)" (scheduled at 2026-09-12 05:00:00+00:00) 2026-09-12 05:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-12 05:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 05:00:01,378 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 05:00:01,380 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 05:00:01,384 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 05:00:01,384 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 05:00:01,432 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 05:00:01,502 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 05:00:01,503 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 06:00:00 UTC)" executed successfully 2026-09-12 06:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 07:00:00 UTC)" (scheduled at 2026-09-12 06:00:00+00:00) 2026-09-12 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-12 06:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 06:00:01,157 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 06:00:01,159 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 06:00:01,163 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 06:00:01,163 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 06:00:01,229 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 06:00:01,296 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 06:00:01,296 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 07:00:00 UTC)" executed successfully 2026-09-12 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 08:00:00 UTC)" (scheduled at 2026-09-12 07:00:00+00:00) 2026-09-12 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-12 07:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 07:00:01,509 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 07:00:01,511 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 07:00:01,515 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 07:00:01,515 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 07:00:01,571 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 07:00:01,680 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 07:00:01,681 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 08:00:00 UTC)" executed successfully 2026-09-12 08:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 09:00:00 UTC)" (scheduled at 2026-09-12 08:00:00+00:00) 2026-09-12 08:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-12 08:00:00,063 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 08:00:01,644 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 08:00:01,646 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 08:00:01,649 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 08:00:01,649 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 08:00:01,714 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 08:00:01,798 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 08:00:01,799 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 09:00:00 UTC)" executed successfully 2026-09-12 09:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 10:00:00 UTC)" (scheduled at 2026-09-12 09:00:00+00:00) 2026-09-12 09:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-12 09:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 09:00:01,128 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 09:00:01,130 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 09:00:01,133 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 09:00:01,134 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 09:00:01,184 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 09:00:01,232 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 09:00:01,232 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 10:00:00 UTC)" executed successfully 2026-09-12 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 11:00:00 UTC)" (scheduled at 2026-09-12 10:00:00+00:00) 2026-09-12 10:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 10:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 10:00:01,864 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 10:00:01,866 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 10:00:01,870 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 10:00:01,870 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 10:00:01,937 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 10:00:02,014 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 10:00:02,015 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 11:00:00 UTC)" executed successfully 2026-09-12 11:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 12:00:00 UTC)" (scheduled at 2026-09-12 11:00:00+00:00) 2026-09-12 11:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-12 11:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 11:00:01,358 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 11:00:01,360 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 11:00:01,364 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 11:00:01,364 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 11:00:01,422 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 11:00:01,510 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 11:00:01,511 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 12:00:00 UTC)" executed successfully 2026-09-12 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 13:00:00 UTC)" (scheduled at 2026-09-12 12:00:00+00:00) 2026-09-12 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 12:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 12:00:02,090 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 12:00:02,092 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 12:00:02,096 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 12:00:02,096 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 12:00:02,159 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 12:00:02,406 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 12:00:02,406 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 13:00:00 UTC)" executed successfully 2026-09-12 13:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 14:00:00 UTC)" (scheduled at 2026-09-12 13:00:00+00:00) 2026-09-12 13:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-12 13:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 13:00:01,402 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 13:00:01,404 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 13:00:01,407 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 13:00:01,407 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 13:00:01,463 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 13:00:01,533 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 13:00:01,533 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 14:00:00 UTC)" executed successfully 2026-09-12 14:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 15:00:00 UTC)" (scheduled at 2026-09-12 14:00:00+00:00) 2026-09-12 14:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-12 14:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 14:00:01,962 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 14:00:01,964 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 14:00:01,968 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 14:00:01,968 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 14:00:02,033 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 14:00:02,106 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 14:00:02,107 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 15:00:00 UTC)" executed successfully 2026-09-12 15:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 16:00:00 UTC)" (scheduled at 2026-09-12 15:00:00+00:00) 2026-09-12 15:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-12 15:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 15:00:01,255 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 15:00:01,256 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 15:00:01,259 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 15:00:01,259 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 15:00:01,324 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 15:00:01,381 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 15:00:01,381 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 16:00:00 UTC)" executed successfully 2026-09-12 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 17:00:00 UTC)" (scheduled at 2026-09-12 16:00:00+00:00) 2026-09-12 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 16:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 16:00:01,559 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 16:00:01,560 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 16:00:01,563 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 16:00:01,564 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 16:00:01,621 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 16:00:01,688 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 16:00:01,688 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 17:00:00 UTC)" executed successfully 2026-09-12 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 18:00:00 UTC)" (scheduled at 2026-09-12 17:00:00+00:00) 2026-09-12 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-12 17:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 17:00:01,376 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 17:00:01,377 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 17:00:01,379 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 17:00:01,379 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 17:00:01,414 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 17:00:01,478 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 17:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 18:00:00 UTC)" executed successfully 2026-09-12 18:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 19:00:00 UTC)" (scheduled at 2026-09-12 18:00:00+00:00) 2026-09-12 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-12 18:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 18:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 18:00:01,195 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 18:00:01,197 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 18:00:01,198 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 18:00:01,252 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 18:00:01,310 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 18:00:01,311 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 19:00:00 UTC)" executed successfully 2026-09-12 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 20:00:00 UTC)" (scheduled at 2026-09-12 19:00:00+00:00) 2026-09-12 19:00:00,016 INFO [fb-sync] Starting FB sync... 2026-09-12 19:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 19:00:01,411 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 19:00:01,413 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 19:00:01,415 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 19:00:01,415 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 19:00:01,477 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 19:00:01,558 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 19:00:01,559 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 20:00:00 UTC)" executed successfully 2026-09-12 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 21:00:00 UTC)" (scheduled at 2026-09-12 20:00:00+00:00) 2026-09-12 20:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 20:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 20:00:01,189 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 20:00:01,191 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 20:00:01,194 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 20:00:01,195 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 20:00:01,251 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 20:00:01,317 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 20:00:01,318 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 21:00:00 UTC)" executed successfully 2026-09-12 21:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 22:00:00 UTC)" (scheduled at 2026-09-12 21:00:00+00:00) 2026-09-12 21:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-12 21:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 21:00:01,327 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 21:00:01,329 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 21:00:01,331 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 21:00:01,331 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 21:00:01,383 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 21:00:01,463 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 21:00:01,464 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 22:00:00 UTC)" executed successfully 2026-09-12 22:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 23:00:00 UTC)" (scheduled at 2026-09-12 22:00:00+00:00) 2026-09-12 22:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-12 22:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 22:00:01,219 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 22:00:01,221 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 22:00:01,226 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 22:00:01,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 22:00:01,286 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 22:00:01,348 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 22:00:01,348 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-12 23:00:00 UTC)" executed successfully 2026-09-12 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 00:00:00 UTC)" (scheduled at 2026-09-12 23:00:00+00:00) 2026-09-12 23:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-12 23:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-12 23:00:01,445 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-12 23:00:01,447 INFO [fb-sync.worker] Scraped 50 posts 2026-09-12 23:00:01,451 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-12 23:00:01,451 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-12 23:00:01,511 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-12 23:00:01,584 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-12 23:00:01,584 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 00:00:00 UTC)" executed successfully 2026-09-13 00:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 01:00:00 UTC)" (scheduled at 2026-09-13 00:00:00+00:00) 2026-09-13 00:00:00,016 INFO [fb-sync] Starting FB sync... 2026-09-13 00:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 00:00:01,372 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 00:00:01,374 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 00:00:01,377 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 00:00:01,378 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 00:00:01,446 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 00:00:01,537 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 00:00:01,537 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 01:00:00 UTC)" executed successfully 2026-09-13 01:00:00,012 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 02:00:00 UTC)" (scheduled at 2026-09-13 01:00:00+00:00) 2026-09-13 01:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-13 01:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 01:00:01,156 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 01:00:01,159 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 01:00:01,162 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 01:00:01,162 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 01:00:01,235 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 01:00:01,316 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 01:00:01,316 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 02:00:00 UTC)" executed successfully 2026-09-13 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 03:00:00 UTC)" (scheduled at 2026-09-13 02:00:00+00:00) 2026-09-13 02:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-13 02:00:00,059 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 02:00:02,991 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 02:00:02,993 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 02:00:02,996 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 02:00:02,997 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 02:00:03,043 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 02:00:03,086 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 02:00:03,087 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 03:00:00 UTC)" executed successfully 2026-09-13 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 04:00:00 UTC)" (scheduled at 2026-09-13 03:00:00+00:00) 2026-09-13 03:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-13 03:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 03:00:01,107 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 03:00:01,109 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 03:00:01,113 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 03:00:01,113 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 03:00:01,181 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 03:00:01,257 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 03:00:01,257 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 04:00:00 UTC)" executed successfully 2026-09-13 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 05:00:00 UTC)" (scheduled at 2026-09-13 04:00:00+00:00) 2026-09-13 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-13 04:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 04:00:01,389 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 04:00:01,391 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 04:00:01,395 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 04:00:01,395 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 04:00:01,452 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 04:00:01,521 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 04:00:01,522 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 05:00:00 UTC)" executed successfully 2026-09-13 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 06:00:00 UTC)" (scheduled at 2026-09-13 05:00:00+00:00) 2026-09-13 05:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 05:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 05:00:01,142 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 05:00:01,144 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 05:00:01,148 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 05:00:01,149 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 05:00:01,229 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 05:00:01,305 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 05:00:01,305 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 06:00:00 UTC)" executed successfully 2026-09-13 06:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 07:00:00 UTC)" (scheduled at 2026-09-13 06:00:00+00:00) 2026-09-13 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-13 06:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 06:00:01,171 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 06:00:01,173 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 06:00:01,178 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 06:00:01,178 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 06:00:01,226 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 06:00:01,303 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 06:00:01,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 07:00:00 UTC)" executed successfully 2026-09-13 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 08:00:00 UTC)" (scheduled at 2026-09-13 07:00:00+00:00) 2026-09-13 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-13 07:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 07:00:01,486 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 07:00:01,488 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 07:00:01,491 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 07:00:01,492 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 07:00:01,553 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 07:00:01,623 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 07:00:01,624 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 08:00:00 UTC)" executed successfully 2026-09-13 08:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 09:00:00 UTC)" (scheduled at 2026-09-13 08:00:00+00:00) 2026-09-13 08:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-13 08:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 08:00:01,223 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 08:00:01,224 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 08:00:01,226 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 08:00:01,226 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 08:00:01,283 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 08:00:01,349 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 08:00:01,349 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 09:00:00 UTC)" executed successfully 2026-09-13 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 10:00:00 UTC)" (scheduled at 2026-09-13 09:00:00+00:00) 2026-09-13 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 09:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 09:00:02,745 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 09:00:02,746 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 09:00:02,748 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 09:00:02,748 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 09:00:02,810 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 09:00:02,883 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 09:00:02,883 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 10:00:00 UTC)" executed successfully 2026-09-13 10:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 11:00:00 UTC)" (scheduled at 2026-09-13 10:00:00+00:00) 2026-09-13 10:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-13 10:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 10:00:01,443 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 10:00:01,444 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 10:00:01,447 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 10:00:01,447 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 10:00:01,500 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 10:00:01,555 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 10:00:01,556 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 11:00:00 UTC)" executed successfully 2026-09-13 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 12:00:00 UTC)" (scheduled at 2026-09-13 11:00:00+00:00) 2026-09-13 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-13 11:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 11:00:01,658 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 11:00:01,660 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 11:00:01,662 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 11:00:01,663 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 11:00:01,707 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 11:00:01,767 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 11:00:01,767 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 12:00:00 UTC)" executed successfully 2026-09-13 12:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 13:00:00 UTC)" (scheduled at 2026-09-13 12:00:00+00:00) 2026-09-13 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 12:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 12:00:01,291 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 12:00:01,293 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 12:00:01,296 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 12:00:01,296 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 12:00:01,341 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 12:00:01,383 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 12:00:01,384 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 13:00:00 UTC)" executed successfully 2026-09-13 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 14:00:00 UTC)" (scheduled at 2026-09-13 13:00:00+00:00) 2026-09-13 13:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-13 13:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 13:00:01,981 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 13:00:01,982 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 13:00:01,984 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 13:00:01,984 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 13:00:02,045 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 13:00:02,124 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 13:00:02,124 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 14:00:00 UTC)" executed successfully 2026-09-13 14:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 15:00:00 UTC)" (scheduled at 2026-09-13 14:00:00+00:00) 2026-09-13 14:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-13 14:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 14:00:01,432 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 14:00:01,434 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 14:00:01,438 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 14:00:01,438 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 14:00:01,500 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 14:00:01,570 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 14:00:01,570 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 15:00:00 UTC)" executed successfully 2026-09-13 15:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 16:00:00 UTC)" (scheduled at 2026-09-13 15:00:00+00:00) 2026-09-13 15:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-13 15:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 15:00:01,423 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 15:00:01,424 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 15:00:01,428 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 15:00:01,428 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 15:00:01,495 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 15:00:01,573 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 15:00:01,574 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 16:00:00 UTC)" executed successfully 2026-09-13 16:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 17:00:00 UTC)" (scheduled at 2026-09-13 16:00:00+00:00) 2026-09-13 16:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 16:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 16:00:01,447 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 16:00:01,448 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 16:00:01,452 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 16:00:01,453 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 16:00:01,515 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 16:00:01,587 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 16:00:01,587 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 17:00:00 UTC)" executed successfully 2026-09-13 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 18:00:00 UTC)" (scheduled at 2026-09-13 17:00:00+00:00) 2026-09-13 17:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 17:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 17:00:01,687 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 17:00:01,688 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 17:00:01,691 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 17:00:01,691 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 17:00:01,748 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 17:00:01,819 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 17:00:01,819 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 18:00:00 UTC)" executed successfully 2026-09-13 18:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 19:00:00 UTC)" (scheduled at 2026-09-13 18:00:00+00:00) 2026-09-13 18:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-13 18:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 18:00:01,392 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 18:00:01,394 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 18:00:01,398 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 18:00:01,398 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 18:00:01,476 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 18:00:01,560 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 18:00:01,560 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 19:00:00 UTC)" executed successfully 2026-09-13 19:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 20:00:00 UTC)" (scheduled at 2026-09-13 19:00:00+00:00) 2026-09-13 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-13 19:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 19:00:01,782 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 19:00:01,784 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 19:00:01,786 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 19:00:01,787 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 19:00:01,852 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 19:00:01,939 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 19:00:01,939 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 20:00:00 UTC)" executed successfully 2026-09-13 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 21:00:00 UTC)" (scheduled at 2026-09-13 20:00:00+00:00) 2026-09-13 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-13 20:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 20:00:01,384 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 20:00:01,387 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 20:00:01,391 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 20:00:01,391 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 20:00:01,461 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 20:00:01,546 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 20:00:01,547 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 21:00:00 UTC)" executed successfully 2026-09-13 21:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 22:00:00 UTC)" (scheduled at 2026-09-13 21:00:00+00:00) 2026-09-13 21:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-13 21:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 21:00:01,194 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 21:00:01,196 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 21:00:01,199 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 21:00:01,200 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 21:00:01,269 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 21:00:01,351 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 21:00:01,351 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 22:00:00 UTC)" executed successfully 2026-09-13 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 23:00:00 UTC)" (scheduled at 2026-09-13 22:00:00+00:00) 2026-09-13 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-13 22:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 22:00:01,254 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 22:00:01,257 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 22:00:01,262 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 22:00:01,262 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 22:00:01,345 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 22:00:01,444 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 22:00:01,445 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-13 23:00:00 UTC)" executed successfully 2026-09-13 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 00:00:00 UTC)" (scheduled at 2026-09-13 23:00:00+00:00) 2026-09-13 23:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-13 23:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-13 23:00:01,156 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-13 23:00:01,158 INFO [fb-sync.worker] Scraped 50 posts 2026-09-13 23:00:01,162 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-13 23:00:01,163 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-13 23:00:01,245 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-13 23:00:01,305 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-13 23:00:01,305 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 00:00:00 UTC)" executed successfully 2026-09-14 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 01:00:00 UTC)" (scheduled at 2026-09-14 00:00:00+00:00) 2026-09-14 00:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 00:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 00:00:01,318 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 00:00:01,320 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 00:00:01,322 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 00:00:01,322 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 00:00:01,386 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 00:00:01,458 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 00:00:01,459 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 01:00:00 UTC)" executed successfully 2026-09-14 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 02:00:00 UTC)" (scheduled at 2026-09-14 01:00:00+00:00) 2026-09-14 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-14 01:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 01:00:01,741 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 01:00:01,743 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 01:00:01,746 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 01:00:01,746 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 01:00:01,798 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 01:00:01,855 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 01:00:01,856 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 02:00:00 UTC)" executed successfully 2026-09-14 02:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 03:00:00 UTC)" (scheduled at 2026-09-14 02:00:00+00:00) 2026-09-14 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-14 02:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 02:00:01,437 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 02:00:01,438 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 02:00:01,440 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 02:00:01,440 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 02:00:01,478 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 02:00:01,519 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 02:00:01,519 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 03:00:00 UTC)" executed successfully 2026-09-14 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 04:00:00 UTC)" (scheduled at 2026-09-14 03:00:00+00:00) 2026-09-14 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-14 03:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 03:00:01,686 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 03:00:01,688 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 03:00:01,691 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 03:00:01,691 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 03:00:01,759 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 03:00:01,830 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 03:00:01,830 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 04:00:00 UTC)" executed successfully 2026-09-14 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 05:00:00 UTC)" (scheduled at 2026-09-14 04:00:00+00:00) 2026-09-14 04:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-14 04:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 04:00:01,267 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 04:00:01,269 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 04:00:01,271 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 04:00:01,272 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 04:00:01,326 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 04:00:01,382 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 04:00:01,382 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 05:00:00 UTC)" executed successfully 2026-09-14 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 06:00:00 UTC)" (scheduled at 2026-09-14 05:00:00+00:00) 2026-09-14 05:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-14 05:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 05:00:01,161 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 05:00:01,162 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 05:00:01,165 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 05:00:01,165 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 05:00:01,226 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 05:00:01,295 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 05:00:01,295 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 06:00:00 UTC)" executed successfully 2026-09-14 06:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 07:00:00 UTC)" (scheduled at 2026-09-14 06:00:00+00:00) 2026-09-14 06:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-14 06:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 06:00:01,299 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 06:00:01,300 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 06:00:01,302 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 06:00:01,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 06:00:01,356 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 06:00:01,424 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 06:00:01,424 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 07:00:00 UTC)" executed successfully 2026-09-14 07:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 08:00:00 UTC)" (scheduled at 2026-09-14 07:00:00+00:00) 2026-09-14 07:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 07:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 07:00:01,519 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 07:00:01,520 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 07:00:01,523 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 07:00:01,523 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 07:00:01,592 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 07:00:01,670 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 07:00:01,670 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 08:00:00 UTC)" executed successfully 2026-09-14 08:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 09:00:00 UTC)" (scheduled at 2026-09-14 08:00:00+00:00) 2026-09-14 08:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 08:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 08:00:01,237 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 08:00:01,239 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 08:00:01,241 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 08:00:01,242 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 08:00:01,296 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 08:00:01,344 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 08:00:01,344 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 09:00:00 UTC)" executed successfully 2026-09-14 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 10:00:00 UTC)" (scheduled at 2026-09-14 09:00:00+00:00) 2026-09-14 09:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-14 09:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 09:00:01,308 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 09:00:01,310 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 09:00:01,313 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 09:00:01,313 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 09:00:01,361 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 09:00:01,425 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 09:00:01,425 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 10:00:00 UTC)" executed successfully 2026-09-14 10:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 11:00:00 UTC)" (scheduled at 2026-09-14 10:00:00+00:00) 2026-09-14 10:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-14 10:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 10:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 10:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 10:00:01,210 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 10:00:01,211 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 10:00:01,269 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 10:00:01,314 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 10:00:01,314 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 11:00:00 UTC)" executed successfully 2026-09-14 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 12:00:00 UTC)" (scheduled at 2026-09-14 11:00:00+00:00) 2026-09-14 11:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-14 11:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 11:00:01,493 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 11:00:01,495 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 11:00:01,499 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 11:00:01,500 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 11:00:01,591 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 11:00:01,674 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 11:00:01,674 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 12:00:00 UTC)" executed successfully 2026-09-14 12:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 13:00:00 UTC)" (scheduled at 2026-09-14 12:00:00+00:00) 2026-09-14 12:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-14 12:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 12:00:02,134 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 12:00:02,136 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 12:00:02,139 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 12:00:02,139 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 12:00:02,200 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 12:00:02,270 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 12:00:02,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 13:00:00 UTC)" executed successfully 2026-09-14 13:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 14:00:00 UTC)" (scheduled at 2026-09-14 13:00:00+00:00) 2026-09-14 13:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-14 13:00:00,091 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 13:00:01,289 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 13:00:01,291 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 13:00:01,295 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 13:00:01,296 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 13:00:01,349 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 13:00:01,418 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 13:00:01,418 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 14:00:00 UTC)" executed successfully 2026-09-14 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 15:00:00 UTC)" (scheduled at 2026-09-14 14:00:00+00:00) 2026-09-14 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 14:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 14:00:01,407 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 14:00:01,410 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 14:00:01,414 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 14:00:01,414 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 14:00:01,487 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 14:00:01,568 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 14:00:01,568 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 15:00:00 UTC)" executed successfully 2026-09-14 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 16:00:00 UTC)" (scheduled at 2026-09-14 15:00:00+00:00) 2026-09-14 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 15:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 15:00:01,486 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 15:00:01,487 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 15:00:01,491 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 15:00:01,491 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 15:00:01,548 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 15:00:01,636 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 15:00:01,637 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 16:00:00 UTC)" executed successfully 2026-09-14 16:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 17:00:00 UTC)" (scheduled at 2026-09-14 16:00:00+00:00) 2026-09-14 16:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-14 16:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 16:00:01,242 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 16:00:01,244 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 16:00:01,247 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 16:00:01,247 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 16:00:01,310 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 16:00:01,362 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 16:00:01,362 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 17:00:00 UTC)" executed successfully 2026-09-14 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 18:00:00 UTC)" (scheduled at 2026-09-14 17:00:00+00:00) 2026-09-14 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-14 17:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 17:00:01,393 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 17:00:01,396 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 17:00:01,399 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 17:00:01,400 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 17:00:01,462 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 17:00:01,524 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 17:00:01,524 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 18:00:00 UTC)" executed successfully 2026-09-14 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 19:00:00 UTC)" (scheduled at 2026-09-14 18:00:00+00:00) 2026-09-14 18:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 18:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 18:00:01,568 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 18:00:01,569 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 18:00:01,572 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 18:00:01,572 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 18:00:01,620 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 18:00:01,686 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 18:00:01,686 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 19:00:00 UTC)" executed successfully 2026-09-14 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 20:00:00 UTC)" (scheduled at 2026-09-14 19:00:00+00:00) 2026-09-14 19:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 19:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 19:00:01,298 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 19:00:01,299 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 19:00:01,302 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 19:00:01,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 19:00:01,369 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 19:00:01,440 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 19:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 20:00:00 UTC)" executed successfully 2026-09-14 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 21:00:00 UTC)" (scheduled at 2026-09-14 20:00:00+00:00) 2026-09-14 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-14 20:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 20:00:01,419 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 20:00:01,420 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 20:00:01,425 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 20:00:01,425 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 20:00:01,483 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 20:00:01,539 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 20:00:01,540 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 21:00:00 UTC)" executed successfully 2026-09-14 21:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 22:00:00 UTC)" (scheduled at 2026-09-14 21:00:00+00:00) 2026-09-14 21:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 21:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 21:00:02,104 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 21:00:02,106 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 21:00:02,110 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 21:00:02,110 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 21:00:02,180 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 21:00:02,258 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 21:00:02,258 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 22:00:00 UTC)" executed successfully 2026-09-14 22:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 23:00:00 UTC)" (scheduled at 2026-09-14 22:00:00+00:00) 2026-09-14 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-14 22:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 22:00:02,051 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 22:00:02,053 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 22:00:02,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 22:00:02,057 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 22:00:02,124 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 22:00:02,203 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 22:00:02,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 23:00:00 UTC)" executed successfully 2026-09-14 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 00:00:00 UTC)" (scheduled at 2026-09-14 23:00:00+00:00) 2026-09-14 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-14 23:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 23:00:02,441 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 23:00:02,443 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 23:00:02,446 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 23:00:02,446 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 23:00:02,505 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 23:00:02,571 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 23:00:02,571 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 00:00:00 UTC)" executed successfully 2026-09-15 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 01:00:00 UTC)" (scheduled at 2026-09-15 00:00:00+00:00) 2026-09-15 00:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-15 00:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 00:00:01,206 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 00:00:01,208 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 00:00:01,211 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 00:00:01,212 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 00:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 00:00:01,360 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 00:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 01:00:00 UTC)" executed successfully 2026-09-15 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 02:00:00 UTC)" (scheduled at 2026-09-15 01:00:00+00:00) 2026-09-15 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 01:00:00,063 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 01:00:01,203 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 01:00:01,205 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 01:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 01:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 01:00:01,264 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 01:00:01,359 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 01:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 02:00:00 UTC)" executed successfully 2026-09-15 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 03:00:00 UTC)" (scheduled at 2026-09-15 02:00:00+00:00) 2026-09-15 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 02:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 02:00:01,154 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 02:00:01,155 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 02:00:01,159 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 02:00:01,159 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 02:00:01,224 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 02:00:01,285 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 02:00:01,285 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 03:00:00 UTC)" executed successfully 2026-09-15 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 04:00:00 UTC)" (scheduled at 2026-09-15 03:00:00+00:00) 2026-09-15 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 03:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 03:00:01,160 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 03:00:01,162 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 03:00:01,166 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 03:00:01,166 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 03:00:01,246 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 03:00:01,327 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 03:00:01,328 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 04:00:00 UTC)" executed successfully 2026-09-15 04:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 05:00:00 UTC)" (scheduled at 2026-09-15 04:00:00+00:00) 2026-09-15 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 04:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 04:00:01,361 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 04:00:01,363 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 04:00:01,368 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 04:00:01,368 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 04:00:01,424 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 04:00:01,481 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 04:00:01,481 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 05:00:00 UTC)" executed successfully 2026-09-15 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 06:00:00 UTC)" (scheduled at 2026-09-15 05:00:00+00:00) 2026-09-15 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 05:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 05:00:01,190 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 05:00:01,192 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 05:00:01,195 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 05:00:01,195 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 05:00:01,256 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 05:00:01,318 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 05:00:01,319 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 06:00:00 UTC)" executed successfully 2026-09-15 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 07:00:00 UTC)" (scheduled at 2026-09-15 06:00:00+00:00) 2026-09-15 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-15 06:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 06:00:01,225 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 06:00:01,226 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 06:00:01,230 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 06:00:01,230 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 06:00:01,279 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 06:00:01,336 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 06:00:01,336 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 07:00:00 UTC)" executed successfully 2026-09-15 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 08:00:00 UTC)" (scheduled at 2026-09-15 07:00:00+00:00) 2026-09-15 07:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 07:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 07:00:01,544 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 07:00:01,546 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 07:00:01,548 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 07:00:01,549 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 07:00:01,614 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 07:00:01,707 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 07:00:01,707 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 08:00:00 UTC)" executed successfully 2026-09-15 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 09:00:00 UTC)" (scheduled at 2026-09-15 08:00:00+00:00) 2026-09-15 08:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-15 08:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 08:00:01,344 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 08:00:01,347 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 08:00:01,350 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 08:00:01,351 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 08:00:01,414 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 08:00:01,477 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 08:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 09:00:00 UTC)" executed successfully 2026-09-15 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 10:00:00 UTC)" (scheduled at 2026-09-15 09:00:00+00:00) 2026-09-15 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-15 09:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 09:00:01,151 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 09:00:01,154 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 09:00:01,158 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 09:00:01,158 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 09:00:01,234 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 09:00:01,307 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 09:00:01,307 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 10:00:00 UTC)" executed successfully 2026-09-15 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 11:00:00 UTC)" (scheduled at 2026-09-15 10:00:00+00:00) 2026-09-15 10:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 10:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 10:00:01,458 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 10:00:01,462 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 10:00:01,466 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 10:00:01,467 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 10:00:01,555 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 10:00:01,643 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 10:00:01,643 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 11:00:00 UTC)" executed successfully 2026-09-15 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 12:00:00 UTC)" (scheduled at 2026-09-15 11:00:00+00:00) 2026-09-15 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-15 11:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 11:00:01,207 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 11:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 11:00:01,216 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 11:00:01,216 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 11:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 11:00:01,355 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 11:00:01,355 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 12:00:00 UTC)" executed successfully 2026-09-15 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 13:00:00 UTC)" (scheduled at 2026-09-15 12:00:00+00:00) 2026-09-15 12:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 12:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 12:00:01,292 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 12:00:01,294 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 12:00:01,298 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 12:00:01,298 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 12:00:01,363 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 12:00:01,440 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 12:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 13:00:00 UTC)" executed successfully 2026-09-15 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 14:00:00 UTC)" (scheduled at 2026-09-15 13:00:00+00:00) 2026-09-15 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 13:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 13:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 13:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 13:00:01,379 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 13:00:01,379 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 13:00:01,443 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 13:00:01,493 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 13:00:01,493 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 14:00:00 UTC)" executed successfully 2026-09-15 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 15:00:00 UTC)" (scheduled at 2026-09-15 14:00:00+00:00) 2026-09-15 14:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 14:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 14:00:01,301 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 14:00:01,303 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 14:00:01,308 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 14:00:01,308 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 14:00:01,391 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 14:00:01,478 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 14:00:01,479 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 15:00:00 UTC)" executed successfully 2026-09-15 15:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 16:00:00 UTC)" (scheduled at 2026-09-15 15:00:00+00:00) 2026-09-15 15:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-15 15:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 15:00:01,485 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 15:00:01,487 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 15:00:01,489 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 15:00:01,489 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 15:00:01,544 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 15:00:01,603 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 15:00:01,603 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 16:00:00 UTC)" executed successfully 2026-09-15 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 17:00:00 UTC)" (scheduled at 2026-09-15 16:00:00+00:00) 2026-09-15 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 16:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 16:00:01,353 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 16:00:01,355 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 16:00:01,357 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 16:00:01,357 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 16:00:01,409 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 16:00:01,469 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 16:00:01,470 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 17:00:00 UTC)" executed successfully 2026-09-15 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 18:00:00 UTC)" (scheduled at 2026-09-15 17:00:00+00:00) 2026-09-15 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 17:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 17:00:01,487 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 17:00:01,489 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 17:00:01,492 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 17:00:01,492 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 17:00:01,552 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 17:00:01,626 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 17:00:01,627 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 18:00:00 UTC)" executed successfully 2026-09-15 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 19:00:00 UTC)" (scheduled at 2026-09-15 18:00:00+00:00) 2026-09-15 18:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-15 18:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 18:00:01,368 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 18:00:01,370 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 18:00:01,373 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 18:00:01,373 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 18:00:01,441 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 18:00:01,516 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 18:00:01,516 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 19:00:00 UTC)" executed successfully 2026-09-15 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 20:00:00 UTC)" (scheduled at 2026-09-15 19:00:00+00:00) 2026-09-15 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 19:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 19:00:01,311 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 19:00:01,312 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 19:00:01,316 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 19:00:01,316 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 19:00:01,381 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 19:00:01,442 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 19:00:01,442 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 20:00:00 UTC)" executed successfully 2026-09-15 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 21:00:00 UTC)" (scheduled at 2026-09-15 20:00:00+00:00) 2026-09-15 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 20:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 20:00:01,214 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 20:00:01,216 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 20:00:01,219 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 20:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 20:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 20:00:01,309 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 20:00:01,309 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 21:00:00 UTC)" executed successfully 2026-09-15 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 22:00:00 UTC)" (scheduled at 2026-09-15 21:00:00+00:00) 2026-09-15 21:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-15 21:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 21:00:01,307 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 21:00:01,309 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 21:00:01,312 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 21:00:01,313 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 21:00:01,373 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 21:00:01,439 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 21:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 22:00:00 UTC)" executed successfully 2026-09-15 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 23:00:00 UTC)" (scheduled at 2026-09-15 22:00:00+00:00) 2026-09-15 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 22:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 22:00:01,994 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 22:00:01,996 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 22:00:01,999 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 22:00:01,999 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 22:00:02,050 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 22:00:02,119 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 22:00:02,119 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 23:00:00 UTC)" executed successfully 2026-09-15 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 00:00:00 UTC)" (scheduled at 2026-09-15 23:00:00+00:00) 2026-09-15 23:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 23:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 23:00:02,026 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 23:00:02,028 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 23:00:02,032 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 23:00:02,032 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 23:00:02,154 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 23:00:02,248 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 23:00:02,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 00:00:00 UTC)" executed successfully 2026-09-16 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 01:00:00 UTC)" (scheduled at 2026-09-16 00:00:00+00:00) 2026-09-16 00:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 00:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 00:00:01,167 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 00:00:01,170 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 00:00:01,173 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 00:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 00:00:01,277 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 00:00:01,374 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 00:00:01,375 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 01:00:00 UTC)" executed successfully 2026-09-16 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 02:00:00 UTC)" (scheduled at 2026-09-16 01:00:00+00:00) 2026-09-16 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-16 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 01:00:01,323 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 01:00:01,324 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 01:00:01,327 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 01:00:01,327 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 01:00:01,389 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 01:00:01,479 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 01:00:01,479 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 02:00:00 UTC)" executed successfully 2026-09-16 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 03:00:00 UTC)" (scheduled at 2026-09-16 02:00:00+00:00) 2026-09-16 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-16 02:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 02:00:01,302 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 02:00:01,304 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 02:00:01,307 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 02:00:01,308 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 02:00:01,364 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 02:00:01,432 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 02:00:01,433 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 03:00:00 UTC)" executed successfully 2026-09-16 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 04:00:00 UTC)" (scheduled at 2026-09-16 03:00:00+00:00) 2026-09-16 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-16 03:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 03:00:01,398 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 03:00:01,400 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 03:00:01,403 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 03:00:01,403 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 03:00:01,458 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 03:00:01,534 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 03:00:01,534 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 04:00:00 UTC)" executed successfully 2026-09-16 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 05:00:00 UTC)" (scheduled at 2026-09-16 04:00:00+00:00) 2026-09-16 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-16 04:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 04:00:01,379 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 04:00:01,381 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 04:00:01,382 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 04:00:01,382 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 04:00:01,482 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 04:00:01,557 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 04:00:01,558 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 05:00:00 UTC)" executed successfully 2026-09-16 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 06:00:00 UTC)" (scheduled at 2026-09-16 05:00:00+00:00) 2026-09-16 05:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 05:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 05:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 05:00:01,198 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 05:00:01,201 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 05:00:01,202 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 05:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 05:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 05:00:01,545 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 06:00:00 UTC)" executed successfully 2026-09-16 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 07:00:00 UTC)" (scheduled at 2026-09-16 06:00:00+00:00) 2026-09-16 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-16 06:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 06:00:01,727 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 06:00:01,729 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 06:00:01,732 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 06:00:01,733 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 06:00:01,795 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 06:00:01,867 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 06:00:01,867 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 07:00:00 UTC)" executed successfully 2026-09-16 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 08:00:00 UTC)" (scheduled at 2026-09-16 07:00:00+00:00) 2026-09-16 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 07:00:01,548 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 07:00:01,550 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 07:00:01,553 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 07:00:01,554 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 07:00:01,635 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 07:00:01,719 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 07:00:01,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 08:00:00 UTC)" executed successfully 2026-09-16 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 09:00:00 UTC)" (scheduled at 2026-09-16 08:00:00+00:00) 2026-09-16 08:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-16 08:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 08:00:02,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 08:00:02,173 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 08:00:02,176 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 08:00:02,176 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 08:00:02,219 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 08:00:02,271 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 08:00:02,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 09:00:00 UTC)" executed successfully 2026-09-16 09:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 10:00:00 UTC)" (scheduled at 2026-09-16 09:00:00+00:00) 2026-09-16 09:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-16 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 09:00:01,405 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 09:00:01,407 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 09:00:01,411 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 09:00:01,411 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 09:00:01,479 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 09:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 09:00:01,544 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 10:00:00 UTC)" executed successfully 2026-09-16 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 11:00:00 UTC)" (scheduled at 2026-09-16 10:00:00+00:00) 2026-09-16 10:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 10:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 10:00:01,858 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 10:00:01,861 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 10:00:01,865 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 10:00:01,866 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 10:00:01,933 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 10:00:02,010 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 10:00:02,010 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 11:00:00 UTC)" executed successfully 2026-09-16 11:00:00,013 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 12:00:00 UTC)" (scheduled at 2026-09-16 11:00:00+00:00) 2026-09-16 11:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 11:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 11:00:01,464 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 11:00:01,466 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 11:00:01,470 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 11:00:01,470 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 11:00:01,546 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 11:00:01,621 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 11:00:01,622 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 12:00:00 UTC)" executed successfully 2026-09-16 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 13:00:00 UTC)" (scheduled at 2026-09-16 12:00:00+00:00) 2026-09-16 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-16 12:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 12:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 12:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 12:00:01,380 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 12:00:01,380 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 12:00:01,455 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 12:00:01,529 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 12:00:01,529 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 13:00:00 UTC)" executed successfully 2026-09-16 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 14:00:00 UTC)" (scheduled at 2026-09-16 13:00:00+00:00) 2026-09-16 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 13:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 13:00:01,279 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 13:00:01,280 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 13:00:01,282 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 13:00:01,282 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 13:00:01,348 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 13:00:01,418 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 13:00:01,418 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 14:00:00 UTC)" executed successfully 2026-09-16 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 15:00:00 UTC)" (scheduled at 2026-09-16 14:00:00+00:00) 2026-09-16 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-16 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 14:00:01,319 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 14:00:01,320 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 14:00:01,324 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 14:00:01,324 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 14:00:01,384 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 14:00:01,459 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 14:00:01,460 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 15:00:00 UTC)" executed successfully 2026-09-16 15:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 16:00:00 UTC)" (scheduled at 2026-09-16 15:00:00+00:00) 2026-09-16 15:00:00,004 INFO [fb-sync] Starting FB sync... 2026-09-16 15:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 15:00:01,532 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 15:00:01,535 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 15:00:01,538 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 15:00:01,539 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 15:00:01,616 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 15:00:01,707 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 15:00:01,707 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 16:00:00 UTC)" executed successfully 2026-09-16 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 17:00:00 UTC)" (scheduled at 2026-09-16 16:00:00+00:00) 2026-09-16 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-16 16:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 16:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 16:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 16:00:01,381 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 16:00:01,381 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 16:00:01,468 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 16:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 16:00:01,544 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 17:00:00 UTC)" executed successfully