now-updater/README.md

3.9 KiB

now-updater

Automatically updates your omg.lol Now page with your latest activity.

Fork of melanie/now-updater with added support for HTML output links, Mastodon, Last.fm, and dynamic URLs.

Demo: dylan.omg.lol/now

How It Works

Fetches content from RSS feeds, JSON feeds, and different services (Letterboxd, Trakt, Mastodon, Last.fm) and updates HTML or markdown links on your Now page. Runs every 3 hours via Forgejo Actions, only updating your page when changes are detected.

Example

Your Now page links will be automatically updated from this:

HTML links (before):

<a href="https://your-blog.com">tktk</a>

Markdown links (before):

[tktk](https://your-blog.com)

to this:

HTML links (after):

<a href="https://your-blog.com/2025/12/my-latest-post">My Latest Post</a>

Markdown links (after):

[My Latest Post](https://your-blog.com/2025/12/my-latest-post)

Setup

  1. Fork this repo
  2. Enable Actions in repo settings
  3. Add Actions variables: OMGLOL_USERNAME (your omg.lol username)
  4. Add Actions secrets: OMGLOL_KEY (your API key), TRAKT_SLURM (optional, see Trakt for details)
  5. Add your sources in config.js

For local development, copy .env.example to .env with your credentials.

Basic Example

Now page template:

I wrote this: [tktk](https://your-blog.com)
I watched this: [tktk](trakt.tv/users/username)

config.js:

export const linkFormat = 'html'

export const items = [
  {
    id: 'blog',
    regex: htmlLinkRegex('your-blog.com'),
    getLatest: async () => getJsonFeedItemTitle('https://your-blog.com/feed.json'),
  },
  {
    id: 'letterboxd',
    regex: htmlLinkRegex('letterboxd.com/username'),
    getLatest: async () => getLetterboxdActivity('username', true), // with image
  },
  {
    id: 'trakt-movie',
    regex: htmlLinkRegex('trakt.tv/users/username'),
    getLatest: async () => getTraktMovie('username', 'your-trakt-id', false), // text only
  },
]

Configuration

Edit config.js to define your content sources. Each item needs:

  • id: identifier for logs
  • regex: pattern to match your link
  • getLatest: async function that fetches and returns latest content

Set linkFormat to 'html' or 'markdown' depending on your Now page format.

Available Functions

  • getRSSItemTitle(feedUrl) - Standard RSS feeds
  • getJsonFeedItemTitle(feedUrl, showImage) - JSON feeds
  • getLetterboxdActivity(username, showImage) - Letterboxd activity
  • getTraktEpisode(username, id, showImage) - Latest TV episode
  • getTraktMovie(username, id, showImage) - Latest movie
  • getTraktEpisodeAndMovie(username, id, showImage) - Latest episode and movie combined
  • getMastodonPost(feedUrl) - Latest non-reply Mastodon post
  • getMalojaScrobble(url) - Latest music scrobble from maloja

Note: showImage (defaults to true) controls whether images/posters are included in the output. Set it to false to show text only.

Trakt

To get your Trakt slurm key, follow these steps:

  1. Go to your History page on Trakt: https://trakt.tv/users/your-username/history
  2. There should be an RSS feed icon on the top right of the page. Click it.
  3. The URL it shows will look something like this: https://trakt.tv/users/crankle/history.atom?slurm=your-slurm-key
  4. Copy the slurm value from the URL and add it as a secret in your Actions settings named TRAKT_SLURM.

There may be a better way to get this key, but this is how I found it.

Credits

Original project by melanie kat. Without her work, this fork would not exist.

Support

Did you find this useful like I did? Melanie asks that you donate to Trans Lifeline or The Trevor Project if you can. I will also add Belong To to that list.