# Client identifiers in listen data

**URL:** https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632
**Category:** ListenBrainz
**Tags:** listenbrainz
**Created:** [October 7, 2019, 5:44pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632 "2019-10-07T17:44:49Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [October 7, 2019, 5:29pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/1 "2019-10-07T17:29:33Z")

</div>

Sorry, ignore me…

Weird - I post a totally incorrect question in error in a topic I don’t understand, wipe the text out, and now it is a new thread? 🤪😟

I am trying to unsubscribe from all this Listenbrainz stuff and somehow have now ended up with the exact opposite… LOL

/unsubscribed

---

<div class="post-metadata">

### Author: ![Deleted\_Editor\_1409249](https://community.metabrainz.org/user_avatar/community.metabrainz.org/deleted_editor_1409249/32/34467_2.png) [@Deleted\_Editor\_1409249](https://community.metabrainz.org/u/Deleted_Editor_1409249)
#### Post date: [October 7, 2019, 5:44pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/2 "2019-10-07T17:44:49Z")

</div>

“Edit” seems to be a poor choice of word?? Anyway, your comment did make me realise I was sending the component name/version as a user agent but it’s pointless because it’s completely ignored the other end. I guess this is a hangover from me maintaining foo\_musicbrainz where a user agent is absolutely required!

I suppose adding the component name to additonal\_info is a possibility but I’d much rather see something standardised first before I go making things up.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [October 7, 2019, 6:26pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/3 "2019-10-07T18:26:17Z")

</div>

> [@A proper foobar2000 submission component](https://community.metabrainz.org/t/a-proper-foobar2000-submission-component/446404/6):
>
> I suppose adding the component name to additonal\_info is a possibility but I’d much rather see something standardised first before I go making things up.

For the Rhythmbox plugin I added sending a “source” field in the additional data. But this is a bit different. Since Rhythmbox allows not only playback of local files but also from external services like e.g. lastfm or jamendo, the source gets set to this service. I personally find this more interesting then the playback software being used, but of course this also could be sent. I very much would like to see some standardization here an LB making use of this information.

---

<div class="post-metadata">

### Author: ![Freso](https://community.metabrainz.org/user_avatar/community.metabrainz.org/freso/32/25_2.png) [@Freso](https://community.metabrainz.org/u/Freso)
#### Post date: [October 7, 2019, 7:27pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/4 "2019-10-07T19:27:22Z")

</div>

I’ve actually been thinking about this for [my Kodi addon](https://community.metabrainz.org/t/listenbrainz-add-on-for-kodi/422372) too. It would be great if we could come up with some kind of uniform tag or some such to identify clients and client versions.

A `user_agent` key (with a “client/version” and/or “client/version supporting\_library/version …” value) to mirror HTTP requests? Or something more fancy?

---

<div class="post-metadata">

### Author: ![jwheel](https://community.metabrainz.org/user_avatar/community.metabrainz.org/jwheel/32/109103_2.png) [@jwheel](https://community.metabrainz.org/u/jwheel)
#### Post date: [October 8, 2019, 1:27am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/5 "2019-10-08T01:27:09Z")

</div>

I’m fully on board, although with other motivations. It would be awesome for [ListenBrainz.org](http://ListenBrainz.org) to publish basic metrics about popular clients based on what current users are submitting listens with. It could potentially enable a self-discovery mechanism for developers creating third-party software around the ListenBrainz site (or simply, “if you make cool things for LB, we will help you get your cool things out to the world”). 🕶 🌏

> [@Freso](#):
>
> A `user_agent` key (with a “client/version” and/or “client/version supporting\_library/version …” value) to mirror HTTP requests? Or something more fancy?

To enable the self-discovery mechanism described above, including some metadata about the client is useful (along with any API compatibility metadata):

- Client name
- Client home page (i.e. URL)
- Developer name(s) / organization

This gives a LB server more detailed information about clients used by downstream users. It allows a LB server to showcase its most popular clients used to submit to that server. It also could give some insight about who our downstream developers or organizations are.

---

<div class="post-metadata">

### Author: ![alastairp](https://community.metabrainz.org/letter_avatar_proxy/v4/letter/a/b5a626/32.png) [@alastairp](https://community.metabrainz.org/u/alastairp)
#### Post date: [October 8, 2019, 8:16am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/6 "2019-10-08T08:16:39Z")

</div>

I opened a ticket suggesting this a while back - [https://tickets.metabrainz.org/projects/LB/issues/LB-321](https://tickets.metabrainz.org/projects/LB/issues/LB-321)  
I agree that it’d be a good idea. I like @Freso’s suggestion of `user_agent`. Keep in mind that a large amount of data (client name, homepage, developers name, etc, etc) would be added to every listen, and so has the potential to increase the payload size.  
I think it’d be good to also always require a human-readable value that could be shown directly on the LB website, instead of a hard-to-parse browser user-agent style string

---

<div class="post-metadata">

### Author: ![Freso](https://community.metabrainz.org/user_avatar/community.metabrainz.org/freso/32/25_2.png) [@Freso](https://community.metabrainz.org/u/Freso)
#### Post date: [October 8, 2019, 8:56am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/7 "2019-10-08T08:56:55Z")

</div>

> [@alastairp](#):
>
> I think it’d be good to also always require a human-readable value that could be shown directly on the LB website, instead of a hard-to-parse browser user-agent style string

Does that mean you think `user_agent` itself should be directly human readable? Or that clients should submit two values, `user_agent` for machine readability and… `listenbrainz_client`(?) for UI display/human readability?

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [October 8, 2019, 11:26am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/8 "2019-10-08T11:26:53Z")

</div>

Here is the ticket I added for the source idea:

> <https://tickets.metabrainz.org/browse/LB-442>

---

<div class="post-metadata">

### Author: ![alastairp](https://community.metabrainz.org/letter_avatar_proxy/v4/letter/a/b5a626/32.png) [@alastairp](https://community.metabrainz.org/u/alastairp)
#### Post date: [October 8, 2019, 1:02pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/9 "2019-10-08T13:02:56Z")

</div>

> [@Freso](#):
>
> Does that mean you think `user_agent` itself should be directly human readable? Or that clients should submit two values

Good question, I didn’t get that far. Perhaps we could brainstorm a few user-agent strings to see what comes out. Perhaps both can be included in the same value as sort of a “start basic, add more data if you have it”

---

<div class="post-metadata">

### Author: ![zeremy](https://community.metabrainz.org/user_avatar/community.metabrainz.org/zeremy/32/26209_2.png) [@zeremy](https://community.metabrainz.org/u/zeremy)
#### Post date: [October 8, 2019, 4:28pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/10 "2019-10-08T16:28:48Z")

</div>

Just my thoughts…

If the payload size increase is not a problem I would suggest the following data:

- 

```
Client name "user_agent"

```

- 

```
Client home page (i.e. URL) "user_agent_home_url"

```

- 

```
Developer name(s) / organization "user_agent_developer"

```

- 

```
Source "listening_from"

```

- 

```
Player name/package name "player_name"

```

I think that player name would be a useful addition as to populate the database with known combinations of usable clients for specific players, which could be presented on the site [https://listenbrainz.org](https://listenbrainz.org) with links to the developers site.

In addition there will be no need to update the thread of known apps [List of native ListenBrainz API apps](https://community.metabrainz.org/t/list-of-native-listenbrainz-api-apps-and-in-development-apps/342938)

For example Simple Scobbler for Android can be used with multiple players.

foo\_listenbrainz2 or @marc2k3 listenbrainz script is only for foobar2000.

As for Source “listening\_from” I have the same interest as @outsidecontext of where my listens are from.

---

<div class="post-metadata">

### Author: ![UltimateRiff](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ultimateriff/32/47799_2.png) [@UltimateRiff](https://community.metabrainz.org/u/UltimateRiff)
#### Post date: [November 8, 2023, 8:29am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/11 "2023-11-08T08:29:11Z")

</div>

soo, I wanted to [bring this feature up](https://github.com/kawaiiDango/pScrobbler/issues/379) to the PanoScrobbler devs, but I found there’s [no documentation](https://listenbrainz.readthedocs.io/en/latest/search.html?q=listening_from&check_keywords=yes&area=default) for these identifiers… or at least, I couldn’t find any…

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [November 8, 2023, 9:16am UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/12 "2023-11-08T09:16:38Z")

</div>

Client identifiers are documented in [JSON Documentation — ListenBrainz 0.1.0 documentation](https://listenbrainz.readthedocs.io/en/latest/users/json.html)

See also the relevant discussion at [Updates to recommended listen data fields to report clients and track sources](https://community.metabrainz.org/t/updates-to-recommended-listen-data-fields-to-report-clients-and-track-sources/559431)

---

<div class="post-metadata">

### Author: ![UltimateRiff](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ultimateriff/32/47799_2.png) [@UltimateRiff](https://community.metabrainz.org/u/UltimateRiff)
#### Post date: [November 8, 2023, 3:12pm UTC](https://community.metabrainz.org/t/client-identifiers-in-listen-data/446632/13 "2023-11-08T15:12:47Z")

</div>

ah, I see it now~ I blame my late night brain, lol

…and that’s the tread I was looking for too, lol
