Skip to main content

Teal.fm

Other Uses

teal.fm is a social discovery and web viewing service for scrobbles stored/available on the ATProto network/your repository in a PDS (Personal Data Server).

This Source monitors the teal.fm scrobbles in your PDS and then re-scrobbles discovered tracks to configured clients.

Learn more about how teal.fm scrobbles work in the teal.fm (Client) docs.

Setup

Follow the Setup instructions in the teal.fm (Client) docs to get access to your Bluesky PDS repository and scrobble data.

Configuration

See the teal.fm (Client) configuration for general setup. The main differences for Source configuration:

  • Cannot be setup with ENV config
  • File/AIO config must include "configureAs": "source"

Service Filtering

serviceAllow and serviceDeny are lists that can be used to filter what Plays are scrobbles from teal.fm. These correspond to the base domain of the music service where the Play is from, originally. The values in the list can be a subset of the actual service name (they do not need to be exact matches).

Only one filter can be used at a time. If serviceAllow is configured then serviceDeny will be ignored.

If a Play does not have an associated music service it can be allowed/denied using the special keyword unknown.

If you are unsure what services are being used for your scrobbles you can check this by:

  • use atproto.at to lookup your DID/handle
  • View the Raw Data for the PDS Collection fm.teal.alpha.feed.play
  • Check the musicServiceBaseDomain property for each record
Examples

Allowing only scrobbles from plyr.fm:

tealfm.json
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",

"serviceAllow": ["plyr"],
}
}
]

Deny scrobbles from last.fm:

tealfm.json
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",

"serviceDeny": ["last"],
}
}
]

Allow scrobbles from plyr.fm and unknown services:

tealfm.json
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",

"serviceAllow": ["plyr", "unknown"],
}
}
]

ENV Config Type

Environmental VariableRequired?DefaultDescription
SOURCE_TEALFM_IDENTIFIERYesYour full ATProto handle or DID. For Bluesky account this is like myUser.bsky.social
SOURCE_TEALFM_APP_PWYesBluesky/ATProto network App Password