Explorer
/tmp/patch_aa022_watch_dates.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-radar/intake/watch_intake.py')
s=p.read_text()
s=s.replace('from signal_db import insert_signal, record_source_run\n', 'from signal_db import insert_signal, record_source_run\nfrom published_at_normalizer import normalize_published_at\n',1)
s=s.replace('''        "observed_at": datetime.now(timezone.utc).isoformat(),
        "source_name": f"WATCH-IMPROVED: {entity['canonical_name']} ({entity['sector']})",
''','''        "observed_at": datetime.now(timezone.utc).isoformat(),
        "published_at": None,
        "source_name": f"WATCH-IMPROVED: {entity['canonical_name']} ({entity['sector']})",
''',1)
s=s.replace('''            watch_entity_data={
                "external_id": "",  # Facebook doesn't provide easy external ID without API
''','''            watch_entity_data={
                "external_id": "",  # Facebook doesn't provide easy external ID without API
''',1)
s=s.replace('''            retrieval_mode=result.get("source", "direct")
        )
''','''            retrieval_mode=result.get("source", "direct"),
            watch_entity_data={
                "published_at": normalize_published_at(
                    result.get("date") if result.get("source") != "sitemap" else None,
                    datetime.now(timezone.utc).isoformat(),
                )
            },
        )
''',1)
s=s.replace('''                sid = _store_improved(entity, "web", link, title, desc[:400], img, img and "og:image" or "")
''','''                sid = _store_improved(
                    entity, "web", link, title, desc[:400], img, img and "og:image" or "",
                    watch_entity_data={"published_at": normalize_published_at(
                        it.findtext("pubDate", "") or it.findtext("./{http://www.w3.org/2005/Atom}published", ""),
                        datetime.now(timezone.utc).isoformat())}
                )
''',1)
s=s.replace('''                sid = _store_improved(entity, "web", u, title, title, img, src)
''','''                sid = _store_improved(entity, "web", u, title, title, img, src)
''',1)
# YouTube Atom publication date is authoritative.
s=s.replace('''        title = (e.findtext("a:title", "", ns) or "").strip()
        thumb = f"https://i.ytimg.com/vi/{vid}/hqdefault.jpg"
        sid = _store_improved(entity, "youtube", f"https://www.youtube.com/watch?v={vid}",
                              title, title, thumb, retrieval_mode="youtube_rss")
''','''        title = (e.findtext("a:title", "", ns) or "").strip()
        published = e.findtext("a:published", "", ns)
        thumb = f"https://i.ytimg.com/vi/{vid}/hqdefault.jpg"
        sid = _store_improved(entity, "youtube", f"https://www.youtube.com/watch?v={vid}",
                              title, title, thumb, retrieval_mode="youtube_rss",
                              watch_entity_data={"published_at": normalize_published_at(
                                  published, datetime.now(timezone.utc).isoformat())})
''',1)
p.write_text(s)