mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-11-09 22:09:06 -05:00
Add audio track NIP
This commit is contained in:
parent
a928d11fb5
commit
213ff32de9
66
0a.md
Normal file
66
0a.md
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
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.
|
||||||
|
|
||||||
|
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": <event_id>,
|
||||||
|
"pubkey": <author_pubkey>,
|
||||||
|
"created_at": <created_at>,
|
||||||
|
"kind": 31337,
|
||||||
|
"content": "Chill beats",
|
||||||
|
"tags": [
|
||||||
|
["d", "<id>"],
|
||||||
|
["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", "<published_at>"],
|
||||||
|
["imeta", "url https://example.com/my-track.m3u8", "x <hash>", ...]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
2
51.md
2
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<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
||||||
| Interest sets | 30015 | interest topics represented by a bunch of "hashtags" | `"t"` (hashtags) |
|
| 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)) |
|
| 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"` |
|
| 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
|
## Deprecated standard lists
|
||||||
|
|
|
@ -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-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-08: Handling Mentions](08.md) --- **unrecommended**: deprecated in favor of [NIP-27](27.md)
|
||||||
- [NIP-09: Event Deletion Request](09.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-10: Conventions for clients' use of `e` and `p` tags in text events](10.md)
|
||||||
- [NIP-11: Relay Information Document](11.md)
|
- [NIP-11: Relay Information Document](11.md)
|
||||||
- [NIP-13: Proof of Work](13.md)
|
- [NIP-13: Proof of Work](13.md)
|
||||||
|
@ -196,6 +197,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
||||||
| `30618` | Repository state announcements | [34](34.md) |
|
| `30618` | Repository state announcements | [34](34.md) |
|
||||||
| `30818` | Wiki article | [54](54.md) |
|
| `30818` | Wiki article | [54](54.md) |
|
||||||
| `30819` | Redirects | [54](54.md) |
|
| `30819` | Redirects | [54](54.md) |
|
||||||
|
| `31337` | Music Track | [0a](0a.md) |
|
||||||
|
| `31338` | Podcast Episode | [0a](0a.md) |
|
||||||
| `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] |
|
| `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] |
|
||||||
| `31922` | Date-Based Calendar Event | [52](52.md) |
|
| `31922` | Date-Based Calendar Event | [52](52.md) |
|
||||||
| `31923` | Time-Based Calendar Event | [52](52.md) |
|
| `31923` | Time-Based Calendar Event | [52](52.md) |
|
||||||
|
|
Loading…
Reference in New Issue
Block a user