Mopidy: рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЯреНрд░реИрдХ рдХреЛ рдЯреНрд░реИрдХрд▓рд┐рд╕реНрдЯ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╕рдордп рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬрдире░ 2017  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mopidy/mopidy

TracklistController.remove() рдЕрднреА-рдЕрднреА рдЯреНрд░реИрдХ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ tracklist_changed рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ:

https://github.com/mopidy/mopidy/blob/2b7f12b8542d04190a85ed890edac1ce9192d9e8/mopidy/core/tracklist.py#L567 -L572

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЯреНрд░реИрдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЕрдЧрд░ рдЗрд╕реЗ рдЯреНрд░реИрдХрд▓рд┐рд╕реНрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╢рд╛рдпрдж рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ stop() рдпрд╛ next() рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛?

https://github.com/mopidy/mopidy/blob/2b7f12b8542d04190a85ed890edac1ce9192d9e8/mopidy/core/playback.py#L304 -L305

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдордкреАрдбреА рдЯреНрд░реИрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЕрдЧрд▓реЗ рдПрдХ рдкрд░ рдХреВрдж рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдкреНрд▓реЗрдмреИрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдордкреАрдбреА рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ

рдПрдордкреАрдбреА рдЯреНрд░реИрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЕрдЧрд▓реЗ рдПрдХ рдкрд░ рдХреВрдж рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдкреНрд▓реЗрдмреИрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдирд╣реАрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдУред рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдордкреАрдбреА рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рдареАрдХред рдХреБрдЫ рдЕрд╡рд▓реЛрдХрди:

  • PlaybackController рдЕрдиреНрдп рдЯреНрд░реИрдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП self._current_tl_track рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ ()ред рдЕрдЧрд░ рд╣рдо рдЯреНрд░реИрдХ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЯреНрд░реИрдХрд▓рд┐рд╕реНрдЯ рд╕реЗ рдЦреЗрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реЗрд▓реНрдл._current_tl_track рдХреЛ рдЯреНрд░реИрдХрд▓рд┐рд╕реНрдЯ рдХреЗ рдмрд╛рдХреА рдЯреНрд░реИрдХреНрд╕ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд┐рд╕рдореЗрдВ рдЕрдм _current_tl_track рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ)ред TracklistController.tl_tracks рдореЗрдВ рджреЗрдЦрдирд╛ рдФрд░ _current_tl_track рдХреЗ tlid рд╕реЗ рдЕрдзрд┐рдХ tlid рдорд╛рди рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХ рдЪрд▓рд╛рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдмрд╛рдд рд╣реЛрдЧреАред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЕрдЧрд▓реЗ рдЯреНрд░реИрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реАрдзреЗ рдЖрдЧреЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред
  • PlaybackController._on_about_to_finish() рдЬрдм рдХреЛрдИ рдкреНрд▓реЗрдЗрдВрдЧ рдЯреНрд░реИрдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ AttributeError рдлреЗрдВрдХрддрд╛ рд╣реИ (рдпрд╛рдиреА _on_tracklist_change() рдЯреНрд░реИрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдмрдВрдж рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП):
    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'
  • рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ _on_tracklist_change() рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИрдВ, рд╢рд╛рдпрдж _on_about_to_finish() рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рдВрдХреЗрдд рд╣реИрдВ
  • рдПрдордкреАрдбреА рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реАрдПрд▓рд╕реА рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рдЯреНрд░реИрдХ рд╣рдЯрд╛рдиреЗ рдкрд░ рдЪрд▓рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░реАрдо рд╕рд╣рд┐рдд рд╕рднреА рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдЯреЙрдк рдкрд░ рдмрдлрд░рд┐рдВрдЧ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ gstreamer рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ @kingosticks рд╡реЗрдм рдПрдкреАрдЖрдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╢рд╛рдЦрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ https://github.com/fatg3erman/mopidy/tree/fix/consume-current-track рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкрд░реАрдХреНрд╖рдг рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдФрд░ рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдХрд╡рд╛рд╕ рд╣реИ :) рдпрд╣ рд╡реЗрдм-рдПрдкреАрдЖрдИ-рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╢рд╛рдЦрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ mopidy-spotify рд╣реИ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИ :) рдореИрдВрдиреЗ рдЖрдЬ рддрдХ рдкрд░реНрдпрд╛рдкреНрдд рдЪрд╛рдп рдирд╣реАрдВ рдкреА рд╣реИ ....

рдореИрдВ рдЕрднреА рдЫреБрдЯреНрдЯреА рдкрд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬрдм рдореИрдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рддреЛ рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ)ред

рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ 1689 рдЬреЛрдбрд╝рд╛ред

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'

рдПрд╕рдЯреАрдЖрд░: рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЯреНрд░реИрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдЦрддреНрдо рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

ncmpcpp рдХреЗ рд╕рд╛рде: рдХрдИ рдЯреНрд░реИрдХ рдЪрд▓рд╛рдПрдВ; рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреНрд░реИрдХ рдкрд░ рд╣реЛрд╡рд░ рдХрд░реЗрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ; рд╣реЛрд╡рд░-рдУрд╡рд░ рдЯреНрд░реИрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд┐рдлреНрдЯ-рд╕реА рджрдмрд╛рдПрдВ; рд╡рд░реНрддрдорд╛рди рдЯреНрд░реИрдХ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

godzillamesel picture godzillamesel  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

djselbeck picture djselbeck  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

altano picture altano  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

artjeck picture artjeck  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

voidmann picture voidmann  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ