TracklistController.remove()
現在、トラックを削除してtracklist_changed
イベントをトリガーします。
トラックリストから削除されたばかりの場合、現在のトラックを再生し続けることが理にかなっているのかわかりません。代わりに、その時点でstop()
またはnext()
を呼び出す方がよいでしょうか。
mpdの機能を確認する必要があります
MPDはトラックを削除し、可能な場合はプレイリスト内の次のトラックにジャンプします。 それ以外の場合、再生は停止します。
誰かがこのバグを修正し始めましたか? 私は解決策を考え出すことを試みることができます。
いいえ、それを行ってください。 誰もパイプを張っていないので、MPDの動作をミラーリングすることは合理的であると推測できます。
Ok。 いくつかの観察:
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'
この問題を修正したブランチを作成しました。これは、ストリームを含むすべてのトラックで機能し、gstreamerが停止時にバッファリングメッセージを送信することに関連するいくつかの追加の問題がありました。 現在、いくつかのテストに失敗していますが、実際には機能します。 これは@kingosticksWeb APIプレイリストブランチに基づいているため、その機能も含まれています。 テストを修正する前に、ベータテストをさらに取得することに興味がある人がいれば、 https://github.com/fatg3erman/mopidy/tree/fix/consume-current-trackにあります。
実際、そのコメントの一部はナンセンスです:)それはweb-api-playlistsブランチに基づいていません。なぜなら、それはmopidy-spotifyであり、この問題とは無関係だからです:)今日はまだ十分なお茶を飲んでいません...。
私は今休暇中ですが、次の週末に戻ったときに確認できます(必要に応じてプルリクエストを行います)。
ありがとう。 このためにPR1689を追加しました。
mopidy3.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:現在再生中のトラックを削除し、終了するのを待ちます
ncmpcppを使用:複数のトラックを再生します。 現在再生されていない他のトラックにカーソルを合わせます。 shift-cを押して、ホバーしたトラックを除くすべてのトラックを削除します。 現在のトラックが終了するのを待ちます。
最も参考になるコメント
MPDはトラックを削除し、可能な場合はプレイリスト内の次のトラックにジャンプします。 それ以外の場合、再生は停止します。