Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Artist Detail Page #961

Open
12 of 35 tasks
metalheim opened this issue Apr 2, 2021 · 26 comments · Fixed by #1287
Open
12 of 35 tasks

Artist Detail Page #961

metalheim opened this issue Apr 2, 2021 · 26 comments · Fixed by #1287

Comments

@metalheim
Copy link
Contributor

metalheim commented Apr 2, 2021

User Story

If a user clicks on an artist, he will just get forwarded to the albums page, with a pre-selected filter for that artist.
A new "artist detail page" as it is present on every other music streaming service would help to navigate and orienting in a big library.
This page usually shows bundled information (Image, description, etc.) about this artist as well as a better overview of the artist's releases.

Updates

The latest release (v.0.4.6) implemented the artist page.
Release (v.0.4.9) added local artist images.

Breakup into sub-features

The solution should be a Page dedicated to displaying everything about one artist ABXY. What I'm thinking about is:

  • Showing an artist image
  • Artist Biography/Info-Text (from existing integration with last.fm)
  • Links to artists page on other popular servicess like
    • last.fm
    • musicbrainz (if files contain MUSICBRAINZ_ALBUMARTISTID)
  • Beeing able to "love" or "unlove" artist
  • Show most popular songs from ABXY
      • navidrome's play count statistics e.g. most-streamed or a simple popularity algorithm
  • Playback controls for the whole artist
    • A button to "Shuffle Play all from Artist"
    • Button for "Play all from this artist"
    • Button "Add to play queue"
    • A button to enqueue songs from the "Artist Radio" (data from last.fm same logic as used for Subsonic API endpoint getSimilarSongs2)
  • List all releases related to the artist ABXY, broken up into releases that:
      • ABXY is included in
      • ABXY == Album-Artist (marked as "Releases"), split up by release types
        • Release Type is "Album"
        • Release Type is "Single"
        • Release Type is "EP"
        • Release Type is "Mixtape"
      • ABXY one of multiple Album-Artists (marked "Collaboration Albums") an example would be "Riding with the King" from "B.B. King" and "Eric Clapton"; This album should be shown at each artists detail pages, if tagged as Album-Artist == "B.B. King null Eric Clapton" [or the equivalent for vorbis tags])
      • ABXY is present on the Album, but != Album-Artist (f.e. compilations, features, etc.) marked "Appears on"
      • Releases ordered by
        • Release Year (ASC)
        • Configurable sort type/order (f.e. sort by year DESC)
  • list all genres (rolled up from tracks)
  • List of playlists that the artist ABXY has at least 1 songs in
  • Show similar/related artists
    • from last.fm or musicbrainz integration
    • from local statistics (other artists that appear on shared albums/compilations/playlists - genre similarity)

Splitting up Artists by Release Type would require to get the data either from Musicbrainz or the "Release Group Type" Tag in the Files: https://musicbrainz.org/doc/Release_Group/Type
"Singles" could be identified by Album SongCount, but thats rather unreliable and its not very well defined what differentiates a "maxi" single from an EP or a short Mixtape.

@metalheim metalheim changed the title Artist Detail Page (based on custom react template) Feature Request: Artist Detail Page (based on custom react template) Apr 2, 2021
@deluan deluan added the web ui label Apr 2, 2021
@deluan
Copy link
Member

deluan commented Apr 2, 2021

Hey @metalheim, thanks for opening this issue. We have discussed in the past this, but never recorded the ideas anywhere.

I know some features (1. 2. and possibly 3.) would make navidrome dependent on the external integrations

This information already exists from the Last.FM/Spotify integrations, we will just have to have an alternative layout for when the user does not (want to) configure the integrations.

Having said this, I don't see this coming any time soon, at least from me, as we have other priorities in the project. If anyone with JS/React/Material-UI skills wants to give it a try, all this information is already available from the App API / Subsonic API, so there's no need to change anything in the backend.

PS: Thanks for the sponsorship, it's really appreciated!

@certuna
Copy link
Contributor

certuna commented Apr 2, 2021

We don’t necessarily have to reinvent the wheel here, looking at Spotify, Emby, Plex, Jellyfin and websites like Allmusic, Discogs and RateYourMusic there’s plenty of good examples, especially for your points 1-4.

Point 5 can probably be expanded to “Release Type”. The artist view would have different sections for Albums, Singles/EP’s, Live, Mixtapes and V/A compilation appearances, a bit like RYM and Spotify have in their artist view, and of course, Roon. This would be awesome, but first Navidrome would have to pull that “release type” metadata from somewhere (mbz, tags), store it in the db, and expose it through the REST API. That’s a a fairly big project in itself.

For the React template for the artist page, using the current Albums Details view as a starting point is probably easiest?

@metalheim
Copy link
Contributor Author

@certuna I'd love the separation into "Release Type". Deezer's Artistpages are a great example of that!

Unfortunately, I'm not aware of a tagging standard for "Release Type". Is there one that I'm missing, or is that data that can be augmented with mbz? I have a lot of mixtapes/bootlegs/singles in my library.

@deluan What happens when a user that doesn't have integrations configured currently queries getArtistInfo? Just a blank response?
We could of course use a placeholder image (generic person icon f.e.) or an album cover of that artist as a fallback.

@deluan
Copy link
Member

deluan commented Apr 3, 2021

getArtistInfo returns a placeholder response, and the current placeholder image is the one provided by Last.FM:
image

For the Release type field, there's a discussion about it in #369

@certuna
Copy link
Contributor

certuna commented Apr 4, 2021

@metalheim there’s a semi-official field for release type, musicbrainz uses it. See https://musicbrainz.org/doc/Release_Group/Type

Picard writes it in the Vorbis field RELEASETYPE and the id3 frame TXXX:Musicbrainz Album Type: https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html

@SteveDinn
Copy link

SteveDinn commented Apr 4, 2021

That field is really interesting. I can't count the number of times audiobook chapters have credit into my random music mixes.

@Rishabh-malhotraa
Copy link
Contributor

I would like to do this, can someone please assign this to me.

@YashJipkate
Copy link
Contributor

@Rishabh-malhotraa you don't need to be assigned. You can start working on it right away.

@Rishabh-malhotraa
Copy link
Contributor

Rishabh-malhotraa commented Apr 9, 2021

@Rishabh-malhotraa you don't need to be assigned. You can start working on it right away.

Okay, it seems like a big task so I I felt its better to assign it to someone so two people don't get stuck trying to solve the same issue

@Dnouv
Copy link
Contributor

Dnouv commented May 17, 2021

@Rishabh-malhotraa, are you still working on this issue?

@Rishabh-malhotraa
Copy link
Contributor

@Rishabh-malhotraa, are you still working on this issue?

No you can go ahead with this, I got COVID last month and then I lost track.

@Dnouv
Copy link
Contributor

Dnouv commented May 17, 2021

Ok, thanks for your prompt reply; I hope you get to feeling better soon.

@certuna
Copy link
Contributor

certuna commented May 20, 2021

Ideas for what the Artist Detail page can contain:

Header/Artist Info section:

  • artist image
  • buttons for love/unlove, play, shuffle, "artist radio"
  • biography
  • clickable links to artist on MusicBrainz & last.fm websites
  • X albums, Y songs (from API, albumCount and songCount)
  • artist genres: not possible yet, needs backend work, data is in the database but not in /artist API yet
  • min_year - max_year: not possible yet, needs backend work, data is in the database but not in /artist API yet
  • if we want to be really fancy, min year-max year can be a histogram graph with songs per year, see Roon for inspiration
  • country: needs to come from last.fm/musicbrainz, needs backend work, not in /artist API yet

Music section:

  • top songs (list of songs, sort desc by rating then playcount)

  • top albums (list of albums, sort desc by rating then playcount)

  • all albums (list of albums where albumArtistId = artist id, sort asc or desc by max_year)

  • "appears on" (list of albums where albumArtistId <> artist id, sort asc or desc by max_year)

  • playlists containing a song of the artist (is there a way to get this through the API yet?)

  • similar artists: not possible yet, needs backend work, data is in the database (through last.fm) but not in /artist API yet

  • subdividing the "all albums" list by release type (album/single/ep/live like this) would need support for the Release Type tag in the scanner/database/API, so cannot be done now

@certuna
Copy link
Contributor

certuna commented May 20, 2021

Here's some examples for reference:

Emby:

Emby

Plex:

Plex

Spotify:

Spotify1
Spotify2

@certuna
Copy link
Contributor

certuna commented May 20, 2021

And Roon here.

@Dnouv
Copy link
Contributor

Dnouv commented May 23, 2021

Sorry for the late reply, @certuna, and thanks for providing the screenshots of so many different projects. I truly appreciate it.

@deluan
Copy link
Member

deluan commented Sep 26, 2021

Reopening it as @Dnouv's contribution is disable by default, with some pending issues:

  • Need some refactoring in the styles and mobile view handling
  • Styling is broken when the biography is not available:

Screen Shot 2021-09-26 at 3 05 39 PM

EDIT: To try out the new page, set DevShowArtistPage=true in your config options

@deluan deluan reopened this Sep 26, 2021
@deluan
Copy link
Member

deluan commented Sep 27, 2021

Another issue: Biography text should wrap in words: EDIT: Fixed!
Screen Shot 2021-09-27 at 9 41 27 AM

@metalheim
Copy link
Contributor Author

The latest release implemented the artist page. It is a good first implementation.

I will re-arrange the original user story of this Issue and try to break it into a list of features (that can be individually "ticked" once implemented)

@metalheim metalheim changed the title Feature Request: Artist Detail Page (based on custom react template) Artist Detail Page (based on custom react template) Oct 9, 2021
@metalheim metalheim changed the title Artist Detail Page (based on custom react template) Artist Detail Page Oct 9, 2021
@coribald
Copy link

coribald commented Nov 12, 2021

Awesome work on the new artist page! One thing to add that I noticed - there doesn't seem to be a secondary sort aside from year, so for multiple albums released in the same year, they sort presumably in the order they were scanned (i think?), and it ends up a bit random. For example:
image

It'd be good to have it sort albums alphabetically that have the same year - I think that's typical in other platforms.

@Dnouv
Copy link
Contributor

Dnouv commented Nov 13, 2021

Thanks! Nice catch @coribald, I would look into this issue, although it may get a little delayed (you know, the typical long exam months).
Feel free to comment. Thank you!

@azukaar
Copy link

azukaar commented Nov 18, 2021

@deluan RE: Your message on #1468 :
i see good work is already on the way for artist page!
Spotify actually has both view, the extended artist one, and if you click on ALBUM subroute :
image

@nishantbb
Copy link

SimilarArtists

As per search link above, it looks like this data is already collected. So most of the details below are probably old news. Is this data supposed to be displayed on the Artists page, and if not can it be as per image?

Related Artists Requests

I have been playing with the last.fm API, and would like to float the idea of adding a Related Artists detail to the Artists page. Particularly, I'd like to see only artists in the navidrome library, with links to their page (within the library). Below is how last.fm displays similar artists on an artist page. I drew the green box for emphasis.

image

Possible logic, example JSON return from API below:

  • query artist on API for up to x similar artists
    • API returns similar artists, in order of similarity (match score 0-1, with up to 6 digits)
  • if found, determine if in navidrome library
    • could keep others as recommended artists
  • present up to 3(?) similar artists with pictures as links to their artists page (like image above)
    • pictures from navidrome db or last.fm or ?
  • Optional
  • if not found, could use API's search feature to try to match artist
    • I noticed lots of issues with &, +, and.
      • Replacing symbols with "and" matches, but was not necessary for all artists.
    • I guess search is already attempted with last.fm integration, so can skip if not found from there

JSON API Return, default is XML

A Tribe Called Quest, x=10
first two shown

Query:
http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=A+Tribe+Called+Quest&limit=10&api_key=<>&format=json

Partial Return:

{'similarartists': {'artist': [{'name': 'Q-Tip',
    'match': '1',
    'url': 'https://www.last.fm/music/Q-Tip',
    'image': [{'#text': 'https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'small'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'medium'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'large'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'extralarge'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'mega'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': ''}],
    'streamable': '0'},
   {'name': 'The Pharcyde',
    'mbid': 'd7134426-a937-43bf-bc54-f10ad8102ed9',
    'match': '0.988053',
    'url': 'https://www.last.fm/music/The+Pharcyde',
    'image': [{'#text': 'https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'small'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'medium'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'large'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'extralarge'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': 'mega'},
     {'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png',
      'size': ''}],
    'streamable': '0'},
 . . .  SKIPPED REST OF DATA . . .
    ],
  '@attr': {'artist': 'A Tribe Called Quest'}}}

@deluan
Copy link
Member

deluan commented Apr 28, 2023

As per search link above, it looks like this data is already collected. So most of the details below are probably old news. Is this data supposed to be displayed on the Artists page, and if not can it be as per image?

The integration with Last.fm is used by all Subsonic clients that supports it.

Ex. Airsonic Refix:
Screenshot 2023-04-27 at 9 43 12 PM

Ex: DSub:
Screenshot_20230427-214004

The idea in this issue here is to expose this information in Navidrome's Artist detail page, which currently only displays the artist image and bio.

@emes81
Copy link

emes81 commented Sep 21, 2023

I generally find that artist biographies sourced from Last.fm or Wikipedia are either of poor quality or not something that fits with my collection. Has there been any discussion of custom biographies, analogous to the custom artist images that were introduced with v.0.4.9?

If not, I think it's something worth thinking about - whether as plain text files stored alongside artist.jpg, or something with some minor scope for basic HTML formatting.

@TheWrathKing
Copy link

I totally agree with @emes81 , bio from Last.fm are sometimes wrong (artists with the same name...) and also often missing when navidrome is not configured in english.

A plain text file or even an nfo with custom bio would be great with a new configuration parameter similar to ArtistArtPriority.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.