jesseward / jellyfin-plugin-lastfm

LastFM plugin for the Jellyfin media system. Fork of the Emby Last.FM plug-in
178 stars 11 forks source link

Album artist tag and enforce HTTPS #33

Open dharmaInit opened 3 years ago

dharmaInit commented 3 years ago

Hello,

thank you kindly for this plugin. I installed it via the repo, version 7.0.0.0. I tried manual build but after copying to plugins directory, it wasn't picked up.

I have 2 questions: most players with scrobbler have the following behavior: Album tag: Eternal Sunshine of the Spotless Mind Album artist tag: Jon Brion But there are tracks by others as well, say song # 9 is by Beck (Artist tag: Beck). So if I scrobble track number 9, the scrobble will be sent here last.fm/music/Beck/Eternal+Sunshine+of+the+Spotless+Mind - this is wrong. Beck doesn't have that album. The scrobble should be sent here last.fm/music/Jon+Brion/Eternal+Sunshine+of+the+Spotless+Mind, because even though Beck's the song's artist, the album artist tag should decide where the scrobble should go. Can this be done please? It gets even messier with various artists albums...

I'm looking at netstat and it seems it uses port 80 for communication:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 LOCAL_IP:XXXX 130.211.19.189:80 ESTABLISHED xxxx/jellyfin
tcp6 0 0 LOCAL_IP:XXXX 130.211.19.189:80 ESTABLISHED xxxx/jellyfin

Now I don't know much about last.fm's API but shouldn't it be 443? It's kinda worrisome, especially behind a reverse proxy.

jesseward commented 3 years ago

Hey @dharmaInit ,

Thanks for checking in .

because even though Beck's the song's artist, the album artist tag should decide where the scrobble should go. Can this be done please? It gets even messier with various artists albums

The goal here would be to scrobble with the albumArtist value should it differ from the (track) artist value. This also appears to align with LastFM's API docs (https://www.last.fm/api/show/track.scrobble)

albumArtist[i] (Optional) : The album artist - if this differs from the track artist.

Will add this in the next release.

Now I don't know much about last.fm's API but shouldn't it be 443?

This plugin calls numerous endpoints of the LastFM API. The authentication pieces as well as calls that are managing "user" interactions are all covered using TLS (see https://github.com/jesseward/jellyfin-plugin-lastfm/blob/master/Jellyfin.Plugin.Lastfm/Api/LastfmApiClient.cs) . Specifically, when building the client Secure = true is forced.

What's being sent in the plain, are the "unauthenticated" LastFM API requests. For example the https://www.last.fm/api/show/album.getInfo and https://www.last.fm/api/show/artist.getInfo (This service does not require authentication.) . That being said, these calls can be flipped to TLS so they also follow the caller behaviour of the other last fm user requests we're performing...

dharmaInit commented 3 years ago

Thank you so much for taking your time to add the feature!

Regarding the 80/443 - I noticed that the plugin (via jellyfin) connects to the last.fm via port 80 at the service's start. I'm guessing it's because of what you mentioned - getting artist info and other metadata. During the scrobbling / after jellyfin's start it connects via 443, which is dandy.

I also noticed the following bug: usually a scrobble is considered a scrobble after having 50% of the track played. In this case though, if you start playing a track (1-2 seconds) then click on the track's progress bar after 50% of its length (so in case of a 4m track click after 2m), move to the next track and boom - a scrobble that should've been "activated" at the 2m mark, got activated in a matter of seconds. Rinse and repeat with other tracks and you get 1 album scrobbled under 30 seconds or so. Not a biggie, since I don't skim through tracks that often but it can pile up some cheated scrobbles :)

Gotrees commented 2 years ago

Hello, just wondering if there's been any progress on the album artist enhancement. I listen to a lot of compilation albums, so not being able to record the album artist as "Various artists" messes up my scrobbles quite a bit. Thanks for all your work, I'm looking forward to the next release! :)

inalone commented 12 months ago

Would also love for this album artist enhancement. Aside from this one thing, this is an absolutely perfect plugin!