Repository: youtube-dl
Issue: [YouTube] ERROR: Signature extraction failed, KeyError QV
Labels: broken-IE,fixed

<!--

######################################################################
  WARNING!
  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################

-->
[Update] This issue is solved: see https://github.com/ytdl-org/youtube-dl/issues/32314#issuecomment-1595779984.


## Checklist

<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dl:
- First of, make sure you are using the latest version of youtube-dl. Run `youtube-dl --version` and ensure your version is 2021.12.17. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
- Read bugs section in FAQ: http://yt-dl.org/reporting
- Finally, put x into all relevant boxes (like this [x])
-->

- [x] I'm reporting a broken site support issue
- [x] I've verified that I'm running youtube-dl version **2021.12.17**
- [x] I've checked that all provided URLs are alive and playable in a browser
- [x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [x] I've searched the bugtracker for similar bug reports including closed ones
- [x] I've read bugs section in FAQ


## Verbose log
```
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', 'https://youtube.com/watch?v=zO6vvA4-hBs']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python 3.10.11 (CPython x86_64 64bit) - Linux-5.19.0-45-generic-x86_64-with-glibc2.36 - OpenSSL 1.1.1t  7 Feb 2023 - glibc 2.36
[debug] exe versions: ffmpeg 5.1.1, ffprobe 5.1.1
[debug] Proxy map: {}
[youtube] zO6vvA4-hBs: Downloading webpage
[youtube] zO6vvA4-hBs: Downloading player 6ed0d907
ERROR: Signature extraction failed: Traceback (most recent call last):
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1585, in _decrypt_signature
    func = self._extract_signature_function(
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1510, in _extract_signature_function
    cache_res = res(test_string)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1574, in <lambda>
    return lambda s: initial_function([s])
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 36, in __call__
    return self.func(*args, **kwargs)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 1037, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ' '), var_stack, allow_recursion - 1)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 441, in interpret_statement
    ret, should_return = self.interpret_statement(sub_stmt, local_vars, allow_recursion)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 915, in interpret_statement
    return eval_method(), should_return
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 907, in eval_method
    return obj[idx](argvals, allow_recursion=allow_recursion)
KeyError: 'QV'
 (caused by KeyError('QV')); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1585, in _decrypt_signature
    func = self._extract_signature_function(
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1510, in _extract_signature_function
    cache_res = res(test_string)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1574, in <lambda>
    return lambda s: initial_function([s])
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 36, in __call__
    return self.func(*args, **kwargs)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 1037, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ' '), var_stack, allow_recursion - 1)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 441, in interpret_statement
    ret, should_return = self.interpret_statement(sub_stmt, local_vars, allow_recursion)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 915, in interpret_statement
    return eval_method(), should_return
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 907, in eval_method
    return obj[idx](argvals, allow_recursion=allow_recursion)
KeyError: 'QV'
Traceback (most recent call last):
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1585, in _decrypt_signature
    func = self._extract_signature_function(
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1510, in _extract_signature_function
    cache_res = res(test_string)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1574, in <lambda>
    return lambda s: initial_function([s])
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 36, in __call__
    return self.func(*args, **kwargs)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 1037, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ' '), var_stack, allow_recursion - 1)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 441, in interpret_statement
    ret, should_return = self.interpret_statement(sub_stmt, local_vars, allow_recursion)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 915, in interpret_statement
    return eval_method(), should_return
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 907, in eval_method
    return obj[idx](argvals, allow_recursion=allow_recursion)
KeyError: 'QV'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 825, in wrapper
    return func(self, *args, **kwargs)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 846, in __extract_info
    ie_result = ie.extract(url)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/common.py", line 535, in extract
    ie_result = self._real_extract(url)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 2028, in _real_extract
    signature = self._decrypt_signature(sc['s'][0], video_id, player_url)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1595, in _decrypt_signature
    raise ExtractorError(
youtube_dl.utils.ExtractorError: Signature extraction failed: Traceback (most recent call last):
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1585, in _decrypt_signature
    func = self._extract_signature_function(
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1510, in _extract_signature_function
    cache_res = res(test_string)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1574, in <lambda>
    return lambda s: initial_function([s])
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 36, in __call__
    return self.func(*args, **kwargs)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 1037, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ' '), var_stack, allow_recursion - 1)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 441, in interpret_statement
    ret, should_return = self.interpret_statement(sub_stmt, local_vars, allow_recursion)
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 915, in interpret_statement
    return eval_method(), should_return
  File "/var/miniconda3/envs/transcriber/lib/python3.10/site-packages/youtube_dl/jsinterp.py", line 907, in eval_method
    return obj[idx](argvals, allow_recursion=allow_recursion)
KeyError: 'QV'
 (caused by KeyError('QV')); please report this issue on https://yt-dl.org/bug .
```


## Description

I am unable to get the filename or download this video. I am using it in python code, but even from the command line the error above occurs.