2026-11-13 17:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 18:00:00 UTC)" (scheduled at 2026-11-13 17:00:00+00:00) 2026-11-13 17:00:00,015 INFO [fb-sync] Starting FB sync... 2026-11-13 17:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 17:00:01,458 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 17:00:01,460 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 17:00:01,462 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 17:00:01,462 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 17:00:01,507 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-13 17:00:01,579 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 17:00:01,579 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 18:00:00 UTC)" executed successfully 2026-11-13 18:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 19:00:00 UTC)" (scheduled at 2026-11-13 18:00:00+00:00) 2026-11-13 18:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-13 18:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 18:00:01,185 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 18:00:01,187 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 18:00:01,190 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 18:00:01,190 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 18: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-11-13 18:00:01,280 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 18:00:01,280 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 19:00:00 UTC)" executed successfully 2026-11-13 19:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 20:00:00 UTC)" (scheduled at 2026-11-13 19:00:00+00:00) 2026-11-13 19:00:00,006 INFO [fb-sync] Starting FB sync... 2026-11-13 19:00:00,064 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 19:00:01,061 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 19:00:01,063 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 19:00:01,065 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 19:00:01,066 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 19: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-11-13 19:00:01,154 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 19:00:01,154 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 20:00:00 UTC)" executed successfully 2026-11-13 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 21:00:00 UTC)" (scheduled at 2026-11-13 20:00:00+00:00) 2026-11-13 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-13 20:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 20:00:01,350 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 20:00:01,351 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 20:00:01,354 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 20:00:01,354 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 20: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-11-13 20:00:01,456 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 20:00:01,457 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 21:00:00 UTC)" executed successfully 2026-11-13 21:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 22:00:00 UTC)" (scheduled at 2026-11-13 21:00:00+00:00) 2026-11-13 21:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-13 21:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 21:00:01,197 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 21:00:01,200 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 21:00:01,202 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 21:00:01,203 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 21:00:01,253 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-13 21:00:01,298 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 21:00:01,298 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 22:00:00 UTC)" executed successfully 2026-11-13 22:00:00,013 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 23:00:00 UTC)" (scheduled at 2026-11-13 22:00:00+00:00) 2026-11-13 22:00:00,017 INFO [fb-sync] Starting FB sync... 2026-11-13 22:00:00,093 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 22:00:01,258 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 22:00:01,261 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 22:00:01,264 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 22:00:01,265 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 22: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-11-13 22:00:01,354 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 22:00:01,354 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-13 23:00:00 UTC)" executed successfully 2026-11-13 23:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 00:00:00 UTC)" (scheduled at 2026-11-13 23:00:00+00:00) 2026-11-13 23:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-13 23:00:00,079 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-13 23:00:01,068 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-13 23:00:01,070 INFO [fb-sync.worker] Scraped 50 posts 2026-11-13 23:00:01,072 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-13 23:00:01,073 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-13 23: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-11-13 23:00:01,168 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-13 23:00:01,168 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 00:00:00 UTC)" executed successfully 2026-11-14 00:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 01:00:00 UTC)" (scheduled at 2026-11-14 00:00:00+00:00) 2026-11-14 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-14 00:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 00:00:01,851 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 00:00:01,854 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 00:00:01,856 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 00:00:01,857 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 00:00:01,920 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 00:00:01,977 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 00:00:01,977 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 01:00:00 UTC)" executed successfully 2026-11-14 01:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 02:00:00 UTC)" (scheduled at 2026-11-14 01:00:00+00:00) 2026-11-14 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-14 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 01:00:01,030 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 01:00:01,033 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 01:00:01,035 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 01:00:01,036 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 01: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-11-14 01:00:01,129 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 01:00:01,130 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 02:00:00 UTC)" executed successfully 2026-11-14 02:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 03:00:00 UTC)" (scheduled at 2026-11-14 02:00:00+00:00) 2026-11-14 02:00:00,008 INFO [fb-sync] Starting FB sync... 2026-11-14 02:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 02:00:00,942 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 02:00:00,944 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 02:00:00,946 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 02:00:00,946 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 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-11-14 02:00:01,031 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 02:00:01,031 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 03:00:00 UTC)" executed successfully 2026-11-14 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 04:00:00 UTC)" (scheduled at 2026-11-14 03:00:00+00:00) 2026-11-14 03:00:00,012 INFO [fb-sync] Starting FB sync... 2026-11-14 03:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 03:00:00,969 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 03:00:00,971 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 03:00:00,974 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 03:00:00,974 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 03: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-11-14 03:00:01,062 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 03:00:01,062 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 04:00:00 UTC)" executed successfully 2026-11-14 04:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 05:00:00 UTC)" (scheduled at 2026-11-14 04:00:00+00:00) 2026-11-14 04:00:00,014 INFO [fb-sync] Starting FB sync... 2026-11-14 04:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 04:00:00,941 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 04:00:00,943 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 04:00:00,945 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 04:00:00,945 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 04: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-11-14 04:00:01,035 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 04:00:01,035 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 05:00:00 UTC)" executed successfully 2026-11-14 05:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 06:00:00 UTC)" (scheduled at 2026-11-14 05:00:00+00:00) 2026-11-14 05:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-14 05:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 05:00:01,710 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 05:00:01,711 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 05:00:01,713 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 05:00:01,714 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 05:00:01,755 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 05:00:01,805 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 05:00:01,806 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 06:00:00 UTC)" executed successfully 2026-11-14 06:00:00,018 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 07:00:00 UTC)" (scheduled at 2026-11-14 06:00:00+00:00) 2026-11-14 06:00:00,022 INFO [fb-sync] Starting FB sync... 2026-11-14 06:00:00,095 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 06:00:00,964 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 06:00:00,967 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 06:00:00,970 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 06:00:00,971 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 06:00:01,031 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 06:00:01,076 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 06:00:01,076 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 07:00:00 UTC)" executed successfully 2026-11-14 07:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 08:00:00 UTC)" (scheduled at 2026-11-14 07:00:00+00:00) 2026-11-14 07:00:00,018 INFO [fb-sync] Starting FB sync... 2026-11-14 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 07:00:00,979 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 07:00:00,981 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 07:00:00,984 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 07:00:00,984 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 07: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-11-14 07:00:01,099 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 07:00:01,099 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 08:00:00 UTC)" executed successfully 2026-11-14 08:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 09:00:00 UTC)" (scheduled at 2026-11-14 08:00:00+00:00) 2026-11-14 08:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-14 08:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 08:00:01,044 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 08:00:01,046 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 08:00:01,048 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 08:00:01,049 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 08: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-11-14 08:00:01,148 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 08:00:01,148 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 09:00:00 UTC)" executed successfully 2026-11-14 09:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 10:00:00 UTC)" (scheduled at 2026-11-14 09:00:00+00:00) 2026-11-14 09:00:00,014 INFO [fb-sync] Starting FB sync... 2026-11-14 09:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 09:00:01,351 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 09:00:01,353 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 09:00:01,355 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 09:00:01,355 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 09: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-11-14 09:00:01,457 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 09:00:01,457 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 10:00:00 UTC)" executed successfully 2026-11-14 10:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 11:00:00 UTC)" (scheduled at 2026-11-14 10:00:00+00:00) 2026-11-14 10:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-14 10:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 10:00:01,073 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 10:00:01,076 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 10:00:01,078 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 10:00:01,079 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 10: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-11-14 10:00:01,169 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 10:00:01,170 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 11:00:00 UTC)" executed successfully 2026-11-14 11:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 12:00:00 UTC)" (scheduled at 2026-11-14 11:00:00+00:00) 2026-11-14 11:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-14 11:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 11:00:01,174 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 11:00:01,177 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 11:00:01,179 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 11:00:01,179 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 11: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-11-14 11:00:01,270 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 11:00:01,270 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 12:00:00 UTC)" executed successfully 2026-11-14 12:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 13:00:00 UTC)" (scheduled at 2026-11-14 12:00:00+00:00) 2026-11-14 12:00:00,012 INFO [fb-sync] Starting FB sync... 2026-11-14 12:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 12:00:01,295 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 12:00:01,298 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 12:00:01,300 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 12:00:01,301 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 12: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-11-14 12:00:01,396 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 12:00:01,397 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 13:00:00 UTC)" executed successfully 2026-11-14 13:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 14:00:00 UTC)" (scheduled at 2026-11-14 13:00:00+00:00) 2026-11-14 13:00:00,017 INFO [fb-sync] Starting FB sync... 2026-11-14 13:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 13:00:01,154 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 13:00:01,156 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 13:00:01,158 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 13:00:01,158 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 13: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-11-14 13:00:01,247 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 13:00:01,247 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 14:00:00 UTC)" executed successfully 2026-11-14 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 15:00:00 UTC)" (scheduled at 2026-11-14 14:00:00+00:00) 2026-11-14 14:00:00,017 INFO [fb-sync] Starting FB sync... 2026-11-14 14:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 14:00:01,367 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 14:00:01,370 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 14:00:01,373 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 14:00:01,373 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 14:00:01,442 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 14:00:01,520 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 14:00:01,521 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 15:00:00 UTC)" executed successfully 2026-11-14 15:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 16:00:00 UTC)" (scheduled at 2026-11-14 15:00:00+00:00) 2026-11-14 15:00:00,017 INFO [fb-sync] Starting FB sync... 2026-11-14 15:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 15:00:01,163 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 15:00:01,165 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 15:00:01,167 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 15:00:01,168 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 15: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-11-14 15:00:01,261 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 15:00:01,261 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 16:00:00 UTC)" executed successfully 2026-11-14 16:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 17:00:00 UTC)" (scheduled at 2026-11-14 16:00:00+00:00) 2026-11-14 16:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-14 16:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 16:00:01,272 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 16:00:01,274 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 16:00:01,276 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 16:00:01,277 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 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-11-14 16:00:01,380 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 16:00:01,380 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 17:00:00 UTC)" executed successfully 2026-11-14 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 18:00:00 UTC)" (scheduled at 2026-11-14 17:00:00+00:00) 2026-11-14 17:00:00,012 INFO [fb-sync] Starting FB sync... 2026-11-14 17:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 17:00:01,575 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 17:00:01,577 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 17:00:01,580 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 17:00:01,580 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 17:00:01,649 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 17:00:01,722 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 17:00:01,722 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 18:00:00 UTC)" executed successfully 2026-11-14 18:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 19:00:00 UTC)" (scheduled at 2026-11-14 18:00:00+00:00) 2026-11-14 18:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-14 18:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 18:00:01,228 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 18:00:01,230 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 18:00:01,233 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 18:00:01,234 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 18: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-11-14 18:00:01,332 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 18:00:01,333 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 19:00:00 UTC)" executed successfully 2026-11-14 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 20:00:00 UTC)" (scheduled at 2026-11-14 19:00:00+00:00) 2026-11-14 19:00:00,011 INFO [fb-sync] Starting FB sync... 2026-11-14 19:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 19:00:01,076 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 19:00:01,077 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 19:00:01,080 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 19:00:01,080 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 19: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-11-14 19:00:01,180 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 19:00:01,181 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 20:00:00 UTC)" executed successfully 2026-11-14 20:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 21:00:00 UTC)" (scheduled at 2026-11-14 20:00:00+00:00) 2026-11-14 20:00:00,014 INFO [fb-sync] Starting FB sync... 2026-11-14 20:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 20:00:01,222 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 20:00:01,225 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 20:00:01,227 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 20:00:01,227 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 20: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-11-14 20:00:01,351 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 20:00:01,351 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 21:00:00 UTC)" executed successfully 2026-11-14 21:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 22:00:00 UTC)" (scheduled at 2026-11-14 21:00:00+00:00) 2026-11-14 21:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-14 21:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 21:00:01,208 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 21:00:01,210 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 21:00:01,213 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 21:00:01,214 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 21: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-11-14 21:00:01,310 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 21:00:01,310 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 22:00:00 UTC)" executed successfully 2026-11-14 22:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 23:00:00 UTC)" (scheduled at 2026-11-14 22:00:00+00:00) 2026-11-14 22:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-14 22:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 22:00:01,148 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 22:00:01,151 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 22:00:01,153 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 22:00:01,153 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 22: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-11-14 22:00:01,249 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 22:00:01,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-14 23:00:00 UTC)" executed successfully 2026-11-14 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 00:00:00 UTC)" (scheduled at 2026-11-14 23:00:00+00:00) 2026-11-14 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-11-14 23:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-14 23:00:01,805 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-14 23:00:01,806 INFO [fb-sync.worker] Scraped 50 posts 2026-11-14 23:00:01,808 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-14 23:00:01,808 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-14 23:00:01,862 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-14 23:00:01,913 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-14 23:00:01,913 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 00:00:00 UTC)" executed successfully 2026-11-15 00:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 01:00:00 UTC)" (scheduled at 2026-11-15 00:00:00+00:00) 2026-11-15 00:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-15 00:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 00:00:02,723 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 00:00:02,726 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 00:00:02,729 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 00:00:02,732 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 00:00:02,808 INFO [fb-sync] Sync done: 0 new posts in 3s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 00:00:02,884 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 00:00:02,884 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 01:00:00 UTC)" executed successfully 2026-11-15 01:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 02:00:00 UTC)" (scheduled at 2026-11-15 01:00:00+00:00) 2026-11-15 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-15 01:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 01:00:01,134 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 01:00:01,136 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 01:00:01,138 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 01:00:01,139 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 01: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-11-15 01:00:01,256 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 01:00:01,256 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 02:00:00 UTC)" executed successfully 2026-11-15 02:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 03:00:00 UTC)" (scheduled at 2026-11-15 02:00:00+00:00) 2026-11-15 02:00:00,011 INFO [fb-sync] Starting FB sync... 2026-11-15 02:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 02:00:00,993 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 02:00:00,995 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 02:00:00,998 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 02:00:00,998 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 02: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-11-15 02:00:01,093 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 02:00:01,094 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 03:00:00 UTC)" executed successfully 2026-11-15 03:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 04:00:00 UTC)" (scheduled at 2026-11-15 03:00:00+00:00) 2026-11-15 03:00:00,011 INFO [fb-sync] Starting FB sync... 2026-11-15 03:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 03:00:01,004 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 03:00:01,006 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 03:00:01,009 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 03:00:01,009 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 03: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-11-15 03:00:01,111 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 03:00:01,111 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 04:00:00 UTC)" executed successfully 2026-11-15 04:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 05:00:00 UTC)" (scheduled at 2026-11-15 04:00:00+00:00) 2026-11-15 04:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-15 04:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 04:00:00,894 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 04:00:00,896 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 04:00:00,898 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 04:00:00,898 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 04:00:00,941 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 04:00:00,985 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 04:00:00,985 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 05:00:00 UTC)" executed successfully 2026-11-15 05:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 06:00:00 UTC)" (scheduled at 2026-11-15 05:00:00+00:00) 2026-11-15 05:00:00,012 INFO [fb-sync] Starting FB sync... 2026-11-15 05:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 05:00:01,181 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 05:00:01,183 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 05:00:01,185 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 05:00:01,185 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 05: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-11-15 05:00:01,278 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 05:00:01,278 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 06:00:00 UTC)" executed successfully 2026-11-15 06:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 07:00:00 UTC)" (scheduled at 2026-11-15 06:00:00+00:00) 2026-11-15 06:00:00,007 INFO [fb-sync] Starting FB sync... 2026-11-15 06:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 06:00:00,967 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 06:00:00,968 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 06:00:00,971 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 06:00:00,971 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 06:00:01,012 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 06:00:01,053 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 06:00:01,054 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 07:00:00 UTC)" executed successfully 2026-11-15 07:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 08:00:00 UTC)" (scheduled at 2026-11-15 07:00:00+00:00) 2026-11-15 07:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-15 07:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 07:00:01,558 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 07:00:01,560 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 07:00:01,564 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 07:00:01,564 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 07:00:01,633 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 07:00:01,705 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 07:00:01,706 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 08:00:00 UTC)" executed successfully 2026-11-15 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 09:00:00 UTC)" (scheduled at 2026-11-15 08:00:00+00:00) 2026-11-15 08:00:00,013 INFO [fb-sync] Starting FB sync... 2026-11-15 08:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 08:00:01,317 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 08:00:01,319 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 08:00:01,322 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 08:00:01,322 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 08: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-11-15 08:00:01,458 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 08:00:01,459 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 09:00:00 UTC)" executed successfully 2026-11-15 09:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 10:00:00 UTC)" (scheduled at 2026-11-15 09:00:00+00:00) 2026-11-15 09:00:00,007 INFO [fb-sync] Starting FB sync... 2026-11-15 09:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 09:00:01,490 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 09:00:01,492 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 09:00:01,494 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 09:00:01,494 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 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-11-15 09:00:01,612 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 09:00:01,613 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 10:00:00 UTC)" executed successfully 2026-11-15 10:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 11:00:00 UTC)" (scheduled at 2026-11-15 10:00:00+00:00) 2026-11-15 10:00:00,012 INFO [fb-sync] Starting FB sync... 2026-11-15 10:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 10:00:01,213 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 10:00:01,215 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 10:00:01,218 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 10:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 10: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-11-15 10:00:01,302 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 10:00:01,303 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 11:00:00 UTC)" executed successfully 2026-11-15 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 12:00:00 UTC)" (scheduled at 2026-11-15 11:00:00+00:00) 2026-11-15 11:00:00,009 INFO [fb-sync] Starting FB sync... 2026-11-15 11:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 11:00:01,109 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 11:00:01,110 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 11:00:01,113 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 11:00:01,113 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 11:00:01,170 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 11:00:01,226 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 11:00:01,226 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 12:00:00 UTC)" executed successfully 2026-11-15 12:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 13:00:00 UTC)" (scheduled at 2026-11-15 12:00:00+00:00) 2026-11-15 12:00:00,008 INFO [fb-sync] Starting FB sync... 2026-11-15 12:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 12:00:01,204 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 12:00:01,206 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 12:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 12:00:01,210 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 12: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-11-15 12:00:01,299 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 12:00:01,299 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 13:00:00 UTC)" executed successfully 2026-11-15 13:00:00,014 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 14:00:00 UTC)" (scheduled at 2026-11-15 13:00:00+00:00) 2026-11-15 13:00:00,018 INFO [fb-sync] Starting FB sync... 2026-11-15 13:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 13:00:01,225 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 13:00:01,227 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 13:00:01,230 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 13:00:01,230 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 13: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-11-15 13:00:01,327 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 13:00:01,327 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 14:00:00 UTC)" executed successfully 2026-11-15 14:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 15:00:00 UTC)" (scheduled at 2026-11-15 14:00:00+00:00) 2026-11-15 14:00:00,007 INFO [fb-sync] Starting FB sync... 2026-11-15 14:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 14:00:01,787 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 14:00:01,789 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 14:00:01,792 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 14:00:01,792 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 14:00:01,857 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-11-15 14:00:01,925 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 14:00:01,925 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 15:00:00 UTC)" executed successfully 2026-11-15 15:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 16:00:00 UTC)" (scheduled at 2026-11-15 15:00:00+00:00) 2026-11-15 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-11-15 15:00:00,071 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 15:00:01,212 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 15:00:01,215 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 15:00:01,218 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 15:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 15: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-11-15 15:00:01,319 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 15:00:01,320 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 16:00:00 UTC)" executed successfully 2026-11-15 16:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 17:00:00 UTC)" (scheduled at 2026-11-15 16:00:00+00:00) 2026-11-15 16:00:00,016 INFO [fb-sync] Starting FB sync... 2026-11-15 16:00:00,094 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 16:00:01,118 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 16:00:01,120 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 16:00:01,122 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 16:00:01,122 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 16: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-11-15 16:00:01,205 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 16:00:01,206 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 17:00:00 UTC)" executed successfully 2026-11-15 17:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 18:00:00 UTC)" (scheduled at 2026-11-15 17:00:00+00:00) 2026-11-15 17:00:00,014 INFO [fb-sync] Starting FB sync... 2026-11-15 17:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 17:00:01,356 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 17:00:01,358 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 17:00:01,361 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 17:00:01,361 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 17: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-11-15 17:00:01,491 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 17:00:01,492 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 18:00:00 UTC)" executed successfully 2026-11-15 18:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 19:00:00 UTC)" (scheduled at 2026-11-15 18:00:00+00:00) 2026-11-15 18:00:00,004 INFO [fb-sync] Starting FB sync... 2026-11-15 18:00:00,063 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-11-15 18:00:01,060 INFO [fb-sync.worker] Graph API returned 50 posts 2026-11-15 18:00:01,062 INFO [fb-sync.worker] Scraped 50 posts 2026-11-15 18:00:01,064 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-11-15 18:00:01,064 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-11-15 18: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-11-15 18:00:01,144 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-11-15 18:00:01,144 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-11-15 19:00:00 UTC)" executed successfully