TracklistController.remove()
ne supprime actuellement que la piste et déclenche l'événement tracklist_changed
:
Je ne suis pas sûr qu'il soit logique de continuer à lire la piste en cours si elle vient d'être supprimée de la liste des pistes - il serait peut-être préférable d'appeler stop()
ou next()
à ce stade à la place ?
Nous devrions vérifier ce que fait mpd
MPD supprime la piste, puis passe à la suivante dans la liste de lecture si elle est disponible. Sinon, la lecture s'arrête.
Quelqu'un a commencé à corriger ce bug ? Je peux essayer de trouver une solution.
Non, vas-y. Étant donné que personne ne s'est renseigné, je pense que nous pouvons supposer que la mise en miroir du comportement de MPD est raisonnable.
D'accord. Quelques remarques :
File "/home/aj/mopidy-dev/mopidy/mopidy/core/playback.py", line 270, in _on_about_to_finish
self._last_position = self._current_tl_track.track.length
AttributeError: 'NoneType' object has no attribute 'track'
J'ai créé une branche avec un correctif pour ce problème, qui fonctionne avec toutes les pistes, y compris les flux, où il y avait des problèmes supplémentaires liés à l'envoi de messages de mise en mémoire tampon par gstreamer à l'arrêt. Il échoue actuellement à plusieurs des tests, mais cela fonctionne dans la pratique. Il est basé sur la branche de listes de lecture api web @kingosticks , il inclut donc également cette fonctionnalité. C'est ici https://github.com/fatg3erman/mopidy/tree/fix/consume-current-track si quelqu'un est intéressé à l'essayer pour obtenir plus de tests bêta avant d'essayer de corriger les tests.
En fait, une partie de ce commentaire est absurde :) Ce n'est pas basé sur la branche web-api-playlists, car c'est mpidy-spotify et sans rapport avec ce problème :) Je n'ai pas encore bu assez de thé aujourd'hui....
Je suis en vacances en ce moment mais je peux revoir quand je serai de retour le week-end prochain (si vous le souhaitez et faites une pull request).
Merci. Ajout du PR 1689 pour cela.
toujours reproductible avec mopidy 3.0.1
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/mopidy/audio/actor.py", line 559, in _on_about_to_finish
self._about_to_finish_callback()
File "/usr/lib/python3.7/site-packages/mopidy/core/playback.py", line 178, in _on_about_to_finish_callback
kwargs={},
File "/usr/lib/python3.7/site-packages/pykka/_ref.py", line 114, in ask
return future.get(timeout=timeout)
File "/usr/lib/python3.7/site-packages/pykka/_threading.py", line 45, in get
_compat.reraise(*self._data['exc_info'])
File "/usr/lib/python3.7/site-packages/pykka/_compat/__init__.py", line 29, in reraise
raise value
File "/usr/lib/python3.7/site-packages/pykka/_actor.py", line 193, in _actor_loop
response = self._handle_receive(envelope.message)
File "/usr/lib/python3.7/site-packages/pykka/_actor.py", line 299, in _handle_receive
return callee(*message.args, **message.kwargs)
File "/usr/lib/python3.7/site-packages/mopidy/core/playback.py", line 190, in _on_about_to_finish
self._last_position = self._current_tl_track.track.length
AttributeError: 'NoneType' object has no attribute 'track'
STR : supprimez la piste en cours de lecture et attendez qu'elle se termine
avec ncmpcpp : lecture de plusieurs pistes ; survolez une autre piste qui n'est pas en cours de lecture ; appuyez sur maj-c pour supprimer toutes les pistes sauf survolées ; attendre la fin de la piste en cours.
Commentaire le plus utile
MPD supprime la piste, puis passe à la suivante dans la liste de lecture si elle est disponible. Sinon, la lecture s'arrête.