With python3.11, when trying to play a stream from the surfmusik plugin (and probably others), it crashes with this error:
Traceback (most recent call last):
File "/usr/share/streamtuner2/st2.py", line 287, in on_play_clicked
row = channel.play()
^^^^^^^^^^^^^^
File "/usr/share/streamtuner2/channels/__init__.py", line 606, in play
action.play(row, audioformat, listformat)
File "/usr/share/streamtuner2/action.py", line 184, in play
run_fmt_url(row, audioformat, source, conf.play)
File "/usr/share/streamtuner2/action.py", line 173, in run_fmt_url
cmd = interpol(cmd, source, row, add_default=add_default)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/share/streamtuner2/action.py", line 269, in interpol
url = convert_playlist(row["url"], listfmt(source), listfmt(dest), local_file=True, row=row)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/share/streamtuner2/action.py", line 314, in convert_playlist
probe = cnv.probe_fmt()
^^^^^^^^^^^^^^^
File "/usr/share/streamtuner2/action.py", line 433, in probe_fmt
if re.search(rx, self.src, re.X|re.M|re.S):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/__init__.py", line 176, in search
return _compile(pattern, flags).search(string)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/__init__.py", line 294, in _compile
p = _compiler.compile(pattern, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_compiler.py", line 743, in compile
p = _parser.parse(p, flags)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 980, in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 455, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 863, in _parse
p = _parse_sub(source, state, sub_verbose, nested + 1)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 455, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 841, in _parse
raise source.error('global flags not at the start '
re.error: global flags not at the start of the expression at position 25
changing line 103 of action.py from:
("xspf", r""" <\?xml .* <playlist .* ((?i)http://xspf\.org)/ns/0/ """),
to
("xspf", r""" (?i)<\?xml .* <playlist .* (http://xspf\.org)/ns/0/ """),
fixes the problem.