Generate "programmatic" lists in Mastodon

Overview

mastodon-list-bot

Oh no, the evil algorithm is back!

A small program to generate "programmatic" lists in Mastodon, as a way to experiment with different kinds of home feeds.

Mastodon's strict chronological timeline favors frequent posters over less frequent ones. In my experience this causes a problem where your feed is dominated by a few hardcore, big-follower-number posters, while you're missing out on content from less frequent posters (such as Twitter holdouts, or your mutuals).

Mastodon's solution to this is lists, but lists require curation and effort to maintain. So what if those lists updated themselves?

Usage

Create an empty list with the name #last_status_at<1w. The program will recognize it by its name, and overwrite its contents with users who haven't posted in a week.

Go to Development in your Mastodon account, and create a new access token.

Export these variables:

export MASTODON_INSTANCE=https://mastodon.social
export MASTODON_TOKEN=...
export RUST_LOG=info

Then, run:

cargo run

Your list is now populated with new accounts. Run this program periodically to update it (this both adds and removes accounts).

All supported lists

Currently supported:

  • #last_status_at<1d -- contains all users which haven't posted in a day or more.
  • #last_status_at<1w -- contains all users which haven't posted in a week or more.
  • #last_status_at<1m -- contains all users which haven't posted in a month or more.
  • #mutuals -- contains all users who you follow and who also follow you.

Variations such as 2d, 3d, 8m are permitted.

List names do not have to match exactly, they only have to end with the specified string. For example, it is permitted to name a list My best friends #mutuals, so that your preferred list name is shown while the "machine-readable configuration" is still there. There can currently however only be one # in the name.

List clauses can not be composed, so creating a list of mutuals who haven't posted in a week is not possible right now.

Future plans

I want to keep experimenting with this on my own account for now, but am looking for ways to expose this as some kind of service to other users.

However, this program hammers the API a lot. At a minimum, there would have to be a way to throttle updates, which currently doesn't exist, and ideally both on a per-user and a per-instance basis.

License

MIT

You might also like...
REC2 (Rusty External Command and Control) is client and server tool allowing auditor to execute command from VirusTotal and Mastodon APIs written in Rust. 🦀
REC2 (Rusty External Command and Control) is client and server tool allowing auditor to execute command from VirusTotal and Mastodon APIs written in Rust. 🦀

Information: REC2 is an old personal project (early 2023) that I didn't continue development on. It's part of a list of projects that helped me to lea

A notebook app integrated with todo lists utility. Developed with Rust, WebAssembly, Yew and Trunk.

Flow.er A notebook app integrated with todo-list utility. Project flow.er is a Rust WASM app running in browser. Taking advantage of Yew and Trunk, it

Tools for managing GitHub block lists

GitHub block list management Octocrabby is a small set of command-line tools and Octocrab extensions that are focused on managing block lists on GitHu

A number of collections, such as linked-lists, binary-trees, or B-Trees are most easily implemented with aliasing pointers.

StaticRc is a safe reference-counted pointer, similar to Rc or Arc, though performing its reference-counting at compile-time rather than run-time, and

A minimalist tool for managing block-lists from the terminal.
A minimalist tool for managing block-lists from the terminal.

Block List A minimalist hosts-based tool for managing block lists and ad-blocking. This project uses the excellent and regularly updated Unified Hosts

Rust library for HTTP authentication. Parses challenge lists, responds to Basic and Digest challenges. Likely to be extended with server support and additional auth schemes.

Rust library for HTTP authentication. Parses challenge lists, responds to Basic and Digest challenges. Likely to be extended with server support and a

Lists Steam applications that have specified a Steam Play compatibility tool

proton-usage Lists Steam applications that have specified a Steam Play compatibility tool. Useful for when you want to remove/uninstall unused compati

suidsnoop is a tool based on eBPF LSM programs that logs whenever a suid binary is executed and implements custom allow/deny lists.

suidsnoop Log suid binaries and enforce per-uid suid policy. suidsnoop is a tool for logging whenever a suid binary is executed on your system and opt

A tool to make grocery lists written in Rust

grusterylist: makes grocery lists, written in Rust grusterylist uses and can add to local libraries of user-added recipes and grocery items to put tog

Learn Rust by writing Entirely Too Many linked lists

Learn Rust by writing Entirely Too Many Linked Lists Read the pretty version at https://rust-unofficial.github.io/too-many-lists/. Building Building r

Parses coin lists according to the coin list standard.

coinlist Parses coin lists according to the coin list standard. License The coinlist crate is licensed under the Apache 2.0 License. Contribution Unle

Windows Linked Lists in idiomatic Rust (LIST_ENTRY, SINGLE_LIST_ENTRY)
Windows Linked Lists in idiomatic Rust (LIST_ENTRY, SINGLE_LIST_ENTRY)

nt-list by Colin Finck [email protected] Provides compatible, type-safe, and idiomatic Rust implementations of the Windows NT Linked Lists, known as

Tudo is a fast and simple CLI tool for managing to-do lists.
Tudo is a fast and simple CLI tool for managing to-do lists.

Tudo is a fast and simple CLI tool for managing to-do lists. With Tudo, you can easily add, remove, clear, and mark tasks as done, all from the command line. Tudo is written in Rust, making it a BLAZINGLY high-performance and efficient tool for staying organized.

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)

Generate beautiful changelogs from your Git commit history

clog-cli A conventional changelog for the rest of us About clog creates a changelog automatically from your local git metadata. See the clogs changelo

Generate CPU FlameGraphs based on DWARF Debug Info

torch A script that glues perf CPU sampling and Brendan Gregg's visualizer to generate FlameGraphs. Requirements Usage Examples License Requirements L

Generate PDF files with JavaScript and WASM (WebAssembly)

WASM-PDF Generates PDF files directly in the browser with JavaScript and WASM (WebAssembly). Idea here is to push all the work involved in creating a

(Read-only) Generate n-grams

N-grams Documentation This crate takes a sequence of tokens and generates an n-gram for it. For more information about n-grams, check wikipedia: https

A tool to generate inbetweens for animated sprites, written in godot-rust
A tool to generate inbetweens for animated sprites, written in godot-rust

Bitmapflow is a tool to help you generate inbetweens for animated sprites. In other words, it makes your animations smoother. It uses optical flow to

Owner
Markus Unterwaditzer
Markus Unterwaditzer
Generate markdown footer links.

WIP Generate markdown footer links.

Arijit Basu 8 Nov 20, 2022
Generate manual pages from mdBooks!

mdbook-man Generate man pages from mdBooks! Usage To use mdbook-man you'll first need to install it with: $ cargo install mdbook-man And add the follo

Wojciech Kępka 22 Oct 6, 2022
Rust crate to generate, manipulate and traverse trees.

SOCAREL Rust crate to generate, manipulate and traverse trees. It provides iterators for eight different traversal algorithms. Add and remove nodes in

Andreu 8 Nov 14, 2021
Generate nginx vhosts for mlcdf/cc-reverve-proxy

nvhosts Generate nginx vhosts given a configuration file. Made to work with mlcdf/cc-reverse-proxy. Usage Usage: nvhosts [-c <config>] [--example] [-V

Maxime Le Conte des Floris 0 Feb 28, 2022
Here are a few cargo-generate templates for use when creating bevy applications

Bevy-template-rs Here are a few cargo-generate templates for use when creating bevy applications. Templates Game This is a template for starting a new

Johnny Tidemand Vestergaard 19 Nov 4, 2022
Ampseer examines reads in fastq format and identifies which multiplex PCR primer set was used to generate the SARS-CoV-2 sequencing library they are read from.

Ampseer examines reads in fastq format and identifies which multiplex PCR primer set was used to generate the SARS-CoV-2 sequencing library they are read from.

New England Biolabs Inc. 7 Nov 2, 2022
Generate permutations & combinations

Pincer Generate permutations and combinations of sets of elements. Inspired by crunch. Usage: Multiple functions are provided with this Rust library.

null 4 Nov 20, 2022
An ActivityPub home server written in Rust, implementing the Mastodon API.

Tafarn An ActivityPub home server written in Rust, implementing the Mastodon API. At present no web UI is provided, the API is the only way to interac

✨ Q (it/its) ✨ 12 Jan 22, 2023
A Telegram bot synchronizes Telegram messages to Mastodon.

tgbot-mastodon-sync A Telegram bot synchronizes Telegram messages to Mastodon. Official hosted account: @mastodon_sync_bot Self-Host 1. Install binary

Sprite 7 Mar 5, 2023
hotsync conduit for Heffalump (palmOS mastodon client)

heffalump conduit and installer hotsync conduit for Heffalump (palmOS mastadon client) installation this crate exports two build targets: the heffalum

null 3 Sep 22, 2023