Mopidy: سلوك غير محدد عند إزالة المسار قيد التشغيل حاليًا من قائمة المقطوعات.

تم إنشاؤها على ٧ يناير ٢٠١٧  ·  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

C-bug A-core

التعليق الأكثر فائدة

يزيل MPD المسار ثم ينتقل إلى التالي في قائمة التشغيل إذا كان ذلك متاحًا. وإلا توقف التشغيل.

ال 10 كومينتر

يجب أن نتحقق مما يفعله mpd

يزيل MPD المسار ثم ينتقل إلى التالي في قائمة التشغيل إذا كان ذلك متاحًا. وإلا توقف التشغيل.

أي شخص بدأ في إصلاح هذا الخطأ؟ يمكنني محاولة التوصل إلى حل.

كلا ، اذهب لذلك. نظرًا لعدم قيام أي شخص بتزويده بالأناقة ، أعتقد أنه يمكننا افتراض أن عكس سلوك MPD أمر منطقي.

نعم. بعض الملاحظات:

  • يستخدم PlaybackController self._current_tl_track للعثور على مسارات أخرى ، على سبيل المثال التالي (). إذا أردنا الاستمرار في التشغيل من قائمة المسار بعد حذف المسار ، فنحن بحاجة إلى ربط self._current_tl_track بالمسارات المتبقية في قائمة المسار (التي لا تشمل _current_tl_track بعد الآن). شيء بسيط للغاية هو البحث في TracklistController.tl_tracks وتشغيل المسار بقيمة tlid أعلى من tlid لـ _current_tl_track. اسمحوا لي أن أعرف إذا فاتني شيء من شأنه أن يجعل تنفيذ تشغيل المسار التالي أكثر مباشرة إلى الأمام.
  • يقوم 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 ()
  • على عكس MPD ، يتوقف VLC عن اللعب عند حذف المسار أثناء التشغيل

لقد قمت بإنشاء فرع مع إصلاح لهذه المشكلة ، والذي يعمل مع جميع المسارات بما في ذلك التدفقات ، حيث كانت هناك بعض المشاكل الإضافية المتعلقة بإرسال رسائل التخزين المؤقت عند التوقف. فشل حاليًا في العديد من الاختبارات ولكنه يعمل في الممارسة العملية. يعتمد على فرع قوائم تشغيل kingosticks web api ، لذا فهو يتضمن هذه الميزة أيضًا. إنه هنا https://github.com/fatg3erman/mopidy/tree/fix/consume-current-track إذا كان أي شخص مثيرًا للاهتمام في تجربته للحصول على مزيد من الاختبارات التجريبية قبل أن أحاول إصلاح الاختبارات.

في الواقع ، جزء من هذا التعليق هو هراء :) لا يعتمد على فرع قوائم تشغيل واجهة برمجة تطبيقات الويب ، لأن هذا هو mopidy-spotify ولا علاقة له بهذه المشكلة :) لم أشرب الشاي الكافي حتى الآن ...

أنا في إجازة الآن ولكن يمكنني المراجعة عندما أعود في نهاية الأسبوع المقبل (إذا كنت ترغب في تقديم طلب سحب).

شكرا. أضيفت PR 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'

STR: قم بإزالة المسار الجاري تشغيله وانتظر حتى ينتهي

مع ncmpcpp: تشغيل مسارات متعددة ؛ تحوم فوق أي مسار آخر لا يتم تشغيله حاليًا ؛ اضغط على shift-c لإزالة جميع المسارات باستثناء التمرير ؛ انتظر حتى ينتهي المسار الحالي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات