more heuristic tweaks
maybe workaround db locking?
improved heuristics (curse the french!); make the error logging code work
bsky.app
feed for Tcl/Tk postsWritten in Tcl, using Jetstream.
You could probably base your own feeds on this. I've tried to make the source code for this relatively straightforward.
Deployed @ https://bsky.app/profile/aleteoryx.me/feed/tclposting.
Makes heavy use of tcllib
and tcltls
, both need to be installed for it to work.
Run main.tcl
with a configured config as the argument.
All paths are resolved relative to the install directory.
This implementation doesn't support did:plc:
feedGenerator IDs because im too lazy.
bin/up.tcl
is a rough carbon copy of the scripts/publishFeedGen.ts
present in
the official example repo.
/bin
- misc scripts/lib
- code used only by /bin
/src
- application code/src/algos
- algorithms, *.tcl
is autoloaded, see src/algos.tcl
for details.src/jetstream.tcl
blocks any repos that appear in the blocked_repos
table.
the following tools exist for moderation:
bin/rmrepo.tcl
will delete all posts by the specified user(s). if -feed
is specified,
only from the passed feed(s). if no feeds are specified, it will also block them.
the -pds
option is used to resolve handles to DIDs. it defaults to bsky.social.bin/rmpost.tcl
will delete all passed posts from the specified feedbin/importlist.tcl
works like rmrepo
, but it pulls from passed moderation lists. flags work the same.bin/updatelists.tcl
calls bin/importlist.tcl
with a hardcoded set of lists.
currently includes ones by @rahaeli.bsky.social, @aleteoryx.me (yours truly), and
@skysentry.bsky.social.bin/addposts.tcl
manually adds a post to a list. it takes args of the form URI ORD ?URI ORD ...?
.
passing -ts
for the ORD
will pull record.createdAt
from the post and use that instead.src/ws.tcl
)?
we get disconnected frequently.
src/jetstream.tcl
solves this with reconnection code, but it doesn't
send a cursor, so posts may get missed.
src/httpd.tcl
is just enough webserver to handle requests, and very
little else. it's unfit for exposure to the public internet. this is
low-prio cause it works fine behind mod_proxy.lib/atpagent.tcl
could be nicer, but I don't feel like
doing codegen.src/httpd.tcl
's API should probably be subcommand-based instead of
token-based, to fit lib/atpagent.tcl