Passerelle RSS vers BlueSky

Ce script tourne une fois par heure et reposte les news de https://rezo.net/ vers le compte https://bsky.app/profile/rezo.net

Il utilise 3 éléments:

  • l'URL du flux RSS
  • une variable de stockage de l'état, qu'il faut créer initialement comme let storage_rss_rezo = {} et qui sera mise à jour par le script
  • les secrets du compte (username et mot de passe de l'application)

Il appelle @me.bsky_rss_poll qui lit le flux, vérifie avec l'état s'il y a du nouveau, et au besoin nettoie le post, puis l'envoie avec le script @me.post_to_bsky. Sans oublier de mettre à jour l'état pour le prochain run.

C'est un premier jet. Merci à @steve.krouse pour val.town et à @jordan pour ses scripts que j'ai bidouillés ici.

À faire éventuellement: améliorer la logique; poster vers twitter.

Readme
Runs every 1 hrs
Fork
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { set } from "https://esm.town/v/std/set?v=11";
import process from "node:process";
import { storage_rss_rezo } from "https://esm.town/v/fil/storage_rss_rezo";
import { bsky_rss_poll } from "https://esm.town/v/fil/bsky_rss_poll";
export async function cron_rezo_rss2bsky() {
await bsky_rss_poll(
"https://rezo.net/backend/tout",
storage_rss_rezo,
process.env.REZO_BSKY_USERNAME!,
process.env.REZO_BSKY_PASS!,
);
await set("storage_rss_rezo", storage_rss_rezo);
}
👆 This is a val. Vals are TypeScript snippets of code, written in the browser and run on our servers. Create scheduled functions, email yourself, and persist small pieces of data — all from the browser.