Attributes
Attributes are the metadata fields of Pipe Bomb. There is no hardcoded schema - every field (track title, album art, genre, BPM, etc.) is defined and populated by a plugin's attribute source.
Attribute types
| Type | Description |
|---|---|
string |
Plain text value |
integer |
Integer number |
decimal |
Floating-point number |
boolean |
True / false |
buffer |
Binary data - used for images (cover art, artist photos) |
An attribute definition specifies its key, type, and whether supportsMultiple values per entity are allowed (e.g., a track can have multiple genres).
Buffer attributes are stored as files in the server's resources directory and referenced by UUID. The frontend expects some buffer attributes to be images but this restriction isn't enforced.
| Entity type | Buffer attributes expected to be images |
|---|---|
| Track | front, back |
| Album | front, back |
| Artist | thumb, background, logo |
| Playlist | thumb |
Attribute sources
An attribute source is a plugin component that reads information about a track/artist/album and returns attribute values. Sources are registered with registerAttributeSource(source).
When the server attributes a track, it calls getTrackAttributeValues(helper) on every registered source in order. The TrackAttributionHelper gives the source access to:
- The keys of attributes already filled by earlier sources (via
getCompletedAttributeKeys()) - not their values, just which keys are done - Track identities (from users/Identifiers)
- File metadata (tags, path, duration)
Sources can use identities from identifiers to look up metadata in an external database (e.g., MusicBrainz, Last.fm).
Re-attribution
Attribute tasks can be run manually from Settings → Tasks:
- Generate Track Attributes
- Generate Artist Attributes
- Generate Album Attributes
These tasks are also available as workflow steps, so you can schedule re-attribution automatically.
Playlist attributes
Playlists have a small fixed set of attributes registered by the server itself: title (string) and thumb (buffer). Plugins can register additional playlist attributes the same way.
The fixed attributes defined the server will eventually go away and be replaced with a basic plugin.
Related pages
- development/Plugin-System — registration overview
- development/Plugin-Development — implementing
AttributeSource - users/Identifiers — identities that attribute sources rely on
- users/Attributes — full type reference (this page)