Compare commits
10 Commits
96de250ef8
...
a3b42ea3e1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3b42ea3e1 | ||
|
|
38abb08eee | ||
|
|
f7efa7bf60 | ||
|
|
6fe32a4bac | ||
|
|
ce0b119bfc | ||
|
|
dbbd132872 | ||
|
|
938731f04e | ||
|
|
4dfbb3d2fb | ||
|
|
88d9669589 | ||
|
|
f4da3d7a5f |
176
.gitignore
vendored
Normal file
176
.gitignore
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
#uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# PyPI configuration file
|
||||
.pypirc
|
||||
|
||||
|
||||
# Added by cargo
|
||||
|
||||
/target
|
||||
1474
Cargo.lock
generated
Normal file
1474
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
17
Cargo.toml
Normal file
17
Cargo.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[package]
|
||||
name = "bsky-firehose-term"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.0", features = ["full"] }
|
||||
tokio-tungstenite = { version = "0.20", features = ["native-tls"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
colored = "2.0"
|
||||
clap = { version = "4.0", features = ["derive"] }
|
||||
futures-util = "0.3"
|
||||
url = "2.4"
|
||||
log = "0.4"
|
||||
env_logger = "0.10"
|
||||
rand = "0.8"
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Loren McIntyre
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
66
README.md
Normal file
66
README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Grand Aim
|
||||
A semantically colored feed of bluesky skeets, for your perspective, someone else's or another group's.
|
||||
|
||||
## Intermediate goals so far
|
||||
- [x] Visualize bluesky data.
|
||||
- [x] Read from jetstream
|
||||
- [x] Extract interesting fields
|
||||
- [x] Filter by commit/post type. Learning bsky data model just enough, filter also by keywords. Count limit.
|
||||
- [x] Get color selection ergonomic for further development, 24-bit? 32-bit? color, the alpha paramter of colorama is quite useful
|
||||
- [x] colorspace, hsla / hsl
|
||||
- [x] Vary colors, find balance so nothing draws excessive attention, but noticeable, though gradual, color evolution occurs
|
||||
And, for ergonomic use to communicate meaning. Color for cluster / direction. Brightness, inverse to length, for ease of reading, uniformity of gestalt. Saturation for content searching versus scaffolding metadata. Errors in grey too.
|
||||
- [x] Port to Rust for better performance and native compilation
|
||||
- [ ] Get semantic clustering working -- static color. Faiss? enough? Word2Vec? Queries?
|
||||
- [ ] Get sematic selection & filtering working, based on keywords, chosen posts
|
||||
- [ ] Get db/profiles/queries/modes set up -- so every taste selection input can inform any future use
|
||||
- [ ] Get a streaming web view working -- possibly even fully in-browser
|
||||
- fallen? [twitterfall](https://twitterfall.com) inspiration. [hatnote's L2W](https://l2w.hatnote.com)
|
||||
|
||||
# Run it
|
||||
|
||||
## Rust version (recommended)
|
||||
```bash
|
||||
# Build and run
|
||||
cargo run
|
||||
|
||||
# With options
|
||||
cargo run -- --count 10 --filters "+love,-hate" --cfilters "+create"
|
||||
|
||||
# Install and run
|
||||
cargo install --path .
|
||||
bsky-firehose-term --help
|
||||
```
|
||||
|
||||
## Python version
|
||||
```bash
|
||||
uv run --with websockets,colorama,munch,fire python3 bluesky-simple-print.py
|
||||
```
|
||||
|
||||
## Command-line options
|
||||
Both versions support the same filtering options:
|
||||
|
||||
- `--skips`: Skip certain types (comma-separated)
|
||||
- `--only`: Only show certain types (comma-separated)
|
||||
- `--cfilters`: Commit type filters (+include,-skip format)
|
||||
- `--filters`: Text filters (+include,-skip format)
|
||||
- `--count`: Stop after N posts
|
||||
|
||||
Examples:
|
||||
```bash
|
||||
# Show only posts containing "rust" or "programming"
|
||||
cargo run -- --filters "+rust,+programming"
|
||||
|
||||
# Skip posts containing "spam"
|
||||
cargo run -- --filters "-spam"
|
||||
|
||||
# Show only commit types containing "create"
|
||||
cargo run -- --cfilters "+create"
|
||||
|
||||
# Show only 5 posts
|
||||
cargo run -- --count 5
|
||||
```
|
||||
|
||||
# What it looks like
|
||||

|
||||

|
||||
@@ -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] == "-"] }
|
||||
|
||||
@@ -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"}}
|
||||
|
||||
6
justfile
Normal file
6
justfile
Normal file
@@ -0,0 +1,6 @@
|
||||
_default:
|
||||
@just --list
|
||||
|
||||
|
||||
run-visualizer:
|
||||
uv run --with websockets,colorama,munch,fire python3 bluesky-simple-print.py
|
||||
67
requirements.txt
Normal file
67
requirements.txt
Normal file
@@ -0,0 +1,67 @@
|
||||
# This file was autogenerated by uv via the following command:
|
||||
# uv export --format requirements-txt
|
||||
-e .
|
||||
colorama==0.4.6 \
|
||||
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
|
||||
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
|
||||
fire==0.7.0 \
|
||||
--hash=sha256:961550f07936eaf65ad1dc8360f2b2bf8408fad46abbfa4d2a3794f8d2a95cdf
|
||||
munch==4.0.0 \
|
||||
--hash=sha256:542cb151461263216a4e37c3fd9afc425feeaf38aaa3025cd2a981fadb422235 \
|
||||
--hash=sha256:71033c45db9fb677a0b7eb517a4ce70ae09258490e419b0e7f00d1e386ecb1b4
|
||||
termcolor==2.5.0 \
|
||||
--hash=sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8 \
|
||||
--hash=sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f
|
||||
websockets==15.0 \
|
||||
--hash=sha256:0e389efe46ccb25a1f93d08c7a74e8123a2517f7b7458f043bd7529d1a63ffeb \
|
||||
--hash=sha256:0f2205cdb444a42a7919690238fb5979a05439b9dbb73dd47c863d39640d85ab \
|
||||
--hash=sha256:10552fed076757a70ba2c18edcbc601c7637b30cdfe8c24b65171e824c7d6081 \
|
||||
--hash=sha256:110a847085246ab8d4d119632145224d6b49e406c64f1bbeed45c6f05097b680 \
|
||||
--hash=sha256:1206432cc6c644f6fc03374b264c5ff805d980311563202ed7fef91a38906276 \
|
||||
--hash=sha256:1657a9eecb29d7838e3b415458cc494e6d1b194f7ac73a34aa55c6fb6c72d1f3 \
|
||||
--hash=sha256:17f2854c6bd9ee008c4b270f7010fe2da6c16eac5724a175e75010aacd905b31 \
|
||||
--hash=sha256:1caf951110ca757b8ad9c4974f5cac7b8413004d2f29707e4d03a65d54cedf2b \
|
||||
--hash=sha256:26ba70fed190708551c19a360f9d7eca8e8c0f615d19a574292b7229e0ae324c \
|
||||
--hash=sha256:32e02a2d83f4954aa8c17e03fe8ec6962432c39aca4be7e8ee346b05a3476904 \
|
||||
--hash=sha256:3a302241fbe825a3e4fe07666a2ab513edfdc6d43ce24b79691b45115273b5e7 \
|
||||
--hash=sha256:3abd670ca7ce230d5a624fd3d55e055215d8d9b723adee0a348352f5d8d12ff4 \
|
||||
--hash=sha256:4095a1f2093002c2208becf6f9a178b336b7572512ee0a1179731acb7788e8ad \
|
||||
--hash=sha256:45535fead66e873f411c1d3cf0d3e175e66f4dd83c4f59d707d5b3e4c56541c4 \
|
||||
--hash=sha256:45d464622314973d78f364689d5dbb9144e559f93dca11b11af3f2480b5034e1 \
|
||||
--hash=sha256:4f7290295794b5dec470867c7baa4a14182b9732603fd0caf2a5bf1dc3ccabf3 \
|
||||
--hash=sha256:4ff380aabd7a74a42a760ee76c68826a8f417ceb6ea415bd574a035a111fd133 \
|
||||
--hash=sha256:51ffd53c53c4442415b613497a34ba0aa7b99ac07f1e4a62db5dcd640ae6c3c3 \
|
||||
--hash=sha256:56e3efe356416bc67a8e093607315951d76910f03d2b3ad49c4ade9207bf710d \
|
||||
--hash=sha256:5d3cc75ef3e17490042c47e0523aee1bcc4eacd2482796107fd59dd1100a44bc \
|
||||
--hash=sha256:5e6ee18a53dd5743e6155b8ff7e8e477c25b29b440f87f65be8165275c87fef0 \
|
||||
--hash=sha256:67a04754d121ea5ca39ddedc3f77071651fb5b0bc6b973c71c515415b44ed9c5 \
|
||||
--hash=sha256:8561c48b0090993e3b2a54db480cab1d23eb2c5735067213bb90f402806339f5 \
|
||||
--hash=sha256:86bfb52a9cfbcc09aba2b71388b0a20ea5c52b6517c0b2e316222435a8cdab72 \
|
||||
--hash=sha256:8711682a629bbcaf492f5e0af72d378e976ea1d127a2d47584fa1c2c080b436b \
|
||||
--hash=sha256:89da58e4005e153b03fe8b8794330e3f6a9774ee9e1c3bd5bc52eb098c3b0c4f \
|
||||
--hash=sha256:89f72524033abbfde880ad338fd3c2c16e31ae232323ebdfbc745cbb1b3dcc03 \
|
||||
--hash=sha256:8bf1ab71f9f23b0a1d52ec1682a3907e0c208c12fef9c3e99d2b80166b17905f \
|
||||
--hash=sha256:8d7bbbe2cd6ed80aceef2a14e9f1c1b61683194c216472ed5ff33b700e784e37 \
|
||||
--hash=sha256:94c4a9b01eede952442c088d415861b0cf2053cbd696b863f6d5022d4e4e2453 \
|
||||
--hash=sha256:a4cc73a6ae0a6751b76e69cece9d0311f054da9b22df6a12f2c53111735657c8 \
|
||||
--hash=sha256:a9f8e33747b1332db11cf7fcf4a9512bef9748cb5eb4d3f7fbc8c30d75dc6ffc \
|
||||
--hash=sha256:ace960769d60037ca9625b4c578a6f28a14301bd2a1ff13bb00e824ac9f73e55 \
|
||||
--hash=sha256:ae721bcc8e69846af00b7a77a220614d9b2ec57d25017a6bbde3a99473e41ce8 \
|
||||
--hash=sha256:aea01f40995fa0945c020228ab919b8dfc93fc8a9f2d3d705ab5b793f32d9e99 \
|
||||
--hash=sha256:b499caef4bca9cbd0bd23cd3386f5113ee7378094a3cb613a2fa543260fe9506 \
|
||||
--hash=sha256:b89504227a5311610e4be16071465885a0a3d6b0e82e305ef46d9b064ce5fb72 \
|
||||
--hash=sha256:bd66b4865c8b853b8cca7379afb692fc7f52cf898786537dfb5e5e2d64f0a47f \
|
||||
--hash=sha256:bfcd3acc1a81f106abac6afd42327d2cf1e77ec905ae11dc1d9142a006a496b6 \
|
||||
--hash=sha256:c53f97032b87a406044a1c33d1e9290cc38b117a8062e8a8b285175d7e2f99c9 \
|
||||
--hash=sha256:c7cd4b1015d2f60dfe539ee6c95bc968d5d5fad92ab01bb5501a77393da4f596 \
|
||||
--hash=sha256:c8c5c8e1bac05ef3c23722e591ef4f688f528235e2480f157a9cfe0a19081375 \
|
||||
--hash=sha256:ca36151289a15b39d8d683fd8b7abbe26fc50be311066c5f8dcf3cb8cee107ab \
|
||||
--hash=sha256:cccc18077acd34c8072578394ec79563664b1c205f7a86a62e94fafc7b59001f \
|
||||
--hash=sha256:d2244d8ab24374bed366f9ff206e2619345f9cd7fe79aad5225f53faac28b6b1 \
|
||||
--hash=sha256:d4c22992e24f12de340ca5f824121a5b3e1a37ad4360b4e1aaf15e9d1c42582d \
|
||||
--hash=sha256:dd24c4d256558429aeeb8d6c24ebad4e982ac52c50bc3670ae8646c181263965 \
|
||||
--hash=sha256:e413352a921f5ad5d66f9e2869b977e88d5103fc528b6deb8423028a2befd842 \
|
||||
--hash=sha256:ee06405ea2e67366a661ed313e14cf2a86e84142a3462852eb96348f7219cee3 \
|
||||
--hash=sha256:f83eca8cbfd168e424dfa3b3b5c955d6c281e8fc09feb9d870886ff8d03683c7 \
|
||||
--hash=sha256:fb915101dfbf318486364ce85662bb7b020840f68138014972c08331458d41f3 \
|
||||
--hash=sha256:ffc02b159b65c05f2ed9ec176b715b66918a674bd4daed48a9a7a590dd4be1aa
|
||||
BIN
res/Screenshot_20250222_162327.png
Normal file
BIN
res/Screenshot_20250222_162327.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
212
res/ascii-1.cast
Normal file
212
res/ascii-1.cast
Normal file
@@ -0,0 +1,212 @@
|
||||
{"version": 2, "width": 141, "height": 72, "timestamp": 1740353868, "env": {"SHELL": "/bin/bash", "TERM": "tmux-256color"}, "title": "bsky-firehose-term"}
|
||||
[0.007979, "o", "\u001b[?2004h$ "]
|
||||
[21.074211, "o", "\u001b[7muv run --with websockets,colorama,munch,fire python3 bluesky-simple-print.py\u001b[27m\r\n\r"]
|
||||
[22.360212, "o", "\u001bM\u001b[C\u001b[Cuv run --with websockets,colorama,munch,fire python3 bluesky-simple-print.py\r\n\r\u001b[K\u001bM\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C"]
|
||||
[24.497238, "o", "\r\n\u001b[?2004l\r"]
|
||||
[25.14075, "o", "Connected to wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post\u001b[0m\r\n"]
|
||||
[25.179932, "o", "\u001b[0m\u001b[38;2;72;70;76m174035389350|\u001b[38;2;60;22;114mamzn.to/3EPuSQW\r\n【Amazon.co.jp限定】菅田愛貴1st写真集「すのあき」 Amazon限定クリアフォトカード1枚(全3種)ランダム封入\r\n#菅田愛貴 #三瓶康友\r\n 240834\u001b[38;2;72;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.182534, "o", "\u001b[0m\u001b[38;2;72;70;76m174035389350|\u001b[38;2;43;16;82mHere's my highly anticipated #Twitch stream schedule for this week:\r\n\r\nMon (24th): 10:00 pm et, MLB The Show\r\nTue (25th): No Stream\r\nWed (26th): 12:00 pm et, The Sims 2\r\nThu (27th): 11:00 pm et, Pokemon Platinum Solo-Type Run\r\nFri (28th): No Stream\r\n\r\nwww.twitch.tv/thenickster15\r\n\r\n#Promosky\u001b[38;2;72;70;76m|hsv:0.7:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.183341, "o", "\u001b[0m\u001b[38;2;72;70;76m174035389350|\u001b[38;2;59;22;112mAfD did the best in the eastern part of Germany. It’s a striking geographical divide. What’s driving it?\u001b[38;2;72;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.199977, "o", "\u001b[0m\u001b[38;2;72;70;76m174035389352|\u001b[38;2;51;19;96mYeah this seems like a task for white people because if I have to be in the presence of a Trump voter for longer than 5 minutes there will be one less Trump voter in the future.\u001b[38;2;72;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.204419, "o", "\u001b[0m\u001b[38;2;72;70;76m174035389352|\u001b[38;2;84;31;156mI'm a G-28 representative\u001b[38;2;72;70;76m|hsv:0.7:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.22229, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389353|\u001b[38;2;87;32;161m\"sélection naturelle\"\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.222775, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389353|\u001b[38;2;80;29;148mTag yourself I’m DOUBLE DIABETES\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.273311, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389359|\u001b[38;2;33;11;58mpost.commit.record={\"$type\": \"app.bsky.feed.post\", \"createdAt\": \"2025-02-23T23:38:07.824Z\", \"embed\": {\"$type\": \"app.bsky.embed.images\", \"images\": [{\"alt\": \"\", \"aspectRatio\": {\"height\": 1500, \"width\": 2000}, \"image\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreibcytmm2qcs5td3fmdylmsfz5tbgozzuayodeb4iyiv4gddvrbvcu\"}, \"mimeType\": \"image/jpeg\", \"size\": 552532}}, {\"alt\": \"\", \"aspectRatio\": {\"height\": 1500, \"width\": 2000}, \"image\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreifm6kmsinben6uvg7y3wwepd2s6hmrinauiqwexy233jz527qiewa\"}, \"mimeType\": \"image/jpeg\", \"size\": 516354}}]}, \"langs\": [\"de\"], \"text\": \"\"}\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.2 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.290819, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389361|\u001b[38;2;61;21;105mStarting HRT in one month M➡️F 🏳️⚧️ freshly shaved and showered 🧼 \r\nonlyfans.com/therealonlyf...\r\n\r\n#trans #transgirl #lingerie #nopads\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.294827, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389361|\u001b[38;2;79;27;136mHow was that not a wreck? 🤯 #NASCAR #Ambetter400\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.300198, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389362|\u001b[38;2;61;20;104mI think it has some weird link to masculinity or something, like this just sounds like a repackaged \"the soy is ruining men\" arguement\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.301291, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389362|\u001b[38;2;76;26;131mWill he actually go spend time there, or stay in Florida.\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.30778, "o", "\u001b[0m\u001b[38;2;78;75;82m174035389363|\u001b[38;2;121;41;205mNoice\u001b[38;2;78;75;82m|hsv:0.7:0.8:0.8 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.309207, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389363|\u001b[38;2;67;22;113mWho has a list of all the #alt gov accounts? Can you post them on here? Please? I want to follow all.\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.310068, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389363|\u001b[38;2;92;31;156mThis is brilliant. 🙌🏻🙌🏻🙌🏻\u001b[38;2;73;70;76m|hsv:0.7:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.375792, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389369|\u001b[38;2;102;33;166mジュリオさんかっこいいよねぇぇぇぇ💓\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.376119, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389370|\u001b[38;2;91;29;146mFrank, stay safe and keep fighting.\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.388231, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389371|\u001b[38;2;61;19;97mI thought they played Liza Minnelli's' version after a loss and Frank's after a W? I'm not saying anything, The Sawx playing Sweet Caroline at the break is the worst...\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.394489, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389371|\u001b[38;2;79;25;126mI gotta start getting up early enough to go to the Farmer’s Market\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.396524, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389372|\u001b[38;2;68;21;108mIt would be such a shame using that email to sign up for every newsletter/distribution list/spam account on the internet\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.397304, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389372|\u001b[38;2;74;23;117mGod all the time. Then again it's a thought that's crossing my mind basically 24/7 so...\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.405773, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389373|\u001b[38;2;53;16;84mIn 2013, the V-Day movement, which called for an end to violence against women, staged its “One Billion Rising” flash-mob dance on Valentine’s Day. The one billion represents the one in three girls and women in the world who would experience violence or rape \u001b[38;2;73;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.412604, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389373|\u001b[38;2;76;23;120m{\"did\": \"did:plc:ra3xxsnnx3obv5zemcaixmbt\", \"time_us\": 1740353893737742, \"kind\": \"identity\", \"identity\": {\"did\": \"did:plc:ra3xxsnnx3obv5zemcaixmbt\", \"handle\": \"jwb149.bsky.social\", \"seq\": 5542444049, \"time\": \"2025-02-23T23:38:13.516Z\"}}\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.5 type:None kind:identity -- no post commit\u001b[0m\r\n"]
|
||||
[25.47051, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389379|\u001b[38;2;71;21;107mOh wow who could have predicted this?? \r\n\r\n(Besides every journalist and every single person in his replies for days I mean.)\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.47176, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389379|\u001b[38;2;105;31;158mThey're so beautiful...\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.47732, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389379|\u001b[38;2;65;19;98mYou do not have to give them the benefit of doubt. As someone noted above the thread, Popehat's Rule of Goats applies, and another noted the analogy of the Nazi bar.\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.478908, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389380|\u001b[38;2;80;23;120m{\"did\": \"did:plc:ra3xxsnnx3obv5zemcaixmbt\", \"time_us\": 1740353893802421, \"kind\": \"account\", \"account\": {\"active\": true, \"did\": \"did:plc:ra3xxsnnx3obv5zemcaixmbt\", \"seq\": 5542444068, \"time\": \"2025-02-23T23:38:13.517Z\"}}\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.5 type:None kind:account -- no post commit\u001b[0m\r\n"]
|
||||
[25.484002, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389380|\u001b[38;2;56;16;84mおはこさっ🕊️✨\r\n連休ラストの月曜日❣まだまだのんびりできるよっ🍵✨\r\n\r\n昨夜は #DbD のカスタム大会の様子をのぞかせて頂いてました😆\r\nいろんなタイプのプレイヤーさんがいてずっと楽しかった…!\r\n企画運営本当にお疲れ様&感謝ですっ🥰\r\n\r\n今日もあなたにとっていい一日になりますように🥰✨\r\n\r\n※素敵素材作品はBOOTHから💕\r\n※ ろべるたさまをぜひチェック✅\r\n☞ booth.pm/ja/items/662...\r\n\r\n#おはようVtuber\r\n#おはようBluesky\r\n#Twitch配信者\r\n\r\n⚠️画像はGlaze処理済です⚠️\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.485449, "o", "\u001b[0m\u001b[38;2;73;70;76m174035389380|\u001b[38;2;99;29;148mSure. But Trump Bumpi would not.\u001b[38;2;73;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.492578, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389381|\u001b[38;2;95;28;141m4 to go, Tomari and Dia are side-by-side!\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.511149, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389383|\u001b[38;2;57;16;84mHello its me again! I wanna stay at bluesky but theres no one to interact with. So lets be moots 🫡\r\n\r\n• Kaz he/him\r\n\r\n• F1\r\n• MotoGP\r\n• Anime\r\n• Gaming\r\n• Politics\r\n• Football\r\n• JRPG\r\n• Valorant / VCT\r\n• Indie Games\r\n\r\n ♡+↻ to be mutuals!! \r\n\r\n#promosky #moothunt #moothunting\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.572886, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389389|\u001b[38;2;99;27;138mNecesito un podcast de Lilu explicando cosas\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.57853, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389390|\u001b[38;2;57;16;80mThe BSW is currently at 5.034%. With Germany’s 5% threshold,it’s still uncertain whether they’ll make it into parliament.\r\n\r\n#btw25 in Boston: The timezone difference makes staying awake easy—esp in such great company @isabelmhabicht.bsky.social @tobiaswille.bsky.social @lennartschuermann.bsky.social\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.588155, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389391|\u001b[38;2;107;29;148mBy our powers combined he is....\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.591555, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389391|\u001b[38;2;133;36;184mLETS GOOOO\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.596676, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389392|\u001b[38;2;63;17;86mIt does not even matter if evil is what the people voted for.\r\n(There is significant reason to suspect interference in the democratic process, but that's beside the point.)\r\nStop the evil.\r\nEvil must be stopped, however many people vote for it.\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.598853, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389392|\u001b[38;2;94;25;129mScreaming crying THROWING UP did you read the latest chapter\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.614232, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389393|\u001b[38;2;87;23;119minvestigation.\r\nhttps://sethabramson.substack.com/p/breaking-major-update-on-january\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.622936, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389394|\u001b[38;2;125;33;170m@indivisible.org\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.687046, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389401|\u001b[38;2;83;21;108mHad to laugh at the ‘Lutsch die Wurst’…. Didn’t get it at first and I am a native German speaker 🙈… but then I got it…\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.688602, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389401|\u001b[38;2;85;22;110momg it’s turning out REALLY GOOOOD! so excited to share once it’s done!! (and once the customer approves, hehe)\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.690151, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389401|\u001b[38;2;78;20;102mNot sure if first, or just first remembered, but saw it in the drive inn and haven't been able to sleep with my foot dangling off the bed since.\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.696851, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389402|\u001b[38;2;91;23;118m@marcguggenheim.bsky.social here's a video you should watch.\r\nyoutu.be/Pe_iNhaLUo8?...\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.699264, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389402|\u001b[38;2;92;23;120m{\"did\": \"did:plc:bynluuqgk4js6m2zyge7nulk\", \"time_us\": 1740353894024631, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvu36zr2q\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liuugjfis22a\"}}\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.706468, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389403|\u001b[38;2;62;16;80mIt took a while, until I finished my #LandRover #Defender90 - the #SWB of the #Defender), due to the wide trim (& price!) differences.\r\n\r\nFull-painted in #Tasman #Blue (incl. roof & spare wheel cover), Country- & Winter-pack, fog lights, tinted windows, black headliner & 20\"-rims named #Style5098.\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.716168, "o", "\u001b[0m\u001b[38;2;74;70;76m174035389403|\u001b[38;2;109;28;140mSophie is looking beautiful in the dress 😍\u001b[38;2;74;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.773719, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389409|\u001b[38;2;65;16;80mCome on! Why the anger from white evangelicals? You voted for the convicted Felon & Fraud knowing he is a con. He has lied throughout his life & only has self interest. He is going to use the next 4 years to enrich himself & oligarchs by betraying the people that voted for him. No surprises!\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.783215, "o", "\u001b[0m\u001b[38;2;80;75;82m174035389410|\u001b[38;2;166;41;205m#boob\u001b[38;2;80;75;82m|hsv:0.8:0.8:0.8 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.884097, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389420|\u001b[38;2;81;18;94mI guess I’m at the age where I’m being invited to an insane amount of weddings?!!! I have 4 all back to back… 2 right after AnimeNYC and Dragon Con 😭😭😭 what a summer… In different states 🤡\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.894715, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389421|\u001b[38;2;118;27;137m#これを見た人は城壁か石垣をあげてください\r\nキャラの方が目立ってしまっててすみません(滝汗)\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.971804, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389429|\u001b[38;2;153;33;170mELA VAAAAAIIIIII\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.972657, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389429|\u001b[38;2;72;16;80mFor those following at home, three new parts have been added to #ComplianceTheNovel\r\n\r\nPotential for Trouble\r\ntransparency in business transactions is essential to trust\r\nBlurred Lines\r\n\r\nI’m starting to think that Janice isn’t good for Lena. I’ll see how this goes\r\n\r\n#Writers #QueerWriters #QueerStories\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.97383, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389429|\u001b[38;2;100;22;111mZiad Medoukh de Gaza : « Ici, c’est notre terre, nous ne partirons pas »\r\n\r\neuropalestine.com/2025/02/23/z...\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.975192, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389430|\u001b[38;2;120;26;132mブルスカって誕生日機能どこかにあるんかな!?\r\n\r\nイェア、お誕生日です 風船わっていってね🎈⸒⸒🎀💕⟡.·*.\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.983492, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389430|\u001b[38;2;87;19;96mWhy do I suspect a hard security break between the US & Europe ends with Europe mildly infringing on some contractual agreements to produce certain American components themselves\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.987839, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389431|\u001b[38;2;170;37;187mLove him.\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[25.995767, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389432|\u001b[38;2;128;28;140mi'm heading to bed. college tomorrow. ugh.\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.000568, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389432|\u001b[38;2;149;32;163mThat gotta hurt 😳🫣😜😝\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.012935, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389433|\u001b[38;2;107;23;117mPaul, I never say it was. I said look at the whole picture, not just the top 2 positions.\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.017377, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389434|\u001b[38;2;139;30;150mEu conheço todas essas músicas\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.020615, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389434|\u001b[38;2;105;22;113mWould love to see you in the chat Family!!!\r\n\r\nPlaying with viewers all day!!!!\r\n\r\ntwitch.tv/goozievibes\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.021709, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389434|\u001b[38;2;127;27;137mSlow Horses #SlowHorses\r\n\r\nSAG Awards #SAGAwards\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.028054, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389435|\u001b[38;2;130;28;140mDid you watch #MyLadyJane and #MaxtonHall?\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.029235, "o", "\u001b[0m\u001b[38;2;75;70;76m174035389435|\u001b[38;2;127;27;137mSeems that my new SSD a dud. That sucks.......\u001b[38;2;75;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.070981, "o", "\u001b[0m\u001b[38;2;88;81;88m174035389439|\u001b[38;2;209;44;221m🤣🤣🤣\u001b[38;2;88;81;88m|hsv:0.8:0.8:0.9 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.071286, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389439|\u001b[38;2;136;28;143mThat is what it is 😭 I just improvised\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.088901, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389441|\u001b[38;2;114;23;120m{\"did\": \"did:plc:5nhr4z5fbv4o6whoebivgij6\", \"time_us\": 1740353894413077, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvudunl2u\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liuyutmgek2z\"}}\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.101563, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389442|\u001b[38;2;138;28;143mwww.nationalreview.com/news/msnbc-c...\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.107393, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389442|\u001b[38;2;69;14;72mpost.commit.record={\"$type\": \"app.bsky.feed.post\", \"createdAt\": \"2025-02-23T23:38:11.861Z\", \"embed\": {\"$type\": \"app.bsky.embed.images\", \"images\": [{\"alt\": \"\", \"aspectRatio\": {\"height\": 1170, \"width\": 1170}, \"image\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreiblpohyxvt4xpioe4oahfunmlns7qnd7aqdzmlnh6u5bnthy32dy4\"}, \"mimeType\": \"image/jpeg\", \"size\": 253640}}]}, \"langs\": [\"en\"], \"text\": \"\"}\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.109137, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389443|\u001b[38;2;117;24;121m🏆SAG AWARDS🏆\r\n\r\nMás fotos de Selena Gómez en la alfombra roja de los #SAGAwards\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.170755, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389449|\u001b[38;2;119;23;120m{\"did\": \"did:plc:xzc3evaczlqxxgvz2q6skghf\", \"time_us\": 1740353894495023, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvuhbeg2h\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liuyluuw5s2t\"}}\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.179071, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389450|\u001b[38;2;122;24;122mAh ouais, effectivement.\r\nJe ne sais pas ce que j'ai fichu la première fois 😅\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.192706, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389451|\u001b[38;2;146;29;145mwww.sfchronicle.com/bayarea/arti...\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.194688, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389451|\u001b[38;2;128;25;127mクロリンデが出てきたけど、やっぱりアルレッキーノの武器じゃなくてクロリンデ回した方がよかったかな…………などとも思いましたね\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.196989, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389452|\u001b[38;2;89;17;88mTo brighten up your timeline, here's a picture from October 5 a section of Boston Harbor.\r\nFellow federal employees, we will get through this together. Please reach out if you want or need to chat. I'm always willing to talk.\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.198984, "o", "\u001b[0m\u001b[38;2;88;81;88m174035389452|\u001b[38;2;221;44;219mYup\u001b[38;2;88;81;88m|hsv:0.8:0.8:0.9 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.203756, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389452|\u001b[38;2;87;17;87mBut also Tron is the ONLY '80s Disney movie (not counting Who Framed Roger Rabbit, which isn't wholly theirs, or The Little Mermaid) that found A Fanbase with the \"geeky\" crowd, A Fanbase that may be small but constantly harps on it.\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.207824, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389453|\u001b[38;2;166;33;164mSuch a great game!\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.270324, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389459|\u001b[38;2;106;21;101mI LITERALLY just said this. If the other side even looks at another Avs player funny, Wood is on his way to rip your head off. ♥️\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.308251, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389463|\u001b[38;2;174;34;163mWith my nieces\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.309263, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389463|\u001b[38;2;152;30;143mDoes that make Musk a Queen?\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.31097, "o", "\u001b[0m\u001b[38;2;76;70;76m174035389463|\u001b[38;2;106;21;99mLots of room for over thinking and self doubt. And also lots of emphasis on noticing when something don't feel good. Lol. Yours?\u001b[38;2;76;70;76m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.328474, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389465|\u001b[38;2;117;23;109mYeah, just some guy in a car. I have no idea. It did not fill me with The Good Feelings.\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.333366, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389465|\u001b[38;2;106;21;98m#NowPlaying\r\n🕥 10:37 am\r\n\r\n🎵 2008\r\n🧑🎤 Rex Orange County\r\n💿 The Alexander Technique\r\n\r\n🎧 Apple Music / Spotify / YouTube Music\r\n\r\n📝 Lyrics\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.338192, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389466|\u001b[38;2;112;22;104mOpening Celebration - Construction style\r\n\r\n#architecture #construction #photography #texas #work #jobsite\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.339426, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389466|\u001b[38;2;108;21;100mOh bitte Welt… lass die 0,007% weiterhin fehlen, es wäre so schön, weder Lindner NOCH Wagenknecht ertragen zu müssen 😭❤️\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.350502, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389467|\u001b[38;2;181;36;166m#DefundMusk\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.353061, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389467|\u001b[38;2;171;34;158mFading fast 🫠🫠🫠\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.354151, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389467|\u001b[38;2;146;29;135m出社成功おめでとうございます🍙🎉\r\n休みの日はゆっくりしてくださいね😊\u001b[38;2;76;70;75m|hsv:0.8:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.355905, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389468|\u001b[38;2;139;27;127mもるぺこかわいい〜\r\nきーらさんの描くpkmnって生きてるって感じがする。ほんとにスゴイ\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.374125, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389469|\u001b[38;2;140;28;127mI just emailed my progress report to Elon.\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.393465, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389471|\u001b[38;2;153;30;138mI like the sleepy time tea!\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.401091, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389472|\u001b[38;2;161;32;144m園田智代子さんお誕生日おめでとうございます\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.417707, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389474|\u001b[38;2;90;18;80mIt'll probably burn up in the atmosphere and by the time it hits earth it'll be no bigger than an Olympic sized winning pool potentially killing hundreds of thousands.\r\n\r\nMy god, I really underestimated this thing\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.423549, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389474|\u001b[38;2;147;29;131mwww.instagram.com/reel/DGbvDxj...\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.47262, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389479|\u001b[38;2;138;27;120mThis bunny got that bark and also that bite~\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.47935, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389480|\u001b[38;2;153;30;132mHah!\r\nI'm a mail carrier too\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.491834, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389481|\u001b[38;2;181;36;155mMic drop…..\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.500611, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389482|\u001b[38;2;135;27;115mLook at us, hijacking Vasco's post to trauma dump\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.570674, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389489|\u001b[38;2;86;17;70mI would like to do playthroughs of both the Yakuza series and KH series cause I love them so much. And hopefully Fields of Mistiria will be in 1.0 cause we can answer the eternal question: can a humanoid jellyfish farmer and a dragon fall in love?\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.572995, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389489|\u001b[38;2;109;21;89mThis is what peace actually looks like: a cogent, multi-layered strategic approach to defanging violent extremism.\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.573988, "o", "\u001b[0m\u001b[38;2;76;70;75m174035389489|\u001b[38;2;143;28;117m#ttgプラス\r\n#第夢人格\r\n大遅刻🤎🍫 𝐕𝐚𝐥𝐞𝐧𝐭𝐢𝐧𝐞🤍🍫\r\nりちゃと差分\u001b[38;2;76;70;75m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.603497, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389492|\u001b[38;2;84;16;67mGerman election results explained in graphics.\r\nVoters turned out in record numbers for the German election. Here’s a look in charts at the wins and losses, seats in parliament, possible coalition outcomes and voter demographics.\r\n#cdnpoli\r\nwww.dw.com/en/german-el...\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.687816, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389501|\u001b[38;2;120;23;91m{\"did\": \"did:plc:mqfh3o3sqey23dur3tjijkh2\", \"time_us\": 1740353895011722, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvuxm6y2u\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liuysv3k2c2e\"}}\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.690778, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389501|\u001b[38;2;191;38;145mZo goed!\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.8 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.711352, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389503|\u001b[38;2;50;10;37mpost.commit.record={\"$type\": \"app.bsky.feed.post\", \"createdAt\": \"2025-02-23T23:38:14.239Z\", \"embed\": {\"$type\": \"app.bsky.embed.external\", \"external\": {\"description\": \"\\u2b50\\u2b50\\u2b50\\u2b50\\u2b50\", \"thumb\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreiasippvgnxexs3vsdpn2lalgrrpv5anxrfxtecrnycw7rzrhdpqly\"}, \"mimeType\": \"image/jpeg\", \"size\": 770670}, \"title\": \"Anti Trump T-shirt\", \"uri\": \"https://tinyurl.com/3nmcfuu3\"}}, \"langs\": [\"en\"], \"reply\": {\"parent\": {\"cid\": \"bafyreifhpg7wrwi45vhpqvx3kgp4kxzzubv6re4bf7qrbrkeccjdcvafhm\", \"uri\": \"at://did:plc:mzmtoehujifw6wpzlz3hdpni/app.bsky.feed.post/3liu4d34bys2k\"}, \"root\": {\"cid\": \"bafyreifhpg7wrwi45vhpqvx3kgp4kxzzubv6re4bf7qrbrkeccjdcvafhm\", \"uri\": \"at://did:plc:mzmtoehujifw6wpzlz3hdpni/app.bsky.feed.post/3liu4d34bys2k\"}}, \"text\": \"\"}\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.2 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.713681, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389503|\u001b[38;2;115;23;86mEu não, vai lá me deixar que nem uma emo depressiva suja de tinta preta enquanto vc me abandona\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.715597, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389504|\u001b[38;2;107;21;79mahhh the good old days. Our tech support \"bible\" or manual was like this, with tabs for pc, server, laptop ... was soo cool!\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.721168, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389504|\u001b[38;2;152;30;114mAlways Beautiful ! Mmmmmm! 😈\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.772731, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389509|\u001b[38;2;158;31;114mTHAT'S OUR GIRL #KCBABY\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.787087, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389510|\u001b[38;2;112;22;80mTrump Administration is SLIDING Toward DICTATORSHIP (w/ Robert Kagan) | Bulwark On Sunday\r\n\r\nflip.it/o_a.Aw\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.79018, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389511|\u001b[38;2;138;27;98mseason 7 of american horror story is so funny\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.791657, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389511|\u001b[38;2;97;19;69mGood. Let him rest. If the season ended now we’d have a great chance at keeping our top 6 pick. Get it figured out & go again next year with a much better team at his back.\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.800013, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389512|\u001b[38;2;127;25;89mWould you let me squirt on your face?\r\n\r\nwww.hornywild.com\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.802789, "o", "\u001b[0m\u001b[38;2;76;70;74m174035389512|\u001b[38;2;97;19;69mRead this bc of someone who posted WSJ's analysis that DEI dismantling is only 2% of the cut...this is better read of how LITTLE DOGE decisions minimized national budget\u001b[38;2;76;70;74m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.87973, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389520|\u001b[38;2;85;17;57mGrilled is literally an anarchist and murderer.\r\n\r\nHe also makes a mess of the kitchen and doesn't clean up as he goes. He's more of a \"do the bare minimum as you need, clean up later\" kind of cook.\r\n\r\nHe's also gay af if any phobes are doing the cancelling.\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.89352, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389521|\u001b[38;2;120;23;79m{\"did\": \"did:plc:lryvt45esj6ufucgueeg2xhy\", \"time_us\": 1740353895216225, \"kind\": \"identity\", \"identity\": {\"did\": \"did:plc:lryvt45esj6ufucgueeg2xhy\", \"handle\": \"debrahbradburn.bsky.social\", \"seq\": 5542445076, \"time\": \"2025-02-23T23:38:14.893Z\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:identity -- no post commit\u001b[0m\r\n"]
|
||||
[26.895971, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389522|\u001b[38;2;106;21;70mResolvi tirar o dia off das redes sociais, fazer um detox, descansar a mente do excesso de informações (dormi a tarde inteira)\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.897802, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389522|\u001b[38;2;80;16;53mI do not think a very good idea for Zelensky to step down for Trump and Putin. He has been a great leader, defender, fighter for his people, country, the world. It would be a \"bummer\" for all! NATO has to welcome him and his country. He will legitimize and empower the members. NATO MUST ENGAGE NOW!\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.903067, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389522|\u001b[38;2;120;23;79m{\"did\": \"did:plc:lryvt45esj6ufucgueeg2xhy\", \"time_us\": 1740353895226430, \"kind\": \"account\", \"account\": {\"active\": true, \"did\": \"did:plc:lryvt45esj6ufucgueeg2xhy\", \"seq\": 5542445093, \"time\": \"2025-02-23T23:38:14.893Z\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:account -- no post commit\u001b[0m\r\n"]
|
||||
[26.905773, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389523|\u001b[38;2;100;20;66mIf you ever want to be disabused about how racist or misogynistic Tech is, just get on Blind, where people feel free to post their unfiltered opinions.\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.909048, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389523|\u001b[38;2;100;20;66mKairi’s new ref is finished!!✨\r\n\r\nBeen working on chunks of this bad boy for the last 2 months so I am thrilled it’s finally done!\r\n\r\n#rensstudios #furryart\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.912127, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389523|\u001b[38;2;120;23;78m{\"did\": \"did:plc:osysanrucbhicpr3ooxb6nvz\", \"time_us\": 1740353895236433, \"kind\": \"identity\", \"identity\": {\"did\": \"did:plc:osysanrucbhicpr3ooxb6nvz\", \"handle\": \"lilditzydaydream.bsky.social\", \"seq\": 5542445104, \"time\": \"2025-02-23T23:38:14.979Z\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:identity -- no post commit\u001b[0m\r\n"]
|
||||
[26.970586, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389529|\u001b[38;2;120;23;75m{\"did\": \"did:plc:osysanrucbhicpr3ooxb6nvz\", \"time_us\": 1740353895295197, \"kind\": \"account\", \"account\": {\"active\": true, \"did\": \"did:plc:osysanrucbhicpr3ooxb6nvz\", \"seq\": 5542445128, \"time\": \"2025-02-23T23:38:14.980Z\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:account -- no post commit\u001b[0m\r\n"]
|
||||
[26.981701, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389530|\u001b[38;2;117;23;72mI still do not understand what’s up with his back. It is very different than other riders.\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.983281, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389530|\u001b[38;2;120;23;74m{\"did\": \"did:plc:go7h2jupusyeayihng2a3aey\", \"time_us\": 1740353895309241, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvvbxyo27\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3lid4z4xfec2f\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[26.996927, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389532|\u001b[38;2;146;29;90mMusk deal with him\r\nInvestigate him\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.000965, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389532|\u001b[38;2;115;23;70m@ladyvictorias.bsky.social you are the reason why had killed there self I hope you are happy now\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.002978, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389532|\u001b[38;2;138;27;85mEmotes for MekiVT i did last year \r\n#VgenComm\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.003957, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389532|\u001b[38;2;156;31;95mWhat a damning statement!\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.010131, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389533|\u001b[38;2;120;23;73m{\"did\": \"did:plc:3igkbgw3mupod4lovnftgk6v\", \"time_us\": 1740353895335322, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvvbbsi2t\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liu2ubuzts2r\"}}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.017581, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389534|\u001b[38;2;122;24;74mThe “Suits: L.A.” Reviews Are Not Kind\r\nwww.darkhorizons.com/the-suits-l-...\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.017865, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389534|\u001b[38;2;155;31;93m3月のどの土曜で休み取ろう(上司の顔思い出しながら)\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.02141, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389534|\u001b[38;2;88;17;53mEnd of 1: Pistons 33, Hawks 30. Tobias + second unit kept the offense moving after Cade sat. They’ve gotten a bad whistle so far, called for six fouls. Duren and Ausar each have two. \r\n\r\nCunningham: 11 pts, 4 assts \r\nThompson: 6 pts\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.082153, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389540|\u001b[38;2;104;20;60mThat was then, this is now\r\n\r\nIt would serve the GOP right for Democrats to be gerrymandered into former Republican controlled districts\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.087649, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389541|\u001b[38;2;147;29;84mso cute!! you draw her so cute!!🤍\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.092019, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389541|\u001b[38;2;72;14;41mpost.commit.record={\"$type\": \"app.bsky.feed.post\", \"createdAt\": \"2025-02-23T23:38:12.503Z\", \"embed\": {\"$type\": \"app.bsky.embed.images\", \"images\": [{\"alt\": \"\", \"aspectRatio\": {\"height\": 652, \"width\": 558}, \"image\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreibd7fkg4gp3vcpzwz7m35p7hwrcqkoj5pciqgtyavbpdlftcnxnlm\"}, \"mimeType\": \"image/jpeg\", \"size\": 221167}}]}, \"langs\": [\"en\"], \"text\": \"\"}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.097344, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389542|\u001b[38;2;125;25;70mIsn’t he the cutest little fuck?\r\n@stumblingdownqueen.bsky.social 🔥🔥😈😈\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.098523, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389542|\u001b[38;2;80;16;45mThe democrats seem constituted in such ways as to not serve their left-leaning constituents the way republicans are set up to serve their right-leaning constituents. Politics is big-money sport, and rightwing values better align with oligarchy. Least there’s no more hypocrisy about what America is.\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.107861, "o", "\u001b[0m\u001b[38;2;76;70;73m174035389543|\u001b[38;2;72;14;40mpost.commit.record={\"$type\": \"app.bsky.feed.post\", \"createdAt\": \"2025-02-23T23:38:13.150Z\", \"embed\": {\"$type\": \"app.bsky.embed.images\", \"images\": [{\"alt\": \"\", \"aspectRatio\": {\"height\": 2000, \"width\": 1361}, \"image\": {\"$type\": \"blob\", \"ref\": {\"$link\": \"bafkreidy3qcwsgyrueojeflfzn2dcpuame2im6xb6ubndxjydtznqhm5zy\"}, \"mimeType\": \"image/jpeg\", \"size\": 850426}}]}, \"langs\": [\"en\"], \"text\": \"\"}\u001b[38;2;76;70;73m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.189072, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389551|\u001b[38;2;80;16;42m#NepoBaby\r\n\"Sheahan served as executive director of the South Dakota Republican Party when Louisiana Gov. Jeff Landry chose her to lead the Department of Wildlife & Fisheries in late 2023. She was 26 at the time and did not have a formal background in conservation\"\r\nwww.theadvocate.com/baton_rouge/...\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.192158, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389551|\u001b[38;2;106;21;56mPossibly, but I fear he's a m*g* in Canadian clothing. If he can't say, \"I'm so sorry you're afraid\" he's not invested in me.\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.201207, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389551|\u001b[38;2;164;32;86mHe probably smells.\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.204679, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389552|\u001b[38;2;113;22;59mSe até o trump já cantou vitória. Não há razão nenhuma para que o Paulo Raimundo não o faça também 😏\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.205121, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389552|\u001b[38;2;123;24;63mi had to buy organic celery but otherwise there were really no compromises\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.215508, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389553|\u001b[38;2;80;16;41mWhite House looney tunse are punishing @apnews.com because of the Stylebook!\r\n\r\nAP's \"Stylebook is used by many as a standard ... The influence this Stylebook has acquired has been misused, and at times weaponized, to push a divisive and partisan agenda... I personally observe a multitude of biases.\"\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.216757, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389553|\u001b[38;2;174;34;89mSo fucking hot\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.217175, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389554|\u001b[38;2;156;31;79mhaving a moment over here\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.275059, "o", "\u001b[0m\u001b[38;2;88;81;83m174035389559|\u001b[38;2;221;44;107mYes\u001b[38;2;88;81;83m|hsv:0.9:0.8:0.9 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.277576, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389560|\u001b[38;2;156;31;75mQuarta feira é obrigação\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.2834, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389560|\u001b[38;2;138;27;66mAnyone who names a child X Ae A-XII is insane\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.288549, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389561|\u001b[38;2;168;33;80mWrecking! #NASCAR\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.293504, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389561|\u001b[38;2;104;20;49mI hope you are staying warm! This is pretty. I really dislike dealing with winter weather but I think the aesthetics are wicked cool. 🩵\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.295209, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389561|\u001b[38;2;149;29;71mWHERE did you get that sweater!\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.300105, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389562|\u001b[38;2;135;27;63mIt’s very doily-ish…and makes me think of my Grams\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.308403, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389563|\u001b[38;2;109;21;51m#NowPlaying\r\n🕥 10:37 am\r\n\r\n🎵 Never Know\r\n🧑🎤 The Kooks\r\n💿 Never/Know\r\n\r\n🎧 Apple Music / Spotify / YouTube Music\r\n\r\n📝 Lyrics\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.3167, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389563|\u001b[38;2;122;24;57mThank you so much! I was trying to figure out what that other site/app was!\u001b[38;2;76;70;72m|hsv:0.9:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.38032, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389570|\u001b[38;2;112;22;48mDas war, weil gerade Dresden reingekommen ist...keine Sorge, das wird schon klappen, dass die rausfliegen.\u001b[38;2;76;70;72m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.409236, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389571|\u001b[38;2;122;24;52m“He who acts to save the country from tyranny, does not violate any laws.”\u001b[38;2;76;70;72m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.446789, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389572|\u001b[38;2;81;16;34mFunny how the works doesn’t mind when we’re *checks notes * interfering in every middle eastern country’s sovereignty to guarantee western energy supremacy but sure Germany.\r\n\r\nNOW we’re the bad guys?\r\n\r\nI mean yes I agree we’re the bad guys. But wake tf up you gave us this power.\r\nDIVEST\u001b[38;2;76;70;72m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.446919, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389572|\u001b[38;2;119;23;50mELE TA DEMAIS ❤️ \r\ne depois ainda dividiu com a irmãzinha dele (motivo da felicidade\u001b[38;2;76;70;72m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.447116, "o", "\u001b[0m\u001b[38;2;76;70;72m174035389573|\u001b[38;2;137;27;57mRight? Men have to prove themselves to us now!\u001b[38;2;76;70;72m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.481021, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389580|\u001b[38;2;123;24;47mAlém de desenhista, sou designer, então resolvi criar minha própria logo!\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.493209, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389581|\u001b[38;2;107;21;41mI got me a cute Togekiss card!\r\n\r\nBut togepi will always be one of my favourites <3\r\n\r\n#Pokemon #PokemonTcgPocket #PokemonTcgp\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.499577, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389582|\u001b[38;2;166;33;63m河津桜も咲かず偕楽園の梅も咲かず\r\n\r\n\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.508641, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389583|\u001b[38;2;138;27;51mShe used to sell fake plastic jewelry on TV.\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.518325, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389583|\u001b[38;2;102;20;38m#sicko\r\nhttps://www.thedailybeast.com/pennsylvania-district-attorney-chad-michael-salsman-raped-clients-on-his-office-desk-attorney-general-says\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.520553, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389584|\u001b[38;2;87;17;32mEu adoraria que\r\nLula tirasse a Nízia Trindade da Saúde . Ela tem riqueza nas mãos mas não tem carisma político e com ela \r\no PT joga votos no lixo ! Não adianta espernear e mimimi se ela é técnica . TEM QUE SER POLÍTICA ALÉM DE TÉCNICA\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.587293, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389591|\u001b[38;2;86;17;29mREPUBLICANS INDICTED FOR ILLEGAL RUSSIAN PAYOFFS\r\nJesse Benton, 43, and Doug Wead, 75, were charged in a six-count indictment, are accused of conspiring to violate campaign finance laws, making an illegal foreign contribution & submitting false...\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.599576, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389592|\u001b[38;2;80;16;26mHi Granny Amy, \r\nI have an autistic son. \r\nWe are a different breed of Mom. Most people don’t know how fiercely protective we are. You are a fool to challenge us.\r\nIf anyone ever hurt or inappropriately touched my son I would be in prison. It’s not a deterrent.They are our hearts. \r\nBe Safe Stay Strong💕\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.674117, "o", "\u001b[0m\u001b[38;2;93;86;86m174035389599|\u001b[38;2;233;46;69m어우\u001b[38;2;93;86;86m|hsv:1e+00:0.8:0.9 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.68399, "o", "\u001b[0m\u001b[38;2;76;70;71m174035389600|\u001b[38;2;98;19;28mIt's not really a UK nuclear deterrent if it is dependent on Trump. Trump has demonstrated that he can't be relied on and that he'd rather support Putin than Europe.\u001b[38;2;76;70;71m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.712334, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389603|\u001b[38;2;125;25;35mAlbedo raises a brow.\r\n\r\n\"I feel like I should be concerned for you..\"\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.713919, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389603|\u001b[38;2;88;17;24mHER MAJESTIES PRINCE ANDREW IS FORMALLY SUED FOR SEXUAL ASSAULT\r\nLawsuit formally filed.\r\n#predator #royals #john #sullied @unitedkingdom @SoVeryBritish #heterosexual\r\nhttp://rss.cnn.com/~r/rss/cnn_topstories/~3/gyE28BJ1Rvo/index.html\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.714483, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389603|\u001b[38;2;97;19;27mTRUMP LAWYER PRESSURED PENCE WITH SIX-POINT PLAN\r\nMeticulously detailed election interference roadmap is in direct violation of Federal Law.\r\n18 U.S. Code § 595. #illegal...\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.718437, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389604|\u001b[38;2;109;21;30mIt’s crazy how much better Atlanta is than Daytona and Dega. Just wish they hadn’t used Atlanta to make it happen.\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.781595, "o", "\u001b[0m\u001b[38;2;88;81;81m174035389610|\u001b[38;2;221;44;54m👏👏👏\u001b[38;2;88;81;81m|hsv:1e+00:0.8:0.9 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.78539, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389610|\u001b[38;2;119;23;29mI am not impatient. I was just calling you to see if you got the email I just sent\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.791968, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389611|\u001b[38;2;96;19;23mTRUMP TAX FRAUD PROBE EXPANDS\r\nFind out who next in the Trump constellation will be formally indicted. #TaxFraud #criminals #BankFraud @irs #cheaters #accountability #taxes...\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.797172, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389612|\u001b[38;2;157;31;37m357 BISSELL, BUFFALO, NY\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.803654, "o", "\u001b[0m\u001b[38;2;78;71;72m174035389612|\u001b[38;2;195;39;46mCo/sign\u001b[38;2;78;71;72m|hsv:1e+00:0.8:0.8 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.807475, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389613|\u001b[38;2;87;17;20mIt’s not OPs fault and I didn’t read the article but HOLY FUCKING SHIT we are what four years out from the longest war in this nations history it was absolutely not fucking boring for those of us who got abandoned in that meat grinder\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.807653, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389613|\u001b[38;2;82;16;19mIt seems to me that where Trump is going to have problems is with American culture. Sure, low-info voters might not know much about the constitution, but there are many traditions of freedom in the US — free speech, free assembly, freedom to vote, etc. — that people are used to.\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.810452, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389613|\u001b[38;2;109;21;25mWhat a travesty that he's got to deal with that demented shakedown artist that those morons chose to be their leader.\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.810907, "o", "\u001b[0m\u001b[38;2;78;71;72m174035389613|\u001b[38;2;195;39;45mかいちみたいに\u001b[38;2;78;71;72m|hsv:1e+00:0.8:0.8 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.81683, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389613|\u001b[38;2;88;17;20mI hope so!\r\nIt all depends upon the voters voting Blue!\r\nIt’s up to @dscc.bsky.social @kenmartin.bsky.social @housedemocrats.bsky.social to galvanize the voters in all future elections!\r\nWho will unite the country is the question???\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.818318, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389614|\u001b[38;2;146;29;33mE esse gender gap entre os jovens?\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.823261, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389614|\u001b[38;2;138;27;31mWhere will Joy be going? I will follow her..\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.829912, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389615|\u001b[38;2;105;21;23mwell whaddya know guy who makes career out of normalizing atrocities is also guy who finds fun little things disturbing to his core\u001b[38;2;76;70;70m|hsv:1e+00:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.888959, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389621|\u001b[38;2;131;26;26mMSNBC has more than earned a boycott. This is disgusting.\u001b[38;2;76;70;70m|hsv:0.001:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.901588, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389622|\u001b[38;2;176;36;35mThat's right.\u001b[38;2;76;70;70m|hsv:0.002:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.913746, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389623|\u001b[38;2;90;19;18mGERRYMANDER BILL GAINS MOMENTUM\r\nRedrawing geographical districts to tilt elections should be illegal. #partisan #districts \r\nhttps://thehill.com/homenews/senate/573116-voting-bill-seeks-to-crack-down-on-gerrymandering\u001b[38;2;76;70;70m|hsv:0.003:0.8:0.4 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[27.950233, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389627|\u001b[38;2;144;33;28mbut sure, even on those terms, Batman\u001b[38;2;76;70;70m|hsv:0.007:0.8:0.6 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.006607, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389633|\u001b[38;2;127;33;25mI’m 69 years! old, and I’m ready to do whatever is needed. LMK!!!\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.015484, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389633|\u001b[38;2;86;22;17mThe Russians and the Chinese are serious about conflicts. \r\n\r\nThey are not at peace with the world order; they see it as a continuous struggle for resources and global power projection, which will become much harder with more climate warming.\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.3 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.01684, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389634|\u001b[38;2;120;31;23m{\"did\": \"did:plc:yvbjq7gfiz437jiwu7tao3f3\", \"time_us\": 1740353896341900, \"kind\": \"commit\", \"commit\": {\"rev\": \"3liuyvw7sbr26\", \"operation\": \"delete\", \"collection\": \"app.bsky.feed.post\", \"rkey\": \"3liujuui3ic2g\"}}\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.026847, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389635|\u001b[38;2;170;45;33mThanks Ames 🥹🥹🫶🫶\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.027161, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389635|\u001b[38;2;132;35;26mCBC News Simulcast of Canada as the 51st State Proposal\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.5 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.029355, "o", "\u001b[0m\u001b[38;2;76;70;70m174035389635|\u001b[38;2;176;47;35mProvavelmente\u001b[38;2;76;70;70m|hsv:0.01:0.8:0.7 type:None kind:commit -- no post commit\u001b[0m\r\n"]
|
||||
[28.066039, "o", "^C"]
|
||||
[28.149853, "o", "\u001b[0mdone\u001b[0m\r\n"]
|
||||
[28.150202, "o", "\u001b[0m"]
|
||||
[28.150301, "o", "\u001b[0m"]
|
||||
[28.170929, "o", "\u001b[?2004h$ "]
|
||||
[29.889932, "o", "\u001b[?2004l\r\r\n"]
|
||||
[29.89006, "o", "exit\r\n"]
|
||||
BIN
res/ascii-1.gif
Normal file
BIN
res/ascii-1.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.7 MiB |
372
src/main.rs
Normal file
372
src/main.rs
Normal file
@@ -0,0 +1,372 @@
|
||||
use clap::Parser;
|
||||
use colored::*;
|
||||
use futures_util::StreamExt;
|
||||
use log::{debug, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
use tokio_tungstenite::{connect_async, tungstenite::protocol::Message};
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
struct Post {
|
||||
kind: Option<String>,
|
||||
#[serde(rename = "type")]
|
||||
type_: Option<String>,
|
||||
time_us: Option<u64>,
|
||||
did: Option<String>,
|
||||
commit: Option<CommitData>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
struct CommitData {
|
||||
#[serde(rename = "type")]
|
||||
type_: Option<String>,
|
||||
operation: Option<String>,
|
||||
record: Option<RecordData>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
struct RecordData {
|
||||
text: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(author, version, about, long_about = None)]
|
||||
struct Args {
|
||||
/// Skip certain types (comma-separated)
|
||||
#[arg(long, default_value = "")]
|
||||
skips: String,
|
||||
|
||||
/// Only show certain types (comma-separated)
|
||||
#[arg(long, default_value = "")]
|
||||
only: String,
|
||||
|
||||
/// Commit type filters (+include,-skip format)
|
||||
#[arg(long, default_value = "")]
|
||||
cfilters: String,
|
||||
|
||||
/// Text filters (+include,-skip format)
|
||||
#[arg(long, default_value = "")]
|
||||
filters: String,
|
||||
|
||||
/// Stop after N posts
|
||||
#[arg(long)]
|
||||
count: Option<usize>,
|
||||
}
|
||||
|
||||
struct BlueskyFirehosePrinter;
|
||||
|
||||
impl BlueskyFirehosePrinter {
|
||||
fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
|
||||
fn hsv_to_rgb(h: f64, s: f64, v: f64) -> (u8, u8, u8) {
|
||||
let c = v * s;
|
||||
let x = c * (1.0 - ((h / 60.0) % 2.0 - 1.0).abs());
|
||||
let m = v - c;
|
||||
|
||||
let (r, g, b) = if h < 60.0 {
|
||||
(c, x, 0.0)
|
||||
} else if h < 120.0 {
|
||||
(x, c, 0.0)
|
||||
} else if h < 180.0 {
|
||||
(0.0, c, x)
|
||||
} else if h < 240.0 {
|
||||
(0.0, x, c)
|
||||
} else if h < 300.0 {
|
||||
(x, 0.0, c)
|
||||
} else {
|
||||
(c, 0.0, x)
|
||||
};
|
||||
|
||||
(
|
||||
((r + m) * 255.0) as u8,
|
||||
((g + m) * 255.0) as u8,
|
||||
((b + m) * 255.0) as u8,
|
||||
)
|
||||
}
|
||||
|
||||
fn create_color_from_hsv(h: f64, s: f64, v: f64) -> colored::Color {
|
||||
let (r, g, b) = Self::hsv_to_rgb(h, s, v);
|
||||
colored::Color::TrueColor { r, g, b }
|
||||
}
|
||||
|
||||
fn extract_post_text(&self, post: &Post) -> String {
|
||||
if let Some(ref commit) = post.commit {
|
||||
if let Some(ref record) = commit.record {
|
||||
if let Some(ref text) = record.text {
|
||||
return text.chars().take(200).collect();
|
||||
}
|
||||
}
|
||||
}
|
||||
format!("{:?}", post)
|
||||
}
|
||||
|
||||
async fn connect_and_print(
|
||||
&self,
|
||||
websocket_url: &str,
|
||||
skips: &[String],
|
||||
onlys: &[String],
|
||||
count: Option<usize>,
|
||||
cfilters: &HashMap<String, Vec<String>>,
|
||||
fkeeps: &[String],
|
||||
fdrops: &[String],
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let url = url::Url::parse(websocket_url)?;
|
||||
let (ws_stream, _) = connect_async(url).await?;
|
||||
|
||||
println!("Connected to {}", websocket_url);
|
||||
|
||||
let (mut _write, mut read) = ws_stream.split();
|
||||
let mut n = 0;
|
||||
|
||||
while let Some(msg) = read.next().await {
|
||||
match msg {
|
||||
Ok(Message::Text(text)) => {
|
||||
match serde_json::from_str::<Post>(&text) {
|
||||
Ok(mut post) => {
|
||||
// Handle missing fields
|
||||
if post.kind.is_none() {
|
||||
post.kind = post.type_.clone();
|
||||
}
|
||||
|
||||
// Apply filters
|
||||
if !onlys.is_empty() {
|
||||
if let Some(ref kind) = post.kind {
|
||||
if !onlys.contains(kind) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(ref kind) = post.kind {
|
||||
if skips.contains(kind) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
let ts = post.time_us.unwrap_or(0) / 10_000;
|
||||
|
||||
// Generate HSV color based on timestamp
|
||||
let h = ((ts as f64 / 4.0) % 255.0) / 255.0 * 360.0;
|
||||
let mut s = 0.8;
|
||||
let mut v = 0.8;
|
||||
|
||||
let mut text = String::new();
|
||||
|
||||
// Handle commit type filtering and text extraction
|
||||
if post.kind.as_deref() == Some("commit") {
|
||||
if let Some(ref commit) = post.commit {
|
||||
if let Some(ref commit_type) = commit.type_ {
|
||||
// Apply commit type filters
|
||||
if let Some(excludes) = cfilters.get("-") {
|
||||
if excludes.iter().any(|w| commit_type.contains(w)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if let Some(includes) = cfilters.get("+") {
|
||||
if !includes.iter().any(|w| commit_type.contains(w)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(ref record) = commit.record {
|
||||
if let Some(ref record_text) = record.text {
|
||||
// Apply text filters
|
||||
if !fdrops.is_empty() {
|
||||
if fdrops.iter().any(|w| record_text.contains(w)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if !fkeeps.is_empty() {
|
||||
if !fkeeps.iter().any(|w| record_text.contains(w)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
text = record_text.clone();
|
||||
// Adjust brightness based on text length
|
||||
v = 1.0
|
||||
- (text.len() as f64)
|
||||
.ln()
|
||||
.min(16.0 * 256.0_f64.ln())
|
||||
/ (16.0 * 256.0_f64.ln());
|
||||
} else {
|
||||
text = format!("commit.record={:?}", record);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
text = self.extract_post_text(&post);
|
||||
s = 0.8;
|
||||
v = 120.0 / 255.0;
|
||||
}
|
||||
|
||||
// Create colors
|
||||
let text_color = Self::create_color_from_hsv(h, s, v);
|
||||
|
||||
// Info color (dimmed version)
|
||||
let info_s = s * 0.1;
|
||||
let info_v = (v * 0.4).max(0.3);
|
||||
let info_color = Self::create_color_from_hsv(h, info_s, info_v);
|
||||
|
||||
// Print colored output
|
||||
let hsv_str = format!("{:.1}:{:.1}:{:.1}", h / 360.0, s, v);
|
||||
let _post_id = post.did.unwrap_or_else(|| {
|
||||
format!("r:{}", rand::random::<f64>())
|
||||
});
|
||||
|
||||
let type_str = post.type_.as_deref().unwrap_or("None");
|
||||
let kind_str = post.kind.as_deref().unwrap_or("None");
|
||||
|
||||
if post.type_.as_deref() == Some("com") {
|
||||
let commit_type = post
|
||||
.commit
|
||||
.as_ref()
|
||||
.and_then(|c| c.type_.as_deref())
|
||||
.unwrap_or("None");
|
||||
let operation = post
|
||||
.commit
|
||||
.as_ref()
|
||||
.and_then(|c| c.operation.as_deref())
|
||||
.unwrap_or("None");
|
||||
|
||||
println!(
|
||||
"{}{}|type:{}|{}{}{}|hsv:{} type:{} kind:{} commit.type={} operation={}",
|
||||
format!("{}", ts).color(info_color),
|
||||
format!("").color(info_color),
|
||||
type_str.color(info_color),
|
||||
text.color(text_color),
|
||||
format!("").color(info_color),
|
||||
format!("").color(info_color),
|
||||
hsv_str.color(info_color),
|
||||
type_str.color(info_color),
|
||||
kind_str.color(info_color),
|
||||
commit_type.color(info_color),
|
||||
operation.color(info_color)
|
||||
);
|
||||
} else {
|
||||
println!(
|
||||
"{}{}|type:{}|{}{}|hsv:{} type:{} kind:{}",
|
||||
format!("{}", ts).color(info_color),
|
||||
format!("").color(info_color),
|
||||
type_str.color(info_color),
|
||||
text.color(text_color),
|
||||
format!("").color(info_color),
|
||||
hsv_str.color(info_color),
|
||||
type_str.color(info_color),
|
||||
kind_str.color(info_color)
|
||||
);
|
||||
}
|
||||
|
||||
if let Some(max_count) = count {
|
||||
n += 1;
|
||||
if n >= max_count {
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
debug!("JSON decode error: {}", e);
|
||||
println!("err:{}", text);
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(Message::Close(_)) => {
|
||||
println!("WebSocket closed");
|
||||
break;
|
||||
}
|
||||
Err(e) => {
|
||||
warn!("WebSocket error: {}", e);
|
||||
break;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
env_logger::init();
|
||||
|
||||
let args = Args::parse();
|
||||
|
||||
// Parse arguments similar to Python version
|
||||
let skips: Vec<String> = if args.skips.is_empty() {
|
||||
vec![]
|
||||
} else {
|
||||
args.skips.split(',').map(|s| s.to_string()).collect()
|
||||
};
|
||||
|
||||
let onlys: Vec<String> = if args.only.is_empty() {
|
||||
vec![]
|
||||
} else {
|
||||
args.only.split(',').map(|s| s.to_string()).collect()
|
||||
};
|
||||
|
||||
// Parse cfilters (+include,-skip format)
|
||||
let mut cfilters = HashMap::new();
|
||||
if !args.cfilters.is_empty() {
|
||||
let mut includes = Vec::new();
|
||||
let mut excludes = Vec::new();
|
||||
|
||||
for filter in args.cfilters.split(',') {
|
||||
if filter.starts_with('+') {
|
||||
includes.push(filter[1..].to_string());
|
||||
} else if filter.starts_with('-') {
|
||||
excludes.push(filter[1..].to_string());
|
||||
}
|
||||
}
|
||||
|
||||
if !includes.is_empty() {
|
||||
cfilters.insert("+".to_string(), includes);
|
||||
}
|
||||
if !excludes.is_empty() {
|
||||
cfilters.insert("-".to_string(), excludes);
|
||||
}
|
||||
}
|
||||
|
||||
// Parse text filters
|
||||
let mut fkeeps = Vec::new();
|
||||
let mut fdrops = Vec::new();
|
||||
|
||||
if !args.filters.is_empty() {
|
||||
for filter in args.filters.split(',') {
|
||||
if filter.starts_with('+') {
|
||||
fkeeps.push(filter[1..].to_string());
|
||||
} else if filter.starts_with('-') {
|
||||
fdrops.push(filter[1..].to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const BLUESKY_FIREHOSE_WS: &str =
|
||||
"wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post";
|
||||
|
||||
let printer = BlueskyFirehosePrinter::new();
|
||||
|
||||
match printer
|
||||
.connect_and_print(
|
||||
BLUESKY_FIREHOSE_WS,
|
||||
&skips,
|
||||
&onlys,
|
||||
args.count,
|
||||
&cfilters,
|
||||
&fkeeps,
|
||||
&fdrops,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(()) => println!("done"),
|
||||
Err(e) => {
|
||||
eprintln!("Error: {}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user