Der Mastodon-Adventskalender

Do, 1. Dezember 2022, Ralf Hersel

Zugegeben, dieser Artikel kommt etwas spät, wenn es darum geht, einen Adventskalender zu basteln. Da mein Vorschlag sich einfach umsetzen lässt, ist es dennoch nicht zu spät, seinen sozialen Lieben eine Freude in der Adventszeit zu bescheren.

Eigentlich geht es hierbei nicht um Adventskalender, sondern um zeitlich gesteuerte Tröts auf Mastodon. Der Web-Client von Mastodon, und auch die Desktop-Clients unterstützen diese Funktion nicht. Wohl aber der CLI/TUI-Client Toot, über den wir bereits geschrieben haben. Die Bedienung von Toot soll jetzt nicht das Thema sein, sondern nur das Vorgehen, um den Adventskalender zu bauen.

Die Projektseite von Toot enthält keine Informationen über die Installation. Bei Manjaro konnte ich die Anwendung aus dem AUR-Repo installieren. Bei Flathub.org gibt es sie nicht, aber vielleicht in den Repositories eurer Distribution. Nach der Installation meldet man sich bei der eigenen Mastodon-Instanz mit seinem Account an. Das geht so:

toot login

Choose an instance: [Adresse deiner Instanz]
Open link in default browser? [Y/n]Y
Authorization code: blablub
Successfully logged in.

Die CLI-Ausgabe ist stark verkürzt. Wichtig ist diese Meldung:

Bei dieser Authentifizierungsmethode müssen Sie sich bei Ihrer Mastodon-Instanz in Ihrem Browser anmelden, wo Sie aufgefordert werden, den Zugang zu Ihrem Konto zu autorisieren. Wenn Sie dies tun, erhalten Sie einen Autorisierungscode den Sie hier einfügen müssen.

Mit toot whoami könnt ihr nachschauen, wer ihr seid. Die Eingabe von toot zeigt euch eine Liste der wesentlichen Befehle. Um einen Test-Tröt auf euren Account zu schicken, gebt ihr das ein: toot post 'Hallo Welt'. Mit toot tui öffnet man die Ncurses-Umgebung, in der man seine Timelines lesen und darauf reagieren kann.

Kommen wir zum Adventskalender. Die Idee ist, jeden Tag zu einer bestimmten Zeit, einen Toot zu tröten, der eure Liebsten erfreut. Ob der Inhalt aus netten Worten oder schönen Bildern besteht, bleibt euch überlassen. Damit das möglich ist, wird das zeitlich gesteuerte Versenden von Tröts benötigt, welches von Toot unterstützt wird. So geht es:

toot post 'Advent, Advent, ein Lichtlein brennt' --scheduled-at '2022-12-01T10:00:00.000A'
Toot scheduled for: 2022-12-01T09:00:00.000Z

Das zeitlich versetzte Versenden wird durch die Option --scheduled-at ermöglicht. Als Parameter kommt ein UTC-Timestamp zum Einsatz, welcher so formatiert wird:

Spannend ist hierbei der Buchstabe am Ende (A in meinem Beispiel). Das ist der Time Zone Designator, welcher den zeitlichen Versatz zur Standardzeit (UTC) angibt. Z steht für Zulu Time Zone, welche UTC+0 entspricht. A bedeutet Alpha Time Zone, was UTC+1 entspricht, also unsere Zeitzone (Winterzeit). Oben im Code-Block ist zu erkennen, dass Toot die Eingabe akzeptiert und in Zulu Time umgerechnet hat.

Nun steht den Advents-Tröts nichts mehr im Wege. Zu beachten ist noch, dass die Zeit mindestens 5 Minuten in der Zukunft liegen muss. Jetzt könnt ihr in einem Rutsch eure besinnlichen oder lustigen Adventssprüche vom 1. bis 24. Dezember abschicken:

toot post '1. Dezember: Ein Lichtlein brennt' --scheduled-at '2022-12-01T10:00:00.000A'
toot post '2. Dezember: Alle Jahre wieder' --scheduled-at '2022-12-02T10:00:00.000A'
toot post '3. Dezember: Vom Himmel hoch' --scheduled-at '2022-12-03T10:00:00.000A'
usw.

Ihr könnt nicht nur Texte, sondern auch Anhänge, wie Bilder, tröten:

toot post "hello media" --media path/to/image.png --description "Cool image"

Update vom 16.12.2022

Statt sich mit Zeitzonen bei der --scheduled-at Option herumzuschlagen, kann man auch die --scheduled-in Variante wählen. Damit kann man eine menschenlesbare Zeitvorgabe machen:

--scheduled-in SCHEDULED_IN
    Schedule the toot to be posted after a given amount of time. Examples: "1 day", "2 hours 30 minutes", 
    "5 minutes 30 seconds" or any combination of above. Shorthand: "1d", "2h30m", "5m30s". Must be at 
    least 5 minutes.

Quelle: https://toot.readthedocs.io/en/latest/

Tags

Mastodon, Toot, CLI, Adventskalender