Repository: yt-dlp/yt-dlp

Issue:
[ITV] Fix "No downloads available"
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2021.11.10.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- [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](https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

United Kingdom

### Description

Downloading videos from ITV has stopped working today. After some debugging I found out, that I just needed to flip the array in the [itv extractor](https://github.com/yt-dlp/yt-dlp/blob/ff51ed588fa75256b98ead67bdef7edda08b66f0/yt_dlp/extractor/itv.py#L150) to be `['aes', 'hls']`. Not sure whether this is happening for others.

### Verbose log

```shell
[debug] Command-line config: ['--no-geo-bypass', '-Uv', 'https://www.itv.com/hub/im-a-celebrity-get-me-out-of-here/1a7103a0274']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2021.11.10.1 (zip)
[debug] Python version 3.9.7 (CPython 64bit) - Linux-5.14.8-arch1-1-x86_64-with-glibc2.33
[debug] exe versions: ffmpeg 4.4 (setts), ffprobe 4.4, rtmpdump 2.4
[debug] Optional libraries: Cryptodome, mutagen, sqlite
[debug] Proxy map: {}
yt-dlp is up to date (2021.11.10.1)
[debug] [ITV] Extracting URL: https://www.itv.com/hub/im-a-celebrity-get-me-out-of-here/1a7103a0274
[ITV] 1a7103a0274: Downloading webpage
ERROR: [ITV] 1a7103a0274: 1a7103a0274: No downloads available
Traceback (most recent call last):
  File "/home/tim/Videos/./yt-dlp/yt_dlp/extractor/common.py", line 595, in extract
    ie_result = self._real_extract(url)
  File "/home/tim/Videos/./yt-dlp/yt_dlp/extractor/itv.py", line 153, in _real_extract
    raise ExtractorError('No downloads available', expected=True, video_id=video_id)
yt_dlp.utils.ExtractorError: 1a7103a0274: No downloads available
Traceback (most recent call last):
  File "/home/tim/Videos/./yt-dlp/yt_dlp/extractor/common.py", line 595, in extract
    ie_result = self._real_extract(url)
  File "/home/tim/Videos/./yt-dlp/yt_dlp/extractor/itv.py", line 153, in _real_extract
    raise ExtractorError('No downloads available', expected=True, video_id=video_id)
yt_dlp.utils.ExtractorError: 1a7103a0274: No downloads available

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tim/Videos/./yt-dlp/yt_dlp/YoutubeDL.py", line 1311, in wrapper
    return func(self, *args, **kwargs)
  File "/home/tim/Videos/./yt-dlp/yt_dlp/YoutubeDL.py", line 1336, in __extract_info
    ie_result = ie.extract(url)
  File "/home/tim/Videos/./yt-dlp/yt_dlp/extractor/common.py", line 621, in extract
    raise type(e)(e.msg, **kwargs)
yt_dlp.utils.ExtractorError: [ITV] 1a7103a0274: 1a7103a0274: No downloads available
```



Discussion:

Resolving patch:
diff --git a/yt_dlp/extractor/itv.py b/yt_dlp/extractor/itv.py
--- a/yt_dlp/extractor/itv.py
+++ b/yt_dlp/extractor/itv.py
@@ -147,7 +147,7 @@ def _real_extract(self, url):
         platform_tag_video, featureset_video = next(
             ((platform_tag, featureset)
              for platform_tag, featuresets in reversed(list(variants.items())) for featureset in featuresets
-             if try_get(featureset, lambda x: x[:2]) == ['hls', 'aes']),
+             if set(try_get(featureset, lambda x: x[:2]) or []) == {'aes', 'hls'}),
             (None, None))
         if not platform_tag_video or not featureset_video:
             raise ExtractorError('No downloads available', expected=True, video_id=video_id)


Test patch: