diff --git a/0a.md b/0a.md new file mode 100644 index 00000000..80f847d9 --- /dev/null +++ b/0a.md @@ -0,0 +1,80 @@ +NIP-0a +====== + +Audio Events +--------------- + +`draft` `optional` + +This NIP defines several new event kinds representing different types of audio track. These events +are _parameterized replaceable_ as defined in [NIP-01](./01.md) and deletable per [NIP-09](09.md). + +Unlike a `kind 1` event with audio attached, audio events are intended to be surfaced in an audio-specific context +rather than in a general micro-blogging context. + +The following kinds are defined by this NIP: + +- `31337` represents a music track +- `31338` represents a podcast episode + +The following tags are required: + +- `d` is a unique identifier randomly generated by the client. +- `media` is the url of the media. This SHOULD NOT be read, but is required for backwards compatibility reasons. +- `imeta` is as described in [NIP 92](./92.md). Multiple `imeta` tags MAY be included to provide for different + use cases (e.g. streaming vs download). +- `title` is the title of the audio track +- `subject` is the title of the audio track (deprecated, but required for compatibility) + +The following tags are optional: + +- `i` is an external GUID in the format defined [here](https://github.com/MerryOscar/nips/commit/280eb498e0ac56b8f9356c1b7a88cc8b31579801). +- `c` is the track's value as defined by a given category. +- `website` is an external url to a website related to the track. +- `duration` is the duration of the audio track, in seconds. +- `published_at` is a timestamp representing the track's original publish date. + +Expected categories may include (but are not limited to): + +- `genre` +- `subgenre` +- `artist` +- `record_label` +- `producer` +- `composer` +- `album` +- `track_number` +- `tracks` +- `bpm` +- `year` + +Note that artists, producers, SHOULD be referred to using both a plaintext `c` tag AND a conventional `p` tag when pubkey is available. When doing so, the `p` tag's petname MUST be the same as the `c` tag's value. In this way `c` tags can be used to indicate genre, as well as artist, producer, etc. + +If included, `genre` and `subgenre` SHOULD be based on [this list](https://github.com/wavlake/genre-list). + +`content` SHOULD be summary or description of the audio content. + +Example: + +```json +{ + "id": , + "pubkey": , + "created_at": , + "kind": 31337, + "content": "Chill beats", + "tags": [ + ["d", ""], + ["c", "Pop", "genre"], + ["c", "EDM", "subgenre"], + ["c", "Columbia Records", "record_label"], + ["c", "AC/DC", "artist"], + ["i", "podcast:item:guid:123", "https://fountain.fm/episode/30uEXC25615Ze2ELjY2p"], + ["p", "2a07724d42fd8004b5c97b62ba03b6baf3919f9e8211667039987866997e97ad", "wss://my-relay.com", "AC/DC"], + ["title", "Platinum Robots on the Moon"], + ["subject", "Platinum Robots on the Moon"], + ["published_at", ""], + ["imeta", "url https://example.com/my-track.m3u8", "x ", ...] + ] +} +``` diff --git a/51.md b/51.md index 23d5b999..1348df1f 100644 --- a/51.md +++ b/51.md @@ -54,6 +54,8 @@ Aside from their main identifier, the `"d"` tag, sets can optionally have a `"ti | Kind mute sets | 30007 | mute pubkeys by kinds
`"d"` tag MUST be the kind string | `"p"` (pubkeys) | | Interest sets | 30015 | interest topics represented by a bunch of "hashtags" | `"t"` (hashtags) | | Emoji sets | 30030 | categorized emoji groups | `"emoji"` (see [NIP-30](30.md)) | +| Music Playlist | 30037 | a list of kind `31337` music tracks | `"a"` (kind:31337 music tracks) | +| Podcast Playlist | 30038 | a list of kind `31338` podcast episodes | `"a"` (kind:31338 podcast episodes) | | Release artifact sets | 30063 | groups of files of a software release | `"e"` (kind:1063 [file metadata](94.md) events), `"i"` (application identifier, typically reverse domain notation), `"version"` | ### Deprecated standard lists diff --git a/README.md b/README.md index eb6fd94a..17588dc3 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-07: `window.nostr` capability for web browsers](07.md) - [NIP-08: Handling Mentions](08.md) --- **unrecommended**: deprecated in favor of [NIP-27](27.md) - [NIP-09: Event Deletion Request](09.md) +- [NIP-0a: Audio Tracks](0a.md) - [NIP-10: Conventions for clients' use of `e` and `p` tags in text events](10.md) - [NIP-11: Relay Information Document](11.md) - [NIP-13: Proof of Work](13.md) @@ -213,6 +214,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `30618` | Repository state announcements | [34](34.md) | | `30818` | Wiki article | [54](54.md) | | `30819` | Redirects | [54](54.md) | +| `31337` | Music Track | [0a](0a.md) | +| `31338` | Podcast Episode | [0a](0a.md) | | `31388` | Link Set | [Corny Chat][cornychat-linkset] | | `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] | | `31922` | Date-Based Calendar Event | [52](52.md) |