"""Project 112: read public Bluesky posts (7 days) where people wonder whether their likes/followers are bots. Read-only, public AppView search, 0.7 s between calls. Writes posts.json.""" import json from fetch_lib import search, posts, NOW, OLD Q = [ "bot likes", "likes from bots", "liked by bots", "bots liking my posts", "bots like my posts", "are these bots", "is this a bot", "bot followers", "followed by bots", "bots following me", "fake engagement", "engagement bots", "real likes", "mass liker", "like bots", "bot accounts liking", "only bots like", "all my likes are bots", "bots keep liking", "how do I know if a bot", "bot or human", "real people or bots", "bluesky bots", "spam likes", "bots reposting", "repost bots", "like farm", "auto like", "autolike", "who liked my post", ] for q in Q: n = search(q) print(f"{n:4d} {q}") json.dump({"window": [OLD.isoformat(), NOW.isoformat()], "queries": Q, "posts": list(posts.values())}, open("posts.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1) print("unique posts in window:", len(posts))