From f4da3d7a5f2a3914db75d89bb5c003b1d77e9e7f Mon Sep 17 00:00:00 2001 From: Loren McIntyre Date: Sun, 16 Feb 2025 19:11:52 -0800 Subject: [PATCH] add filters --- bluesky-simple-print.py | 37 ++++++++++++++++++++----------------- bsky-event-1.json | 2 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/bluesky-simple-print.py b/bluesky-simple-print.py index 59741c4..eebb1a8 100644 --- a/bluesky-simple-print.py +++ b/bluesky-simple-print.py @@ -70,7 +70,6 @@ class BlueskyFirehosePrinter: print(f"Connected to {websocket_url}") while True: try: - eventws = await websocket.recv() # Parse event @@ -80,15 +79,24 @@ class BlueskyFirehosePrinter: except json.JSONDecodeError: post = "err:" + eventws - if post.type not in onlys: continue - if post.type in skips: continue + #try: post.type + #except Exception as e: + # logger.debug(f"no type on post object. {e=} {post.toJSON()=}") + # continue + #try: post.record["$type"] + #except Exception as e: + # logger.debug(f"no post.commit.$type key. {e=} {post.commit.toJSON()=}") + # continue + + # s/type/kind/g -- com -> commit + if onlys and post.kind not in onlys: continue + if post.kind in skips: continue # type in ["com", "id", "acc"] # [com]mit, [id]entity, [acc]ount, ..? [del]ete? or commit type ts = post.time_us//10e3 - # Select color based on post ID #color = self._get_post_color(post.time_us//10e4) - hsv1 = [ (ts % 255)/255, .8, .8] + hsv1 = [ (ts/4 % 255)/255, .8, .8] # Generate a unique post ID #post_id = str(hash(json.dumps(post))) @@ -97,15 +105,12 @@ class BlueskyFirehosePrinter: # Extract and print text #text = self._extract_post_text(post) try: - if post.type in ["com"]: - if cfilters.get("-") and any(map(lambda w: w in post.commit.type, cfilters.get("-"))): - continue - if cfilters.get("+") and not any(map(lambda w: w in post.commit.type, cfilters.get("+"))): - continue - if fdrops and any(map(lambda w: w in post.commit.record.text, fdrops)): - continue - if fkeeps and not any(map(lambda w: w in post.commit.record.text, fkeeps)): - continue + #if post.type in ["com"]: + if post.kind in ["commit"]: + if cfilters.get("-") and any(map(lambda w: w in post.commit.type, cfilters.get("-"))): continue + if cfilters.get("+") and not any(map(lambda w: w in post.commit.type, cfilters.get("+"))): continue + if fdrops and any(map(lambda w: w in post.commit.record.text, fdrops)): continue + if fkeeps and not any(map(lambda w: w in post.commit.record.text, fkeeps)): continue if post.commit.record.text: text = post.commit.record.text @@ -182,8 +187,6 @@ async def main(skips=[], onlys=[], count=None, cfilters={}, fkeeps=[], fdrops=[] printer = BlueskyFirehosePrinter() await printer.connect_and_print(BLUESKY_FIREHOSE_WS, skips=skips, onlys=onlys, count=count, cfilters=cfilters, fkeeps=fkeeps, fdrops=fdrops) - - def cli_main(skips="", only="", cfilters="", filters="", count=None): """ run the async func. @@ -195,7 +198,7 @@ def cli_main(skips="", only="", cfilters="", filters="", count=None): """ # Run the async main function skips = skips.split(",") - onlys = only.split(",") + onlys = only # onlys = list(only)# onlys = only.split(",") cfs = cfilters.split(",") cfilters = {"+": [f[1:] for f in cfs if f[:1] == "+"], "-": [f[1:] for f in cfs if f[:1] == "-"] } diff --git a/bsky-event-1.json b/bsky-event-1.json index 210acbc..2b7f998 100644 --- a/bsky-event-1.json +++ b/bsky-event-1.json @@ -1 +1 @@ -{"did":"did:plc:hdps5qzxhbhmgyfht7xbrf4u","time_us":1732139039346541,"type":"com","kind":"commit","commit":{"rev":"3lbfwa42a6326","type":"c","operation":"create","collection":"app.bsky.feed.post","rkey":"3lbfwa3w22c2d","record":{"$type":"app.bsky.feed.post","createdAt":"2024-11-20T21:43:58.933Z","langs":["en"],"reply":{"parent":{"cid":"bafyreidaivmfhldd4jzjxjztfxywkgszhovguvgd6hfr6qbumg73imerpe","uri":"at://did:plc:5ybjw77wuat2wpeq434hzyen/app.bsky.feed.post/3kwi7jcnbsf2s"},"root":{"cid":"bafyreigugwpm7vfdwltwyr4j6lb4bixdl3irdymasyy6ponm2u23sfp6aq","uri":"at://did:plc:dfdn5h5ejeloscqpou577jvy/app.bsky.feed.post/3kwhy3mlxte2o"}},"text":"I agree"},"cid":"bafyreifoxsw7x4tstgm5367zx2dauyrt4qt6j65amv2zvsqrq43tkve7mu"}} +{"did":"did:plc:fqokdrufojdd3gj7kdsjyd6z","time_us":1732570857794931,"type":"com","kind":"commit","commit":{"rev":"3lbsifbq35m27","type":"c","operation":"create","collection":"app.bsky.feed.post","rkey":"3lbsif7jhyc2l","record":{"$type":"app.bsky.feed.post","createdAt":"2024-11-25T21:40:54.701Z","embed":{"$type":"app.bsky.embed.external","external":{"description":"Tappen: Nederland heeft heimelijk een nieuw tapsysteem gekocht van Israëlische makelij. Dat zou een ander systeem, dat niet werkt, moeten vervangen. Maar onderaan de streep werkt de politie nog altijd...","thumb":{"$type":"blob","ref":{"$link":"bafkreiaknrue43kutcz7u2hmxlmpwmwi6g5juoobl6dluaa3dou3wqqznq"},"mimeType":"image/jpeg","size":651783},"title":"Kamer verkeerd geïnformeerd over aanschaf van Israëlische afluistersystemen voor de politie die miljoenen kosten en na jaren nog steeds niet werken","uri":"https://www.nrc.nl/nieuws/2024/11/25/kamer-verkeerd-geinformeerd-over-aanschaf-van-israelische-afluistersystemen-voor-de-politie-die-miljoenen-kosten-en-na-jaren-nog-steeds-niet-werken-a4874410"}},"facets":[{"features":[{"$type":"app.bsky.richtext.facet#link","uri":"https://www.nrc.nl/nieuws/2024/11/25/kamer-verkeerd-geinformeerd-over-aanschaf-van-israelische-afluistersystemen-voor-de-politie-die-miljoenen-kosten-en-na-jaren-nog-steeds-niet-werken-a4874410"}],"index":{"byteEnd":302,"byteStart":276}}],"langs":["en"],"text":"Toen Yesilgöz nog minister was en Dick Schoof haar hoogste ambtenaar, kocht het ministerie stiekem een afluistersysteem voor de politie van een omstreden Israëlische defensiebedrijf. Het systeem werkt niet. Dat lijkt me op zich goed nieuws: luistert de Mossad ook niet mee.\nwww.nrc.nl/nieuws/2024/..."},"cid":"bafyreiffuiaz4c3pv5o7yhy2rf5idsk7dcbyztax4ekn624wtldy5ns6by"}}