Coder Social home page Coder Social logo

Comments (16)

tkem avatar tkem commented on August 16, 2024

See also beetbox/beets#505 for inspiration.

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

Actually considered to be of minor priority, since media files containing multiple artist/composer/performer tags are rare. Practically non-existant, IMHO.

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

Officially deferred until Mopidy gets its new Metadata API, which will require a redesign of the whole database schema anyway.

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

Current plans for Mopidy Core v1.0 have tracks and albums only contain artist URIs and no longer full Artist models. This better fits the current schema, since the main issue with this is efficiently generating the list of artist models for each track. So track.artists could remain a TEXT field containing ws-seperated URIs as originally planned.

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

I guess that's Mopidy v2.0 now.

from mopidy-local.

tatoosh avatar tatoosh commented on August 16, 2024

how so solve the bug?
mopidy_local_sqlite.schema: Ignoring multiple artists: frozenset ....
mopidy is not starting anymore

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

@tatoosh: Could you please provide more information, logs for example...

from mopidy-local.

tatoosh avatar tatoosh commented on August 16, 2024

@tkem here my mopidy.log. Is this enough?

2015-07-29 11:09:44,859 ERROR [23010:MpdSession-6005] pykka: Unhandled exception in MpdSession (urn:uuid:d9d49b34-ee99-40c1-9617-0d855767b8c9):
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 200, in _actor_loop
    response = self._handle_receive(message)
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 303, in _handle_receive
    return self.on_receive(message)
  File "/usr/lib/python2.7/dist-packages/mopidy/utils/network.py", line 367, in on_receive
    self.on_line_received(line)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/session.py", line 33, in on_line_received
    response = self.dispatcher.handle_request(line)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 46, in handle_request
    return self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 75, in _catch_mpd_ack_errors_filter
    return self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 88, in _authenticate_filter
    return self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 104, in _command_list_filter
    response = self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 133, in _idle_filter
    response = self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 146, in _add_ok_filter
    response = self._call_next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 67, in _call_next_filter
    return next_filter(request, response, filter_chain)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 158, in _call_handler_filter
    response = self._format_response(self._call_handler(request))
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/dispatcher.py", line 172, in _call_handler
    return protocol.commands.call(tokens, context=self.context)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/protocol/__init__.py", line 178, in call
    return self.handlers[tokens[0]](context, *tokens[1:])
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/protocol/**init**.py", line 140, in validate
    return func(_args, *_kwargs)
  File "/usr/lib/python2.7/dist-packages/mopidy/mpd/protocol/music_db.py", line 284, in list_
    return [(name, value) for value in result.get()]
  File "/usr/lib/python2.7/dist-packages/pykka/future.py", line 299, in get
    exec('raise exc_info[0], exc_info[1], exc_info[2]')
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 200, in _actor_loop
    response = self._handle_receive(message)
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 294, in _handle_receive
    return callee(_message['args'], *_message['kwargs'])
  File "/usr/lib/python2.7/dist-packages/mopidy/core/library.py", line 99, in get_distinct
    for r in pykka.get_all(futures):
  File "/usr/lib/python2.7/dist-packages/pykka/future.py", line 330, in get_all
    return [future.get(timeout=timeout) for future in futures]
  File "/usr/lib/python2.7/dist-packages/pykka/future.py", line 299, in get
    exec('raise exc_info[0], exc_info[1], exc_info[2]')
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 200, in _actor_loop
    response = self._handle_receive(message)
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 294, in _handle_receive
    return callee(_message['args'], *_message['kwargs'])
  File "/usr/lib/python2.7/dist-packages/mopidy/local/library.py", line 29, in get_distinct
    return self._library.get_distinct(field, query)
  File "/usr/local/lib/python2.7/dist-packages/mopidy_local_sqlite/library.py", line 117, in get_distinct
    return set(schema.list_distinct(self._connect(), field, q))
  File "/usr/local/lib/python2.7/dist-packages/mopidy_local_sqlite/schema.py", line 209, in list_distinct
    return itertools.imap(operator.itemgetter(0), c.execute(sql, params))
OperationalError: database is locked
2015-07-29 11:15:25,624 WARNING [23690:MainThread] mopidy_local_sqlite.schema: Ignoring multiple artists: frozenset([Artist(name=u'Avicii', uri=u'local:artist:md5:a25bfb4652487ad50c73e8ddf2cfc1de'), Artist(name=u'Nicky Romero', uri=u'local:artist:md5:f6492038ee4f67d0645a37331a324ece')])
2015-07-29 11:15:27,581 WARNING [23690:MainThread] mopidy_local_sqlite.schema: Ignoring multiple artists: frozenset([Artist(name=u'Avicii', uri=u'local:artist:md5:a25bfb4652487ad50c73e8ddf2cfc1de'), Artist(name=u'Nicky Romero', uri=u'local:artist:md5:f6492038ee4f67d0645a37331a324ece')])
2015-07-29 11:15:48,365 WARNING [23690:MainThread] mopidy_local_sqlite.schema: Ignoring multiple artists: frozenset([Artist(name=u'Avicii', uri=u'local:artist:md5:a25bfb4652487ad50c73e8ddf2cfc1de'), Artist(name=u'Nicky Romero', uri=u'local:artist:md5:f6492038ee4f67d0645a37331a324ece')])

from mopidy-local.

tatoosh avatar tatoosh commented on August 16, 2024

@tkem: i delete the 2 tracks and did a restart. now it works ... it was a mp3 and mpeg4 file. i can send you the files for testing if you are interested in?

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

@tatoosh: could you explain "not starting any more" a little further; a logfile of a fresh restart, maybe. So far, all I see is expected warnings and an error due to a database lock, which is also not unusual when accessing Mopidy during a local scan. Nothing hinting at "not starting anymore"

from mopidy-local.

tatoosh avatar tatoosh commented on August 16, 2024

@tkem i did a "sudo service mopidy" restart and nothing happend. i can actually not reproduce this, so you can handle it as solved, sry and thx.

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

@tatoosh: thanks!

from mopidy-local.

tkem avatar tkem commented on August 16, 2024

@tatoosh: would you mind telling me how you got the multi-artist files? I have music files from a variety if sources and using various taggers, but never actually came across an mp3 that included multiple artist tags. That's the main reason why I chose to ignore multiple artists in MLSqlite for now...

from mopidy-local.

tatoosh avatar tatoosh commented on August 16, 2024

@tkem: I've send you an example via email.

from mopidy-local.

Shadowghost avatar Shadowghost commented on August 16, 2024

So what about this? Any news or (further) implementation plans?
To explain my situation: I use (self-tagged) multiple artist tags mostly because of Kodi, which allows me to have all artists to be listed in the artist category, but the albums to be listed with the artists from album-artist tag if present. Since ID3v2.4 (and APEv2) multiple tags are an officially supported scheme.

from mopidy-local.

fran-penedo avatar fran-penedo commented on August 16, 2024

I just updated to mopidy 3 and I swear I remember multiple artists working, but I can't find any reference to it being implemented, so I actually don't know why they used to work? In any case, I'd like to request this feature or at least start some discussion about it. I might be able to work on it myself if I can get a few pointers.

from mopidy-local.

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.