Compare commits
7 Commits
fef6a893e1
...
7ff480aa65
Author | SHA1 | Date |
---|---|---|
|
7ff480aa65 | |
|
7dec812f99 | |
|
739f3c5263 | |
|
8830525250 | |
|
5605221e65 | |
|
33e68dd769 | |
|
a0a28462f0 |
2
21.md
2
21.md
|
@ -21,7 +21,7 @@ The identifiers that come after are expected to be the same as those defined in
|
||||||
|
|
||||||
### Linking HTML pages to Nostr entities
|
### Linking HTML pages to Nostr entities
|
||||||
|
|
||||||
`<link>` tags with `rel="alternate"` can be used to associate webpages to Nostr events, in cases where the same content is served via the two mediums (for example, a web server that exposes Markdown articles both as HTML pages and as `kind:30023' events served under itself as a relay or through some other relay). For example:
|
`<link>` tags with `rel="alternate"` can be used to associate webpages to Nostr events, in cases where the same content is served via the two mediums (for example, a web server that exposes Markdown articles both as HTML pages and as `kind:30023` events served under itself as a relay or through some other relay). For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
<head>
|
<head>
|
||||||
|
|
8
22.md
8
22.md
|
@ -143,13 +143,13 @@ A comment on a website's url looks like this:
|
||||||
"tags": [
|
"tags": [
|
||||||
// referencing the root url
|
// referencing the root url
|
||||||
["I", "https://abc.com/articles/1"],
|
["I", "https://abc.com/articles/1"],
|
||||||
// the root "kind": for an url, the kind is its domain
|
// the root "kind": for an url
|
||||||
["K", "https://abc.com"],
|
["K", "web"],
|
||||||
|
|
||||||
// the parent reference (same as root for top-level comments)
|
// the parent reference (same as root for top-level comments)
|
||||||
["i", "https://abc.com/articles/1"],
|
["i", "https://abc.com/articles/1"],
|
||||||
// the parent "kind": for an url, the kind is its domain
|
// the parent "kind": for an url
|
||||||
["k", "https://abc.com"]
|
["k", "web"]
|
||||||
]
|
]
|
||||||
// other fields
|
// other fields
|
||||||
}
|
}
|
||||||
|
|
13
24.md
13
24.md
|
@ -8,8 +8,7 @@ Extra metadata fields and tags
|
||||||
|
|
||||||
This NIP keeps track of extra optional fields that can added to events which are not defined anywhere else but have become _de facto_ standards and other minor implementation possibilities that do not deserve their own NIP and do not have a place in other NIPs.
|
This NIP keeps track of extra optional fields that can added to events which are not defined anywhere else but have become _de facto_ standards and other minor implementation possibilities that do not deserve their own NIP and do not have a place in other NIPs.
|
||||||
|
|
||||||
kind 0
|
### kind 0
|
||||||
======
|
|
||||||
|
|
||||||
These are extra fields not specified in NIP-01 that may be present in the stringified JSON of metadata events:
|
These are extra fields not specified in NIP-01 that may be present in the stringified JSON of metadata events:
|
||||||
|
|
||||||
|
@ -19,24 +18,22 @@ These are extra fields not specified in NIP-01 that may be present in the string
|
||||||
- `bot`: a boolean to clarify that the content is entirely or partially the result of automation, such as with chatbots or newsfeeds.
|
- `bot`: a boolean to clarify that the content is entirely or partially the result of automation, such as with chatbots or newsfeeds.
|
||||||
- `birthday`: an object representing the author's birth date. The format is { "year": number, "month": number, "day": number }. Each field MAY be omitted.
|
- `birthday`: an object representing the author's birth date. The format is { "year": number, "month": number, "day": number }. Each field MAY be omitted.
|
||||||
|
|
||||||
### Deprecated fields
|
#### Deprecated fields
|
||||||
|
|
||||||
These are fields that should be ignored or removed when found in the wild:
|
These are fields that should be ignored or removed when found in the wild:
|
||||||
|
|
||||||
- `displayName`: use `display_name` instead.
|
- `displayName`: use `display_name` instead.
|
||||||
- `username`: use `name` instead.
|
- `username`: use `name` instead.
|
||||||
|
|
||||||
kind 3
|
### kind 3
|
||||||
======
|
|
||||||
|
|
||||||
These are extra fields not specified in NIP-02 that may be present in the stringified JSON of follow events:
|
These are extra fields not specified in NIP-02 that may be present in the stringified JSON of follow events:
|
||||||
|
|
||||||
### Deprecated fields
|
#### Deprecated fields
|
||||||
|
|
||||||
- `{<relay-url>: {"read": <true|false>, "write": <true|false>}, ...}`: an object of relays used by a user to read/write. [NIP-65](65.md) should be used instead.
|
- `{<relay-url>: {"read": <true|false>, "write": <true|false>}, ...}`: an object of relays used by a user to read/write. [NIP-65](65.md) should be used instead.
|
||||||
|
|
||||||
tags
|
### tags
|
||||||
====
|
|
||||||
|
|
||||||
These tags may be present in multiple event kinds. Whenever a different meaning is not specified by some more specific NIP, they have the following meanings:
|
These tags may be present in multiple event kinds. Whenever a different meaning is not specified by some more specific NIP, they have the following meanings:
|
||||||
|
|
||||||
|
|
1
73.md
1
73.md
|
@ -20,6 +20,7 @@ There are certain established global content identifiers such as [Book ISBNs](ht
|
||||||
| Geohashes | "geo:`<geohash, lowercase>`" | "geo" |
|
| Geohashes | "geo:`<geohash, lowercase>`" | "geo" |
|
||||||
| Movies | "isan:`<id, without version part>`" | "isan" |
|
| Movies | "isan:`<id, without version part>`" | "isan" |
|
||||||
| Papers | "doi:`<id, lowercase>`" | "doi" |
|
| Papers | "doi:`<id, lowercase>`" | "doi" |
|
||||||
|
| Music pieces | "isrc:`<id, uppercase>`" | "isrc" |
|
||||||
| Hashtags | "#`<topic, lowercase>`" | "#" |
|
| Hashtags | "#`<topic, lowercase>`" | "#" |
|
||||||
| Podcast Feeds | "podcast:guid:`<guid>`" | "podcast:guid" |
|
| Podcast Feeds | "podcast:guid:`<guid>`" | "podcast:guid" |
|
||||||
| Podcast Episodes | "podcast:item:guid:`<guid>`" | "podcast:item:guid" |
|
| Podcast Episodes | "podcast:item:guid:`<guid>`" | "podcast:item:guid" |
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
NIP-F3
|
||||||
|
======
|
||||||
|
|
||||||
|
Scrobbling
|
||||||
|
----------
|
||||||
|
|
||||||
|
`draft` `optional`
|
||||||
|
|
||||||
|
This NIP defines `kind:1073` as a _scrobble_ event. It has the following format:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
{
|
||||||
|
"kind": 1073,
|
||||||
|
"tags": [
|
||||||
|
["i", "isrc:<code>"],
|
||||||
|
["title", "<song title>"],
|
||||||
|
["album", "<song album>", "<optional variant>"],
|
||||||
|
["artist", "<musician or band>", "<optional variant>"]
|
||||||
|
]
|
||||||
|
// other fields...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Metadata
|
||||||
|
|
||||||
|
`"title"`, `"album"` and `"artist"` should always be included, but in case the ISRC code is also included (as it should unless it's too impossible) ISRC can be seen as the authoritative source for all metadata related to the given song, the other tags being just hints.
|
||||||
|
|
||||||
|
### Relays
|
||||||
|
|
||||||
|
Scrobbles should be published to the author's "write" relays (as per [NIP-65](65.md)).
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
Given that Nostr is open it makes no sense to speak of a _global_ "most listened" tracks, for example, as _last.fm_ does.
|
||||||
|
|
||||||
|
It does make sense, however, for clients to display the "most listened" and other stats in the context of individual relays or groups of relays, as long as such relays are gated to a certain community or trusted to not have sybils or spam.
|
||||||
|
|
||||||
|
It also makes sense to display data such as "most listened by your friends", "most listened by friends of friends" and other arbitrary selections.
|
||||||
|
|
||||||
|
The same is true for things like a feed of "recently listened" tracks.
|
||||||
|
|
||||||
|
#### Commenting on tracks
|
||||||
|
|
||||||
|
It makes sense to comment on a track by using a [NIP-22](22.md) with a `"i"` tag containing its ISRC code, as specified in [NIP-73](73.md). That way it's possible to display comments in context with scrobbles on a track page, for example, and whatever else.
|
||||||
|
|
||||||
|
#### Correcting History
|
||||||
|
|
||||||
|
It shouldn't be hard to "edit" an old scrobble by simply deleting it and creating a new scrobble.
|
Loading…
Reference in New Issue