beets icon indicating copy to clipboard operation
beets copied to clipboard

ftintitle does not work with compilations

Open Kraymer opened this issue 11 years ago • 15 comments

because we search album artist name in track artist name in the strings manipulations, so it fails when album artist is Various artists (compilations)

Kraymer avatar Oct 12 '14 20:10 Kraymer

Indeed; the plugin works by looking for the "primary artist" by assuming it's the same as the album artist. Not necessarily true in compilations.

sampsyo avatar Oct 12 '14 20:10 sampsyo

What would be the best way to handle this case (my preference: 4 )?

  1. if we check that what precede "feat" is the album artist we then ignore compilations (current implementation)
  2. Always moving the (supposed) feat artist has the risk to move a string that is not an artist. Only case I can think of is a song title containing the string "feat" (or a derivative).
  3. we could have an option "cautious" (default: true). When set to false it would not do the artist contain album artist check
  4. we could have an option "enable_for_va_compilations" (default: false). When set to true, if albumartist == Various artists it would skip the artist contain album artist check. We could mention in the docs that enabling it is somewhat risky.

Kraymer avatar Oct 12 '14 21:10 Kraymer

Good question. It would certainly be nice to find a way to make this "just work" in common cases, if at all possible…

sampsyo avatar Oct 13 '14 06:10 sampsyo

@sampsyo said :

Maybe we can just enable compilation-specific logic when a VA album is detected? That could be triggered by: (a) "Various Artists", obvs; (b) the comp flag; or (c) whenever the album artist is not found in the track artist.

Kraymer avatar Oct 13 '14 19:10 Kraymer

@verrus said :

Here i will post some musicbrainz anomalies regarding featuring and album artist:

https://musicbrainz.org/recording/c215db7e-9f59-4168-a89c-5b4de052bbcd Contains both ft. + 'and'

https://musicbrainz.org/recording/ff935ab0-1915-4491-85c7-e43af268dfbd Two tracks in one... The first one features the album artist, the second is by the album artist.

https://musicbrainz.org/recording/9a16694a-4ef5-4759-bc2c-cf2d5124d132 This one is also lovely the album artist is featuring with another artist.

https://musicbrainz.org/recording/180298db-82f9-4abe-b7f1-8f961b70eb77 Lets make it more complex, an album artist with an & and two featuring artists combined using an &. i also saw some occurrences with the album artist under an alias on his/hers own album.

I hope i have provide you with some tricky cases to test!

Kraymer avatar Oct 13 '14 19:10 Kraymer

Thanks @verrus for these examples it's just what we need for the tests.

Good question. It would certainly be nice to find a way to make this "just work" in common cases, if at all possible…

Here is my suggestion :

  • reducing list of feat keywords from featuring, feat, ft, with, &, vs, and to featuring, feat, ft reduces a lot of complexity (no more ambiguities when, say, feat and & keywords are present) and allow us to extract feat artist without using album artist info.
  • we lost the ability to extract ft artist from an artist tag such as "Beyoncé & Jay-z" (with album artist = "Beyoncé") but we can now extract ft artists from compilations that is a more frequent case.

Wa yuh think? :poodle:

Kraymer avatar Oct 13 '14 20:10 Kraymer

I think the best option is to use a VA detection method either with a flag or option 4 with "enable_for_va_compilations" .

Searching for a featuring artist, using all keywords and extending this with checking presence of the album artist is the best option i came across when developing the first version of this plugin.

We should leave the crazy cases in a log file, and people can do manual editing on tracks which the plugin did not catch.

Verrus avatar Oct 14 '14 09:10 Verrus

Would this simple policy work?

  • If the album artist is found in the track artist, use the current logic. Try everything, including stuff like "&" as a separator.
  • If that doesn't work, and we would otherwise need to give up, try the various-artists logic. That would just use the basic separators such as "featuring" and "feat."

Any obvious problems with such a simple approach?

sampsyo avatar Oct 14 '14 16:10 sampsyo

Good for me.

Kraymer avatar Oct 14 '14 18:10 Kraymer

I would like to illustrate my preferred method (fictional band names) AA: Crappy & co. TA: Crappy & co. feat. the receivers

Match TA with AA: True. Search further with the featuring artist indicating characters or words. Split(TA on AA): [ "Crappy & co." , "feat. the receivers" ] Apply matching on the last part and extract the desired featuring artist(s).

When a track does not pass this, the VA method proposed by @sampsyo should be executed.

Verrus avatar Oct 14 '14 19:10 Verrus

Hi all,

Just thought I'd list another musicbrainz anomaly I came across that defeats the current ftintitle release: https://musicbrainz.org/release/6f65ef0d-3aa3-4f14-962e-52d8ae584e2e The album artist appears after the feat. on this album.

broddo avatar Feb 20 '15 18:02 broddo

Title of this issue should be changed, this seems to be whenever album artist and artist are not the same. Also, for music that's on musicbrainz, how about having the plugin work directly with the track info provided rather than performing string manipulation?

ghost avatar May 26 '20 03:05 ghost

Could be use a inline variable/plugin to detect "feat./ft/feat/featuring" and only grab what's before? It would work-ish in the mean time for albumartist I have no idea if it's possible though or how to implement it

Extarys avatar Jul 06 '20 17:07 Extarys

Could be use a inline variable/plugin to detect "feat./ft/feat/featuring" and only grab what's before? It would work-ish in the mean time for albumartist I have no idea if it's possible though or how to implement it

I once tried to improve the lastimport plugin to be able to parse the track title while excluding features, but found it very difficult. It may even be impossible honestly to get it 100% reliable. There are many edge cases where you have to account for paranthesis, brackets, capitalization, ft/feat/ft./feat./featuring/with/etc., sometimes even hyphens, etc.

I think such a function should be used as a fallback for music that is not known to musicbrainz.

ghost avatar Jul 06 '20 22:07 ghost

This should have been resolved with the merge of https://github.com/beetbox/beets/pull/5943 which for some reason didn't make the change notes (probably my error).

treyturner avatar Nov 12 '25 01:11 treyturner

Thanks for the note on this Trey - you're right! Closing.

henry-oberholtzer avatar Dec 19 '25 18:12 henry-oberholtzer