Giter Site home page Giter Site logo

Comments (15)

montchr avatar montchr commented on August 26, 2024

any progress on this?

from beets.

sampsyo avatar sampsyo commented on August 26, 2024

@montchr No. Please consider contributing if this feature is important to you. Even a high-level design for how the interface should work would be helpful.

from beets.

montchr avatar montchr commented on August 26, 2024

@sampsyo I'll certainly consider it over the next few months. I'm not very experienced with Python, but I do hope to improve my skills there.

from beets.

sampsyo avatar sampsyo commented on August 26, 2024

Awesome, thanks! Even if you don't get too far with the actual coding, just some thought on how the feature should work is a step in the right direction.

from beets.

dokterbob avatar dokterbob commented on August 26, 2024

There could be several 'strategies' for handling unmatched tracks, which need not be mutually exclusive. I propose at least the following options:

  • ignore: this is the current behavior, tracks not matching will not be included in the library
  • asis-conditional: unmatching tracks will be conditionally imported when the track numbering (directly) follows the tracks of an album
  • asis-renumber: unmatching tracks will be renumbered so as to follow the tracks of an album
  • manual: allow for manual (re)tagging of unmatched tracks, including numbering

Perhaps this should be offered as an interactive choice to the user, with asis-conditional being the default; this is a situations I have noticed multiple times and currently the best remedy is to simply copy the whole album as-is, which does not make sense for badly tagged albums.

from beets.

sampsyo avatar sampsyo commented on August 26, 2024

Cool; good ideas. FWIW, the "manual" option resembles #154, which is a great catch-all fallback for ambiguous situations like this.

from beets.

daks avatar daks commented on August 26, 2024

I just discovered that the unmatched tracks are simply not imported (I thought they were at least copied as is), so I'm interested in any progress on this issue.

from beets.

dokterbob avatar dokterbob commented on August 26, 2024

No progress so far, I am afraid. Busy times... If you're able to work on this: great! If you need help, suggestions or a review: I'd glady help out.

from beets.

daks avatar daks commented on August 26, 2024

I looked further at this problem and tried two strategies to import unmatched tracks:

  • import the album first and then only additional tracks (removing the legitimate ones): the album is imported correctly but additionals are imported in "non-album" directory, even if they stay tagged with the correct album
  • import all the album as tracks: all tracks are imported in "non-album" even if they are tagged with the album correctly.

I re-checked all my collection and have a big number of unmatched tracks so this issue is important for me.
Not sure if I can found a lot of time to help but I can try, I know a little Python but still need a way to understand how beets works (high-level), how this problem needs to be dealed with (in the code), etc..
Any help appreciated @dokterbob

from beets.

dokterbob avatar dokterbob commented on August 26, 2024

@daks As you state yourself, your proposed solution would 'break' a lot of albums.

AFAIK a lot of albums have additional tracks which, for some reason, never made it into MusicBrainz. As I proposed above, there should at least be an option to include additional tracks as-is with the album.

from beets.

daks avatar daks commented on August 26, 2024

In reality, I wasn't proposing anything just telling what I have tested :)

For me the problem is that, for 95% of my albums, if there are unmatched tracks in the album they should be added as tracks of the album, not non-album tracks. It seems that is your idea too.
My question now is: how can I help on this? Which part of the code do I need to look at? Does it need a dedicated plugin? ...

from beets.

sampsyo avatar sampsyo commented on August 26, 2024

@daks Good questions! I'm glad you're interested in helping out. Please just let me know (here, on the mailing list, on IRC...) if you have questions while sorting out the codebase. Here are some notes to point you in the right direction:

  • This should be rolled into the core, not in a plugin. It's difficult to conceive of what the plugin hook would look like.
  • The relevant code is all in importer.py. I suggest familiarizing yourself a tiny bit with how the import workflow goes (specifically, the way ImportTask objects are handed from stage to stage throughout the process).
  • Items are added to the library database in the apply_ choices stage. You can see on line 728 that the code currently uses imported_items to choose which items to add to the library (and which unmatched tracks to discard). That's where you'll want to make the change.

Thanks again for looking into this!

from beets.

tweitzel avatar tweitzel commented on August 26, 2024

I'd like an option to import extra unmatched tracks in a directory without tagging the track number, but keeping the title/artist/album tags intact.

from beets.

arthurlutz avatar arthurlutz commented on August 26, 2024

I'm interested in this too. When I find time to contribute to beets, I'll probably tackle this issue (after another "easier" contribution)

@daks how did you rescan your library to find unmatched tracks without reimporting ?

from beets.

gbdoin avatar gbdoin commented on August 26, 2024

I'm interested in this as well. Hopefully it will be considered soon :)

from beets.

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.