Giter Site home page Giter Site logo

Comments (6)

irskep avatar irskep commented on June 23, 2024

I'm proficient with browser dev tools, so if this is a client side issue I'd be happy to dig into it if you tell me where to start. I can also hold my nose and throw some console.log statements in the server code too if you need that.

from groovebasin.

diogocp avatar diogocp commented on June 23, 2024

Probably a metadata issue. Check if the files have a compilation tag set (e.g. using ffprobe).

The list of compilation tags recognized by Groove Basin is here:

object.compilation = !!(parseInt(file.getMetadata("TCP"), 10) ||

from groovebasin.

irskep avatar irskep commented on June 23, 2024

Here's an example. The value of the compilation tag is apparently 0.

ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Input #0, mp3, from '/Volumes/SteveJStorage/Music/Paul Simon/Paul Simon/01 Mother and Child Reunion.mp3':
  Metadata:
    title           : Mother and Child Reunion
    artist          : Paul Simon
    track           : 1/11
    album           : Paul Simon
    disc            : 1/1
    date            : 1972-03
    genre           : Folk
    comment         : Encoded by FLAC v1.1.2a with FLAC Frontend v1.7.1
    TBPM            : 0
    compilation     : 0
    composer        : 1972
    TDOR            : 1972-03
    TMED            : 12" Vinyl
    album_artist    : Paul Simon
    publisher       : Columbia
    artist-sort     : Simon, Paul
    ALBUMARTISTSORT : Simon, Paul
    Acoustid Fingerprint: AQADtFIoSRmVJDATxkJp7jj6iHBToZauIyeSLzmaJ3KC3rgcPEqOs2jyBMnuIz-eoyQPf7nxCzZqMYzwcNBpNHkiB71MHE-CvDn0UEgfnD8e7shFQ8uzGNN__MgS5igVHdPh6MnxbIS3HX0o9CzsZEcYTcyhNyqaE2GPs8cT9IdTD24RzhfUjUdo5fCUB30wXY7ga0emiCEHPdmQajl6KsOOJ0Nz8qhzfJqR50h45fiVJvjx9bjCBedgP0h8Ig-
    Acoustid Id     : 40d8ddfb-e8e3-45ea-9e02-a85c557fa3ee
    Album Artist Credit: Paul Simon
    Artist Credit   : Paul Simon
    CATALOGNUMBER   : KC 30750
    MusicBrainz Album Artist Id: 05517043-ff78-4988-9c22-88c68588ebb9
    MusicBrainz Album Id: 98525987-1acb-4a44-898e-fb44fa17a2ba
    MusicBrainz Album Release Country: US
    MusicBrainz Album Status: Official
    MusicBrainz Album Type: album
    MusicBrainz Artist Id: 05517043-ff78-4988-9c22-88c68588ebb9
    MusicBrainz Release Group Id: 602d0c54-2901-3469-a683-a5a50f3e5260
    Script          : Latn
    lyrics-XXX      :
  Duration: 00:03:10.22, start: 0.025057, bitrate: 229 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 229 kb/s
    Metadata:
      encoder         : LAME3.97

from groovebasin.

irskep avatar irskep commented on June 23, 2024

Most of my albums passed through the beets importer, so it's likely that it is metadata-related, but I would call it a metadata interpretation bug on the Groovebasin side rather than a metadata creation bug on the beets side, since no other music player I've used has this problem.

Honestly I just want the top level to be album artist and have no further metadata interpretation done.

from groovebasin.

irskep avatar irskep commented on June 23, 2024

It looks like the actual tag value is the string '0'. This diff fixes my issue if I rebuild my database:

diff --git a/lib/player.js b/lib/player.js
index 10f913f..97deb33 100644
--- a/lib/player.js
+++ b/lib/player.js
@@ -2847,6 +2847,12 @@ function parseFloatOrNull(n) {
   return n;
 }

+function parseBool(s) {
+  if (!s) return false;
+  if (s === "0") return false;
+  return true;
+}
+
 function grooveFileToDbFile(file, filenameHintWithoutPath, object) {
   object = object || {key: uuid()};
   var parsedTrack = parseTrackString(file.getMetadata("track"));
@@ -2863,10 +2869,10 @@ function grooveFileToDbFile(file, filenameHintWithoutPath, object) {
   object.albumName = (file.getMetadata("album") || "").trim();
   object.compilation = !!(parseInt(file.getMetadata("TCP"),  10) ||
                           parseInt(file.getMetadata("TCMP"), 10) ||
-                          file.getMetadata("COMPILATION") ||
-                          file.getMetadata("Compilation") ||
-                          file.getMetadata("cpil") ||
-                          file.getMetadata("WM/IsCompilation"));
+                          parseBool(file.getMetadata("COMPILATION")) ||
+                          parseBool(file.getMetadata("Compilation")) ||
+                          parseBool(file.getMetadata("cpil")) ||
+                          parseBool(file.getMetadata("WM/IsCompilation")));
   object.track = parsedTrack.value;
   object.trackCount = parsedTrack.total;
   object.disc = parsedDisc.value;

If I submit a PR with this, is it likely to be merged? Or you can just git apply the patch yourself (for some broad value of "you").

from groovebasin.

diogocp avatar diogocp commented on June 23, 2024

That tag is non-standard, so it's hard to say who's right and who's wrong. My understading is that it should only be present if the album is a VA album, and then it should have the value 1. Otherwise, it should be removed. This is how Picard handles it, for example.

Anyway, I think it makes sense for Groove Basin to handle "0" in compilation. Go ahead and submit a PR. You don't need parseBool, though. Just use parseInt like in the lines above.

I also like the idea of using the album artist whenever it is available. Placing albums with compilation under Various Artists should only be a fallback.

from groovebasin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.