рдкрд╛рдпрдерди 3 рдкрд╛рдпрдерди рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ, рдпрд╣ рдЙрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдкрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬрд┐рди рдкрд░ Mopidy рддреИрдирд╛рдд рд╣реИ, рдФрд░ рдореБрдЭреЗ asyncio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдореЗрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Python 3.3+ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред Mopidy рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдореЗрдВ Python 3 рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реЛред
рдпрд╣ рдореЛрдкрд┐рдбреА рдХреЛ рдкрд╛рдпрдерди 3 рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рд░рд╛рд╕реНрддреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдЯрд░ рдмрдЧ рд╣реИред
from __future__ import unicode_literals
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ b'foo'
рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред2to3
рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдореБрджреНрджреЛрдВ рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░реЗрдВредрдЕрд░реЗ, рдореИрдВ рдкрд╛рдпрдерди 3 рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЬреЛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХрд┐рд╕реА рдХреЗ рдкреИрд░ рдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдХрджрдо рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛
рдореИрдВрдиреЗ jodal/feature/py3-compat рдкрд░ рдПрдХ рд╢рд╛рдЦрд╛ рд╢реБрд░реВ рдХреА рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВрдиреЗ:
рдореИрдВрдиреЗ рдирд╡рдВрдмрд░ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕реЗ рдЫреБрдЖ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рдореЛрдкрд┐рдбреА 2.0.0 рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╢рд╛рдЦрд╛ рдХреЛ рд░рд┐рдмреЗрд╕ рдХрд┐рдпрд╛ рдерд╛ред рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ 1000 рдкрд░реАрдХреНрд╖рдг рддрдп рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд▓рдЧрднрдЧ 240 рд╢реЗрд╖ рд╣реИрдВред
рдЖрдЧреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ:
рдареАрдХ рд╣реИ, рдореИрдВ рдЙрд╕ рд╢рд╛рдЦрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЬреЛ рднреА рдкрд░реАрдХреНрд╖рдг рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЙрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛
рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЦрдмрд░?
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рдврд╝реЗ рддреАрди рд╕рд╛рд▓ рдмрд╛рдХреА рд╣реИрдВ
рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?
рдореЛрдкрд┐рдбреА рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрдерди 3 рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛ рдХрд╛рдо рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдХрд╛рдо рдореЗрдВ рдХрд╛рдлреА рд╡реНрдпрд╕реНрдд рд╣реВрдВред
рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдпреЛрдЬрдирд╛, рдЕрдиреБрдорд╛рдирд┐рдд рдХреНрд░рдо рдореЗрдВ, рдирд┐рдореНрди рд╣реИ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдХрд╛рдо рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдирд┐рдХрд╛рдп рдкрд╣рд▓реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ: рдкрд╛рдпрдерди 3 рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pyspotify рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ (рдореЗрд░реЗ рдЦрд╛рд▓реА рд╕рдордп рдХреЗ рджреЛ рд╕рд╛рд▓ рдпрд╣рд╛рдВ рдмрд┐рддрд╛рдП рдЧрдП рдереЗ) рдФрд░ Mopidy рдХреЛ GStreamer 1.x (рдпрд╣рд╛рдВ рдмрд┐рддрд╛рдП рдЧрдП рдЦрд╛рд▓реА рд╕рдордп рдХрд╛ рдПрдХ рдкрд┐рддреГрддреНрд╡ рдЕрд╡рдХрд╛рд╢) рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ред
рдореИрдВ рд╡рд╣рд╛рдБ рдкрд╣реБрдБрдЪреВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЕрдЧрд░ рд▓реЛрдЧ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рдореЛрдкрд┐рдбреА 2+3 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорджрджрдЧрд╛рд░ рдкрд╛рдпрдерди 3 рдХреЛ рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @jodalред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Python3 рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдореИрдВ mopidy рдореЗрдВ рдирдпрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХрднреА рдпреЛрдЧрджрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ
рдХреНрдпрд╛ рдЖрдкрдХреА рдХреБрдЫ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдПрд▓ рдорд┐ред, 22 рдбреЗ рдорд╛рд░реНрдЪред рдбреЗ 2017 рдП рд▓рд╛ (рдУрдВ) 07:08, рдлреНрд░реЗрдбрд░рд┐рдХ рдЧреНрдиреЛрдбрдЯрдХреЗ <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рд╡рд┐рд╡рд░рдг:
рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @jodal https://github.com/jodal ред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдорджрдж рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдХреБрдЫ рдмреЛрдЭ рдХреЛ рдореБрдХреНрдд рдХрд░рддреА рд╣реИ, рдмрдбрд╝реЗ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдЬреИрд╕реЗ рдкрд╛рдпрдерди 3 рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдпрд╛ рддреЛ рдмрдбрд╝реЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЦреБрдж рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдмрдбрд╝реЗ рдпреЛрдЧрджрд╛рди рдкрд░ рдЙрдЪрд┐рдд рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд╛рдлреА рдердХрд╛рдК рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ред рджреЛ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧреЛрдВ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдореБрджреНрджреЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред
@jodal рд╣рдо рдЖрдкрдХреЗ рдХрд╛рдо рдХреЛ python3 рдХреЗ рд╕рд╛рде рдХрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
рд╕рд╛рджрд░
@jodal py3-compat рд╢рд╛рдЦрд╛ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ ... рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдирдпрд╛ рдХрд╣реАрдВ рд╣реИ?
рдореИрдВ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЧрдВрджрд╛ py2 рдХрд╛рдордХрд╛рдЬ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд╕реНрдерд┐рд░ mopidy рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреБрдЫ py3 рдмрдЧ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ? рдХреНрдпрд╛ mopidy рдХрд╛ рдХреЛрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ python3 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдирд┐рд░реНрднрд░рддрд╛ рдкрд╛рдЗрд▓рд╛рд╕реНрдЯ рдЬрд▓реНрдж рд╣реА рд╡рд┐рд░рд╛рд╕рдд рдкрд╛рдпрдерди 2 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рджреЗрдЧрд╛: https://github.com/pylast/pylast/issues/265
рдирдорд╕реНрддреЗ,
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдбреЗрдмрд┐рдпрди рдореЗрдВ рдкрд╛рдЗрд▓рд╛рд╕реНрдЯ рд░рдЦрддрд╛ рд╣реВрдВред рдореИрдВ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг ([1]) рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЕрдм рдкрд╛рдпрдерди 2.7 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдореИрдВ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд░рд╡рд░реА рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ mopidy рдЕрднреА рднреА Python 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдЕрдЧрд▓реЗ рдбреЗрдмрд┐рдпрди рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЬреЛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЛрдкрд┐рдбреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЕрджреНрднреБрдд рдЯреБрдХрдбрд╝рд╛ рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА:
рдХреНрдпрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╢рд╛рдЦрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ
рд╕рд╛рджрд░
@jodal рдХреНрдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╣рд╛рдВ рдЕрд╡рд░реЛрдзрдХ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ рдЬрд╛рдП рдФрд░ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рддреЛ рдЬреЛ рд▓реЛрдЧ рдкрд╛рдпрдерди (рдореЗрд░реЗ рдЬреИрд╕реЗ) рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреАрдПрд╕ рдореБрдЭреЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╕реНрддрд╛рд░ (GMusic, Iris, Podcast, Scrobbler, Spotify) рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЕрдЬрдЧрд░ 3 рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдкрд╛рдпрдерди 3 рд╕рдВрд╕реНрдХрд░рдг рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЕрднреА рднреА Mopidy рдХреЛ Python 3 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реВрдБред рдореИрдВ Mopidy рдХреЛ Python 2 рдХреЗ рд╕рд╛рде рдорд░рдиреЗ рдирд╣реАрдВ рджреВрдБрдЧрд╛ред
рд╣рдореЗрдВ рдкрд╛рдпрдерди 3 рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рдо рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдкрд╛рдпрдерди 3 рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рдВрдмреЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд, рдореЗрд░реА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдЙрджреНрдпрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВред рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрд╕ рд╕рдордп рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рддрдХ Mopidy.js рдФрд░ Mopidy-MPRIS рдХреЛ рдХреБрдЫ рдХреЛрдорд▓ рдкреНрдпрд╛рд░ рдФрд░ рджреЗрдЦрднрд╛рд▓ рдорд┐рд▓реА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдкрд╛рдЗрдХреНрдХрд╛ рдХреА рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЕрдиреНрдп рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ Mopidy рд╕реЗрдЯрдЕрдкреЛрдВ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдХрд╛рд░рдХ рд╕реЗ рдХрдо рдХрд░ рджреЗрдЧрд╛ред
рдПрдХ рдмрд╛рд░ рдкрд╛рдЗрдХреНрдХрд╛ 2 рднреЗрдЬ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рдореЛрдкрд┐рдбреА рдХреЛ рдкрд╛рдпрдерди 3 рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИред
рд╡рд╣ рдХрд╛рдо рдХрдм рдкреВрд░рд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЛрдИ рд╕рдордп рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╕ рдЦреБрдж рдХреЛ рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдм рдмрд╛рд╣рд░реА рдХрд╛рд░рдХреЛрдВ рдФрд░ рдкреНрд░реЗрд░рдгрд╛ рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдорджрдж рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реЗ рдирдП рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рдФрд░ рдирд┐рдпрдорд┐рдд рддрд╛рд▓ рдореЗрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреАрдЖрд░ рд╕рдореАрдХреНрд╖рд╛рдПрдВ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╣реА рдбрд┐рдореЛрдЯрд┐рд╡реЗрдЯрд┐рдВрдЧ рдмрди рдЬрд╛рдПрдВрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рднреА рдорджрдж рд╣рдореЗрд╢рд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдорджрдж рдХрд░рддреА рд╣реИред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЕрдиреНрдп рдкреНрд░рдореБрдЦ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдУрдВ рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рдореИрдВ рд╕рднреА рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдордп рдФрд░ рдкреНрд░реЗрд░рдгрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдПрдХ рдмрд╛рд░ рдореИрдВ рдореЛрдкрд┐рдбреА 3 рдкрд░ рдареАрдХ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рд╡реЗ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред
рдЬреАрд╡рди рдФрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рд░реА рд╣рд▓рдЪрд▓ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦрдХрд░, рдпрд╣ рди рддреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХрд╛рд░реНрдп рд╣реИ рдФрд░ рди рд╣реА рдРрд╕рд╛ рдХрд╛рд░реНрдп рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдиреНрдп рдЪрд▓ рд░рд╣реЗ рд╕рд╛рдорд╛рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдлреЛрдХрд╕ рдмрди рд╕рдХреЗред
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдорд╛рд░реНрдЪ 2017 рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдЦрд┐рд░реА рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рдереА, рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрдерди 3 рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЗрддрдирд╛ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдХреЗрд╡рд▓ 2 + 3 рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдпрдерди 2 рд╕реЗ рдХреНрд░рдорд┐рдХ рдХрджрдо рдЙрдард╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред Mopidy 2.x рдиреЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рддрдХ рд╣рдорд╛рд░реА рдХрд╛рдлреА рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХреА рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ Python 2 рдкрд░ рдЕрдЯрдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдФрд░ рд╕реНрдерд┐рд░ рдЬрдЧрд╣ рд╣реЛрдЧреАред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд╛рд░реНрдЪ 2017 рд╕реЗ рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ:
pip install mopidy
рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pip install --pre mopidy
рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИредрдЪреВрдВрдХрд┐ рдкрд╛рдВрдЪ рдорд╣реАрдиреЗ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрд┐рд╕ рдкрд╛рдЗрдХреНрдХрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдмрд╛рдд рдХреА рдереА, рдЙрд╕реЗ рдЫрд╣ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдкрд╛рдЗрдХреНрдХрд╛ 2.0 рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддрдм рд╕реЗ, рдореИрдВрдиреЗ рдореЛрдкрд┐рдбреА рдкрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ:
release-2.2
рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреБрдЫ рднреА рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредdevelop
рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬреЛ Mopidy 3.0 рдмрди рдЬрд╛рдПрдЧреА, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрджрд╛рд╡рдирдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдореЗрд░реЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рд╢рд╛рдпрдж рд╣реИ:
рдХреНрдпрд╛ рдореЛрдкрд┐рдбреА рдХреЛрд░, рдпрд╛ рдореЛрдкрд┐рдбреА-рд╕рд╛рдЙрдВрдбрдХреНрд▓рд╛рдЙрдб рдкреНрд▓рдЧрдЗрди рдХреЛ python3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЖрдкрдХреЗ рдЕрдм рддрдХ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @jodal!
рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреЗ рдкрд╛рдпрдерди 3 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддреЗ рд╣реБрдП) рд╣рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВ make -C docs SPHINXBUILD=sphinx-build-2 man
рд▓реЗрдХрд┐рди рдЗрд╕реЗ sphinx-build-3
рд▓рд┐рдП рдмрджрд▓ рд░рд╣рд╛ рдерд╛ рдмрд╕ рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
make: Entering directory '/home/builder/aports/community/mopidy/src/Mopidy-3.0.0a1/docs'
sphinx-build-3 -b man -d _build/doctrees . _build/man
Running Sphinx v1.8.4
Configuration error:
The configuration file (or one of the modules it imports) called sys.exit()
рдпрд╣ 2.2.3 рдФрд░ 3.0.0a1 рджреЛрдиреЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЕрднреА рддрдХ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ v3 рд╡реИрд╕реЗ рднреА рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдЬрдирд╡рд░реА рдореЗрдВ python2 рдХрд╛ рдЬреАрд╡рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпрд╛ v3 рдореЗрдВ python2 рд╕рдВрдЧрддрддрд╛ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ?
@tmccombs рдиреЗ рдХрд╣рд╛:
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ v3 рд╡реИрд╕реЗ рднреА рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдЬрдирд╡рд░реА рдореЗрдВ python2 рдХрд╛ рдЬреАрд╡рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпрд╛ v3 рдореЗрдВ python2 рд╕рдВрдЧрддрддрд╛ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ?
рдирд╣реАрдВ, рд╣рдо Mopidy 3 рдореЗрдВ Python 2 рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред
рдлрд░рд╡рд░реА рд╕реЗ рдЦреБрдж рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдирд╛:
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдорд╛рд░реНрдЪ 2017 рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдЦрд┐рд░реА рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рдереА, рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрдерди 3 рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЗрддрдирд╛ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдХреЗрд╡рд▓ 2 + 3 рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдпрдерди 2 рд╕реЗ рдХреНрд░рдорд┐рдХ рдХрджрдо рдЙрдард╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред Mopidy 2.x рдиреЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рддрдХ рд╣рдорд╛рд░реА рдХрд╛рдлреА рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХреА рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ Python 2 рдкрд░ рдЕрдЯрдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдФрд░ рд╕реНрдерд┐рд░ рдЬрдЧрд╣ рд╣реЛрдЧреАред
@PureTryOut рдиреЗ рдХрд╣рд╛:
рдпрд╣ 2.2.3 рдФрд░ 3.0.0a1 рджреЛрдиреЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЕрднреА рддрдХ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
Mopidy рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрднреА рддрдХ Python 3 рдореЗрдВ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЕрднреА рдЕрдиреНрдп рд╕рд░рд▓реАрдХрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдВрдХреНрд░рдордг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХреГрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╛рдЗрдерди 3 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВрдЧреЗред
рдХреНрдпрд╛ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ (2.4.0?) рдкрд╛рдпрдерди 3 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ? рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рддрд░рдг рдЕрдкрдиреЗ рдкрд╛рдпрдерди 2 рдкреИрдХреЗрдЬ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ (3.11, рдЕрдЧрд▓реЗ рд╕рд╛рд▓ рдЬрдирд╡рд░реА рдХреЗ рдЕрдВрдд) рддрдХ рдкрд╛рдпрдерди 2 рдХреЛ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореЛрдкрд┐рдбреА рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рддрдм рддрдХ рдкрд╛рдпрдерди 3 рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред
Mopidy 3.0 рдкрд╛рдпрдерди 3 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рдпреЛрдЬрдирд╛ рд╡рд░реНрд╖ рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рд╣реИред
рд╣рд╛рдп @jodal , рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдХреБрдЫ рдкрд╛рдпрдерди 3 рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрдХреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рддреЛ рд╕реАрдзреЗ mopidy рдореЗрдВ рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рд╣рд╛рдп @zubieta!
рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХреЛ рдорд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рдпрдерди 3 рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХрд╛ ~ 10% рдЪрд▓рд╛рддрд╛ рд╣реИред рдЬрд▓реНрдж рд╣реА рдХреБрдЫ рдкреАрдЖрд░ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдмрдврд╝рд╛рдХрд░ ~ 20% рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреАрдЖрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреА рдирдХрд▓ рди рдХрд░реЗрдВ, рдФрд░ рдХреБрдЫ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреЛрд░реНрдЯ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП #1809 рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВред
рдЬреИрд╕реЗ рд╣реА рдореЛрдкрд┐рдбреА рдХреЛрд░ рдкрд╛рдпрдерди 3 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Mopidy рдФрд░ Python 3 рдкрд░ рд╕реНрдЯреЗрдЯрд╕ рдЕрдкрдбреЗрдЯ рдХрд╛ рд╕рдордп рд╣реИ ...
рдореЛрдкрд┐рдбреА рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ 2016 рдХрд╛ рд╣рд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЕрдм рдкрд╛рдпрдерди 2.7 рдФрд░ рдкрд╛рдпрдерди 3.7 рджреЛрдиреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕ рд╕рд╛рд░реЗ рдХрд╛рдо рдХреЛ develop
рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @kingosticks рдХреЛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА develop
рд╢рд╛рдЦрд╛ рдЬрд╛рд░реА рдХреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ PyPI рдХреЛ Mopidy 3.0.0a2 рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
python3.7 -m pip install --pre mopidy
рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ рдкрд╛рд╕рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рд╣реЛрдиреЗ, рдПрдордкреАрдбреА рдФрд░ рдПрдЪрдЯреАрдЯреАрдкреА рдореЗрдВ рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдФрд░ рдореБрдЯреНрдареА рднрд░ рдПрдордкреА3 рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИред
Mopidy 3.0.0a2 рд╢рд╛рдпрдж рдЕрдм рддрдХ рдХрд╛ рдПрдХрдорд╛рддреНрд░ Mopidy рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдЧрд╛ рдЬреЛ Python 2 рдФрд░ 3 рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред рд╣рдо рддреБрд░рдВрдд Python 2.7 рд╕рдкреЛрд░реНрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ Mopidy рдХреЛ рдПрдХ рдХреНрд▓реАрдирд░ рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ Python рдХреЛрдб рдмреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗред
рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдХреА рдпреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
3.0 рдлрд╝рд╛рдЗрдирд▓ рдХреА рдУрд░ рдорд╛рд░реНрдЪ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░, рд╣рдореЗрдВ "mopidy" рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рдкрд╛рдП рдЧрдП PyPI рдкрд░ 122 рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмрд╛рдХреА рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ ред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП:
76 рдХрдорд┐рдЯ, 204 рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓реА рдЧрдИрдВ, 9832 рдЗрдВрд╕рд░реНрд╢рди (+), 9612 рдбрд┐рд▓реАрдЯ (-) рдмрд╛рдж рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдкреНрд░реА-рд░рд┐рд▓реАрдЬрд╝ рд╣реИ: Mopidy 3.0.0a3 рдЕрдм PyPI рдкрд░ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
python3 -m pip install --pre mopidy
3.0.0a2 рдХреЗ рдмрд╛рдж рд╕реЗ рдирдпрд╛:
mopidy.compat
рдореЙрдбреНрдпреВрд▓ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред# encoding: utf-8
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЪрд▓реА рдЧрдИрдВредfrom __future__ ...
рдЖрдпрд╛рдд рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВредobject
рд╕рднреА рдЙрдкрд╡рд░реНрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВред.encode()
рдФрд░ .decode()
рдЕрдм рд╕реНрдкрд╖реНрдЯ "utf-8"
рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИредblack
рд╕рд╛рде рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реИред :рдХрд╛рд▓рд╛ рджрд┐рд▓:isort
рдЕрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЖрдпрд╛рдд рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредmock
рдХреЛ unittest.mock
рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредassert
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛ рдФрд░ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред%
рдФрд░ .format()
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ f-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредsetup.py
рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ setup.cfg
рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредtox.ini
, dev-requirements.txt
, рдФрд░ docs/requirements.txt
рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕рднреА рдХреЛ setup.cfg
рдореЗрдВ "рдЕрддрд┐рд░рд┐рдХреНрдд" рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдм python3 -m pip install -e ".[dev]"
рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдИ рд╣реИредрдЖрдЧреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрднреА рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред
Mopidy рдХреЛрд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдБ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
Mopidy 3.0 рдлрд╝рд╛рдЗрдирд▓ рдХреЗ рдмрд╛рдХреА рд░рд╛рд╕реНрддреЗ v3.0 рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ:
https://github.com/mopidy/mopidy/milestone/55
рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреЛрд░реНрдб рдкрд░ Python 3 рдХреЗ рдкреНрд░рдореБрдЦ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://github.com/orgs/mopidy/projects/2
рдпрджрд┐ рдЖрдк рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ Mopidy рдХреЛ Python 3 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рдЦреЛрд▓реЗрдВ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЕрднреА рднреА Mopidy рдХреЛ Python 3 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реВрдБред рдореИрдВ Mopidy рдХреЛ Python 2 рдХреЗ рд╕рд╛рде рдорд░рдиреЗ рдирд╣реАрдВ рджреВрдБрдЧрд╛ред
рдЗрддрд┐рд╣рд╛рд╕
рд╣рдореЗрдВ рдкрд╛рдпрдерди 3 рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рдо рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдкрд╛рдпрдерди 3 рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рдВрдмреЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд, рдореЗрд░реА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдЙрджреНрдпрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВред рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрд╕ рд╕рдордп рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рддрдХ Mopidy.js рдФрд░ Mopidy-MPRIS рдХреЛ рдХреБрдЫ рдХреЛрдорд▓ рдкреНрдпрд╛рд░ рдФрд░ рджреЗрдЦрднрд╛рд▓ рдорд┐рд▓реА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдкрд╛рдЗрдХреНрдХрд╛ рдХреА рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЕрдиреНрдп рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ Mopidy рд╕реЗрдЯрдЕрдкреЛрдВ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдХрд╛рд░рдХ рд╕реЗ рдХрдо рдХрд░ рджреЗрдЧрд╛ред
рдЕрдЧрд▓рд╛
рдПрдХ рдмрд╛рд░ рдкрд╛рдЗрдХреНрдХрд╛ 2 рднреЗрдЬ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рдореЛрдкрд┐рдбреА рдХреЛ рдкрд╛рдпрдерди 3 рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИред
рд╡рд╣ рдХрд╛рдо рдХрдм рдкреВрд░рд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЛрдИ рд╕рдордп рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╕ рдЦреБрдж рдХреЛ рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдм рдмрд╛рд╣рд░реА рдХрд╛рд░рдХреЛрдВ рдФрд░ рдкреНрд░реЗрд░рдгрд╛ рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдорджрдж рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реЗ рдирдП рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рдФрд░ рдирд┐рдпрдорд┐рдд рддрд╛рд▓ рдореЗрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреАрдЖрд░ рд╕рдореАрдХреНрд╖рд╛рдПрдВ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╣реА рдбрд┐рдореЛрдЯрд┐рд╡реЗрдЯрд┐рдВрдЧ рдмрди рдЬрд╛рдПрдВрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рднреА рдорджрдж рд╣рдореЗрд╢рд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдорджрдж рдХрд░рддреА рд╣реИред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЕрдиреНрдп рдкреНрд░рдореБрдЦ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдУрдВ рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рдореИрдВ рд╕рднреА рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдордп рдФрд░ рдкреНрд░реЗрд░рдгрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдПрдХ рдмрд╛рд░ рдореИрдВ рдореЛрдкрд┐рдбреА 3 рдкрд░ рдареАрдХ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рд╡реЗ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред
рдЬреАрд╡рди рдФрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рд░реА рд╣рд▓рдЪрд▓ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦрдХрд░, рдпрд╣ рди рддреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХрд╛рд░реНрдп рд╣реИ рдФрд░ рди рд╣реА рдРрд╕рд╛ рдХрд╛рд░реНрдп рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдиреНрдп рдЪрд▓ рд░рд╣реЗ рд╕рд╛рдорд╛рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдлреЛрдХрд╕ рдмрди рд╕рдХреЗред
рдореЛрдкрд┐рдбреА 3
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдорд╛рд░реНрдЪ 2017 рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдЦрд┐рд░реА рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рдереА, рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрдерди 3 рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЗрддрдирд╛ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдХреЗрд╡рд▓ 2 + 3 рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдпрдерди 2 рд╕реЗ рдХреНрд░рдорд┐рдХ рдХрджрдо рдЙрдард╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред Mopidy 2.x рдиреЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рддрдХ рд╣рдорд╛рд░реА рдХрд╛рдлреА рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХреА рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ Python 2 рдкрд░ рдЕрдЯрдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдФрд░ рд╕реНрдерд┐рд░ рдЬрдЧрд╣ рд╣реЛрдЧреАред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд╛рд░реНрдЪ 2017 рд╕реЗ рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ:
pip install mopidy
рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПpip install --pre mopidy
рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред