Teal.fm
- To scrobble to an ATProto PDS, create a teal.fm (Client)
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:
- 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
musicServiceBaseDomainproperty for each record
Examples
Allowing only scrobbles from plyr.fm:
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",
"serviceAllow": ["plyr"],
}
}
]
Deny scrobbles from last.fm:
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",
"serviceDeny": ["last"],
}
}
]
Allow scrobbles from plyr.fm and unknown services:
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",
"serviceAllow": ["plyr", "unknown"],
}
}
]
- ENV
- File
- AIO
This is configuration for the ENV Config Type.
| Environmental Variable | Required? | Default | Description |
|---|---|---|---|
SOURCE_TEALFM_IDENTIFIER | Yes | Your full ATProto handle or DID. For Bluesky account this is like myUser.bsky.social | |
SOURCE_TEALFM_APP_PW | Yes | Bluesky/ATProto network App Password |
Config Structure
This displays the structure of the File Configuration for a tealfm type Source with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.
Config Example
This displays an example config file of a tealfm Source File Configuration that adheres to the shown Config Structure.
- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.
Both modes validate that the configuraion is correct. Any errors show up as squiggly lines.
After you finish editing, switch to text and then copy all text to get a completed config.
Config Example Mobile Experience
This displays an example config file of a tealfm Source File Configuration that adheres to the shown Config Structure.
The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.
[
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",
"serviceAllow": [
"plyr"
],
"serviceDeny": [
"last.fm"
]
}
}
]
Config Structure
This displays the structure of the all-in-one (config.json) configuration with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.
Select the tealfm type from the respective sources node below, then expand it.
Config Example
This displays an example config file of a all-in-one (config.json) configuration that includes a tealfm Source that adheres to the shown Config Structure.
- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.
Both modes validate that the configuraion is correct. Any errors show up as squiggly lines.
After you finish editing, switch to text and then copy all text to get a completed config.
Config Example Mobile Experience
This displays an example config file of a all-in-one (config.json) configuration that includes a tealfm Source that adheres to the shown Config Structure.
The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.
{
"sources": [
{
"name": "myTealSource",
"configureAs": "source",
"data": {
"identifier": "alice.bsky.social",
"appPassword": "twog-phu7-4dhe-y4j3",
"serviceAllow": [
"plyr"
],
"serviceDeny": [
"last.fm"
]
},
"type": "tealfm"
}
]
}