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.