Repository: yt-dlp/yt-dlp

Issue:
[ArteTV]: Duplicate formats, incorrect "More Info" column
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2022.07.18** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [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

France, Germany, ...

### Provide a description that is worded well enough to be understood

In the formats listed with "--list-formats/-F" on ArteTV several video-only formats and sometimes some audio-only formats seem to be duplicates. md5sum/sha256sum confirms that different video-only files for supposedly different formats have the same contents.

In the example below from https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/ all six VOF-*409 video formats have the same content. Same for all other video resolutions. Also all six audio-only formats in this example have the same content (French).

So next to the duplicates, also the "More Info" column contents are incorrect.

Tested on recent master (871a8929bcc3).

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
$ yt-dlp -vU -F "https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/"
[debug] Command-line config: ['-vU', '-F', 'https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.07.18 [135f05ef6] (zip)
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Python 3.10.5 (CPython 64bit) - Linux-5.18.0-2-amd64-x86_64-with-glibc2.33 (glibc 2.33)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 5.0.1-3 (setts), ffprobe 5.0.1-3, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.11.0, brotli-1.0.9, certifi-2020.06.20, mutagen-1.45.1, pyxattr-0.7.2, secretstorage-3.3.2, sqlite3-2.6.0, websockets-10.2
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.07.18, Current version: 2022.07.18
yt-dlp is up to date (2022.07.18)
[debug] [ArteTV] Extracting URL: https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/
[ArteTV] 108210-043-A: Downloading JSON metadata
[ArteTV] 108210-043-A: Downloading m3u8 information
[ArteTV] 108210-043-A: Downloading m3u8 information
[ArteTV] 108210-043-A: Downloading m3u8 information
[ArteTV] 108210-043-A: Downloading m3u8 information
[ArteTV] 108210-043-A: Downloading m3u8 information
[ArteTV] 108210-043-A: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[info] Available formats for 108210-043-A:
ID                               EXT RESOLUTION FPS │  FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC     MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
VOF-STMF-program_audio_0-VOF     mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Original french version - closed captioning (FR) [ccFR]
VOF-STE_ESP_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Polish (Subtitles) [OGsub-POL]
VOF-program_audio_0-VOF          mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] French (Original) [FR]
VOF-STE_ANG_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] English (Subtitles) [OGsub-ANG]
VOF-STMF-409                     mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only Original french version - closed captioning (FR) [ccFR]
VOF-STMF-791                     mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only Original french version - closed captioning (FR) [ccFR]
VOF-STMF-1244                    mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only Original french version - closed captioning (FR) [ccFR]
VOF-STMF-1962                    mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only Original french version - closed captioning (FR) [ccFR]
VOF-STE_ESP_-409                 mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-409                 mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-409                 mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only Polish (Subtitles) [OGsub-POL]
VOF-STE_ESP_-791                 mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-791                 mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-791                 mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only Polish (Subtitles) [OGsub-POL]
VOF-STE_ESP_-1244                mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-1244                mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-1244                mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only Polish (Subtitles) [OGsub-POL]
VOF-STE_ESP_-1962                mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-1962                mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-1962                mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only Polish (Subtitles) [OGsub-POL]
VOF-409                          mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only French (Original) [FR]
VOF-791                          mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only French (Original) [FR]
VOF-1244                         mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only French (Original) [FR]
VOF-1962                         mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only French (Original) [FR]
VOF-STE_ANG_-409                 mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only English (Subtitles) [OGsub-ANG]
VOF-STE_ANG_-791                 mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only English (Subtitles) [OGsub-ANG]
VOF-STE_ANG_-1244                mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only English (Subtitles) [OGsub-ANG]
VOF-STE_ANG_-1962                mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only English (Subtitles) [OGsub-ANG]
$
$ yt-dlp -vU -f all -o "%(title)s [%(id)s]-%(format)s.%(ext)s" "https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/"
[...]
$ md5sum *.mp4 | sort
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-791 - 640x360 (French (Original) [FR]).mp4
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ANG_-791 - 640x360 (English (Subtitles) [OGsub-ANG]).mp4
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ESP_-791 - 640x360 (Spanish (Subtitles) [OGsub-ESP]).mp4
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ITA_-791 - 640x360 (Italian (Subtitles) [OGsub-ITA]).mp4
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_POL_-791 - 640x360 (Polish (Subtitles) [OGsub-POL]).mp4
85166a8b1647eb4f2654a61b602805c2  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STMF-791 - 640x360 (Original french version - closed captioning (FR) [ccFR]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-1962 - 1280x720 (French (Original) [FR]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ANG_-1962 - 1280x720 (English (Subtitles) [OGsub-ANG]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ESP_-1962 - 1280x720 (Spanish (Subtitles) [OGsub-ESP]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ITA_-1962 - 1280x720 (Italian (Subtitles) [OGsub-ITA]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_POL_-1962 - 1280x720 (Polish (Subtitles) [OGsub-POL]).mp4
d3f2da1b1f84f71c2f6c0b5d19a7f3cd  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STMF-1962 - 1280x720 (Original french version - closed captioning (FR) [ccFR]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-program_audio_0-VOF - audio only (French (Original) [FR]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ANG_-program_audio_0-VOF - audio only (English (Subtitles) [OGsub-ANG]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ESP_-program_audio_0-VOF - audio only (Spanish (Subtitles) [OGsub-ESP]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ITA_-program_audio_0-VOF - audio only (Italian (Subtitles) [OGsub-ITA]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_POL_-program_audio_0-VOF - audio only (Polish (Subtitles) [OGsub-POL]).mp4
e0bd18cb418970022c5041ababb6dc4f  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STMF-program_audio_0-VOF - audio only (Original french version - closed captioning (FR) [ccFR]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-409 - 384x216 (French (Original) [FR]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ANG_-409 - 384x216 (English (Subtitles) [OGsub-ANG]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ESP_-409 - 384x216 (Spanish (Subtitles) [OGsub-ESP]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ITA_-409 - 384x216 (Italian (Subtitles) [OGsub-ITA]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_POL_-409 - 384x216 (Polish (Subtitles) [OGsub-POL]).mp4
ea21b3c1c511d8c5e75ed2b85ed2dec6  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STMF-409 - 384x216 (Original french version - closed captioning (FR) [ccFR]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-1244 - 768x432 (French (Original) [FR]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ANG_-1244 - 768x432 (English (Subtitles) [OGsub-ANG]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ESP_-1244 - 768x432 (Spanish (Subtitles) [OGsub-ESP]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_ITA_-1244 - 768x432 (Italian (Subtitles) [OGsub-ITA]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STE_POL_-1244 - 768x432 (Polish (Subtitles) [OGsub-POL]).mp4
f14045181a869f6d436bf4f829d4d789  Finland and Sweden Opt for NATO [108210-043-A]-VOF-STMF-1244 - 768x432 (Original french version - closed captioning (FR) [ccFR]).mp4
```



Discussion:
> all six VOF-*409 video formats have the same content. Same for all other video resolutions. Also all six audio-only formats in this example have the same content (French).

Formats can have same content but may point to different URLs. We will not de-duplicate in that case. Can you check whether they link to the same URL?

> also the "More Info" column contents are incorrect.

incorrect how?
I can see that the m3u8 info is downloaded six times, which happens to coincide with the 5 differently-named duplicates of each file. Coincidence? 

>incorrect how?

The information in the "more info" tab would lead me to believe that there is something different about each file: 
```VOF-STE_ESP_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Spanish (Subtitles) [OGsub-ESP]```
should contain Spanish subtitles and

```VOF-STE_ANG_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] English (Subtitles) [OGsub-ANG]```
should contain English subtitles, when the files are in fact perfectly identical. No subtitles. 

```VOF-STMF-program_audio_0-VOF     mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Original french version - closed captioning (FR) [ccFR]``` 
does not contain closed captioning, etc. 

>Formats can have same content but may point to different URLs.

As far as I can tell from the JSON returned by running `yt-dlp -J https://www.arte.tv/en/videos/108210-043-A/mapping-the-world-essentials/`, the same URL pointing at identical m3u8 manifests occurs 6 times per format. 
Attached is said JSON (beautified): [pretty.txt](https://github.com/yt-dlp/yt-dlp/files/9229866/pretty.txt)

The different formats (identical in content) don't point at different URLs as far as I can discern. All of this makes proper format selection pretty challenging. 
 
Hi,

It seems that extraction doesn't work anymore for all arte.tv urls. When I try to get the command with the last version ( 2022.07.18), I've got the following error: 

```
ERROR: [ArteTV] 108210-043-A: Unable to download JSON metadata: HTTP Error 404: Not Found (caused by <HTTPError 404: 'Not Found'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 644, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/arte.py", line 54, in _real_extract
    info = self._download_json(
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 1004, in download_content
    res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 968, in download_handle
    res = self._download_webpage_handle(
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 838, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 795, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 777, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query))
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3639, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.9/urllib/request.py", line 523, in open
    response = meth(req, response)
  File "/usr/lib/python3.9/urllib/request.py", line 632, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.9/urllib/request.py", line 561, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.9/urllib/request.py", line 494, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.9/urllib/request.py", line 641, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

```
@e-nemo See pinned issue
I believe Arte is exposing some implementation details to yt-dlp which they hide on their on website video player.

All the [fr] tags make me believe the audio tracks are in French language

```
VOF-STMF-program_audio_0-VOF     mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Original french version - closed captioning (FR) [ccFR]
VOF-STE_ESP_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ITA_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Italian (Subtitles) [OGsub-ITA]
VOF-STE_POL_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Polish (Subtitles) [OGsub-POL]
VOF-program_audio_0-VOF          mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] French (Original) [FR]
VOF-STE_ANG_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] English (Subtitles) [OGsub-ANG]

```

There are multiple video streams for, say Spanish

```
VOF-STE_ESP_-409                 mp4 384x216     25 │ ~ 7.50MiB  410k m3u8  │ avc1.42e00d  410k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ESP_-791                 mp4 640x360     25 │ ~14.49MiB  791k m3u8  │ avc1.4d401e  791k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ESP_-1244                mp4 768x432     25 │ ~22.79MiB 1245k m3u8  │ avc1.4d401e 1245k video only Spanish (Subtitles) [OGsub-ESP]
VOF-STE_ESP_-1962                mp4 1280x720    25 │ ~35.93MiB 1962k m3u8  │ avc1.4d401f 1962k video only Spanish (Subtitles) [OGsub-ESP]
```
and so also for other languages. It's probably the video streams which provide subtitiles. I doubt audio streams provide subtitles and so all the audio streams from the first block are the same - in French.

Arte is probably exposing some implementation details meant for their own website video player. I assume

```
VOF-STE_ESP_-program_audio_0-VOF mp4 audio only     │                 m3u8  │ audio only        unknown    [fr] Spanish (Subtitles) [OGsub-ESP]
```
is chosen for any of the Spanish video version maybe based on some kind of pattern matching (and so forth for other languages). They could have chosen any other audio version for Spanish ... or provide only 1 audio version, but Arte is doing it the way they do it and that is all transparent to the user of the Arte website video player ... and that is all they care.
> The information in the "more info" tab would lead me to believe that there is something different about each file: `VOF-STE_ESP_-program_audio_0-VOF mp4 audio only │ m3u8 │ audio only unknown [fr] Spanish (Subtitles) [OGsub-ESP]` should contain Spanish subtitles

Try to read it as "The audio accompanying the content labeled `Spanish (Subtitles) [OGsub-ESP]`.

> I can see that the m3u8 info is downloaded six times, which happens to coincide with the 5 differently-named duplicates of each file. Coincidence?

Not at all. The original info extracted contains different urls pointing to different master playlists each, however these point to the same video source (Eventhough containing different subtitle data).

Solving this is not that easy, as it required us to guess which ones are the original source.
Currently it looks like we can do so by checking if `shortLabel` starts with either `cc` or `OGsub`.

Resolving patch:
diff --git a/yt_dlp/extractor/arte.py b/yt_dlp/extractor/arte.py
--- a/yt_dlp/extractor/arte.py
+++ b/yt_dlp/extractor/arte.py
@@ -135,6 +135,7 @@ def _real_extract(self, url):
                 'Video is not available in this language edition of Arte or broadcast rights expired', expected=True)
 
         formats, subtitles = [], {}
+        secondary_formats = []
         for stream in config['data']['attributes']['streams']:
             # official player contains code like `e.get("versions")[0].eStat.ml5`
             stream_version = stream['versions'][0]
@@ -152,22 +153,26 @@ def _real_extract(self, url):
                     not m.group('sdh_sub'),                 # and we prefer not the hard-of-hearing subtitles if there are subtitles
                 )))
 
+            short_label = traverse_obj(stream_version, 'shortLabel', expected_type=str, default='?')
             if stream['protocol'].startswith('HLS'):
                 fmts, subs = self._extract_m3u8_formats_and_subtitles(
                     stream['url'], video_id=video_id, ext='mp4', m3u8_id=stream_version_code, fatal=False)
                 for fmt in fmts:
                     fmt.update({
-                        'format_note': f'{stream_version.get("label", "unknown")} [{stream_version.get("shortLabel", "?")}]',
+                        'format_note': f'{stream_version.get("label", "unknown")} [{short_label}]',
                         'language_preference': lang_pref,
                     })
-                formats.extend(fmts)
+                if any(map(short_label.startswith, ('cc', 'OGsub'))):
+                    secondary_formats.extend(fmts)
+                else:
+                    formats.extend(fmts)
                 self._merge_subtitles(subs, target=subtitles)
 
             elif stream['protocol'] in ('HTTPS', 'RTMP'):
                 formats.append({
                     'format_id': f'{stream["protocol"]}-{stream_version_code}',
                     'url': stream['url'],
-                    'format_note': f'{stream_version.get("label", "unknown")} [{stream_version.get("shortLabel", "?")}]',
+                    'format_note': f'{stream_version.get("label", "unknown")} [{short_label}]',
                     'language_preference': lang_pref,
                     # 'ext': 'mp4',  # XXX: may or may not be necessary, at least for HTTPS
                 })
@@ -179,6 +184,8 @@ def _real_extract(self, url):
             # The JS also looks for chapters in config['data']['attributes']['chapters'],
             # but I am yet to find a video having those
 
+        formats.extend(secondary_formats)
+        self._remove_duplicate_formats(formats)
         self._sort_formats(formats)
 
         metadata = config['data']['attributes']['metadata']


Test patch: