Repository: yt-dlp
Issue: Add support for digitaler-lesesaal.bundesarchiv.de.
Labels: site-request

### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting a new site support request
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [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 none of provided URLs [violate any copyrights](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy) or contain any [DRM](https://en.wikipedia.org/wiki/Digital_rights_management) to the best of my knowledge
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and 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)
- [ ] 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 am willing to share it if required

### Region

_No response_

### Example URLs

- Single video: https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446
- Single video: https://digitaler-lesesaal.bundesarchiv.de/video/7490/658446
- Playlist: https://digitaler-lesesaal.bundesarchiv.de/en/video/358/661603

### Provide a description that is worded well enough to be understood

[Embed link](https://digitaler-lesesaal.bundesarchiv.de/lixe/view/fa2b5cd6-e807-4a32-b7d5-e04f6befcc17)

A downloadable m3u8 URL can be extracted with _Inspect Element_:
https://digitaler-lesesaal.bundesarchiv.de/lixe/files/fa/2b/fa2b5cd6-e807-4a32-b7d5-e04f6befcc17/20216_01_01_Die_Stadt.m3u8

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [ ] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
[debug] Command-line config: ['-vU', '--ffmpeg-location', 'C:\\Program Files\\ffmpeg-master-latest-win64-gpl\\bin', 'https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds [644d84d77] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-8.1-6.3.9600-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-115155-ge4da96c6b2-20240509 (setts), ffprobe N-115155-ge4da96c6b2-20240509
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.35.5, urllib3-2.2.2, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1834 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds)
[generic] Extracting URL: https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446
[generic] 658446: Downloading webpage
ERROR: SSLV3_ALERT_HANDSHAKE_FAILURE: The server may not support the current cipher list. Try using --legacy-server-connect
Traceback (most recent call last):
  File "urllib3\connectionpool.py", line 466, in _make_request
  File "urllib3\connectionpool.py", line 1095, in _validate_conn
  File "urllib3\connection.py", line 652, in connect
  File "urllib3\connection.py", line 805, in _ssl_wrap_socket_and_match_hostname
  File "urllib3\util\ssl_.py", line 465, in ssl_wrap_socket
  File "urllib3\util\ssl_.py", line 509, in _ssl_wrap_socket_impl
  File "ssl.py", line 500, in wrap_socket
  File "ssl.py", line 1040, in _create
  File "ssl.py", line 1309, in do_handshake
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests\adapters.py", line 667, in send
  File "urllib3\connectionpool.py", line 843, in urlopen
  File "urllib3\util\retry.py", line 449, in increment
  File "urllib3\util\util.py", line 39, in reraise
  File "urllib3\connectionpool.py", line 789, in urlopen
  File "urllib3\connectionpool.py", line 490, in _make_request
urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\networking\_requests.py", line 324, in _send
  File "requests\sessions.py", line 589, in request
  File "requests\sessions.py", line 703, in send
  File "requests\adapters.py", line 711, in send
requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1131)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 4160, in urlopen
  File "yt_dlp\networking\common.py", line 117, in send
  File "yt_dlp\networking\_helper.py", line 208, in wrapper
  File "yt_dlp\networking\common.py", line 337, in send
  File "yt_dlp\networking\_requests.py", line 342, in _send
yt_dlp.networking.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1131)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1622, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1757, in __extract_info
  File "yt_dlp\extractor\common.py", line 740, in extract
  File "yt_dlp\extractor\generic.py", line 2383, in _real_extract
  File "yt_dlp\extractor\common.py", line 896, in _request_webpage
  File "yt_dlp\YoutubeDL.py", line 4198, in urlopen
yt_dlp.networking.exceptions.RequestError: SSLV3_ALERT_HANDSHAKE_FAILURE: The server may not support the current cipher list. Try using --legacy-server-connect


[debug] Command-line config: ['-vU', '--ffmpeg-location', 'C:\\Program Files\\ffmpeg-master-latest-win64-gpl\\bin', '--legacy-server-connect', 'https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds [644d84d77] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-8.1-6.3.9600-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-115155-ge4da96c6b2-20240509 (setts), ffprobe N-115155-ge4da96c6b2-20240509
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.35.5, urllib3-2.2.2, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1834 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds)
[generic] Extracting URL: https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446
[generic] 658446: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] 658446: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1622, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1757, in __extract_info
  File "yt_dlp\extractor\common.py", line 740, in extract
  File "yt_dlp\extractor\generic.py", line 2521, in _real_extract
yt_dlp.utils.UnsupportedError: Unsupported URL: https://digitaler-lesesaal.bundesarchiv.de/en/video/7490/658446


# Using the extracted m3u8 URL
[debug] Command-line config: ['-v', '--ffmpeg-location', 'C:\\Program Files\\ffmpeg-master-latest-win64-gpl\\bin', '--legacy-server-connect', 'https://digitaler-lesesaal.bundesarchiv.de/lixe/files/fa/2b/fa2b5cd6-e807-4a32-b7d5-e04f6befcc17/20216_01_01_Die_Stadt.m3u8']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version nightly@2024.07.12.232729 from yt-dlp/yt-dlp-nightly-builds [644d84d77] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-8.1-6.3.9600-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-115155-ge4da96c6b2-20240509 (setts), ffprobe N-115155-ge4da96c6b2-20240509
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.35.5, urllib3-2.2.2, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1834 extractors
[generic] Extracting URL: https://digitaler-lesesaal.bundesarchiv.de/lixe/files/fa/2b/fa2b5cd6-e807-4a32-b7d5-e04f6befcc17/20216_01_01_Die_Stadt.m3u8
[generic] 20216_01_01_Die_Stadt: Downloading webpage
[debug] Identified a direct video link
[generic] 20216_01_01_Die_Stadt: Downloading m3u8 information
[generic] 20216_01_01_Die_Stadt: Checking m3u8 live status
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 20216_01_01_Die_Stadt: Downloading 1 format(s): 5640
[debug] Invoking hlsnative downloader on "https://digitaler-lesesaal.bundesarchiv.de/lixe/files/fa/2b/fa2b5cd6-e807-4a32-b7d5-e04f6befcc17/20216_01_01_Die_Stadt_stream_0/master.m3u8"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 2937
[download] Destination: 20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].mp4
[debug] File locking is not supported. Proceeding without locking
[download] 100% of    3.52GiB in 00:21:46 at 2.76MiB/s
[debug] ffprobe command line: "C:\Program Files\ffmpeg-master-latest-win64-gpl\bin\ffprobe" -hide_banner -show_format -show_streams -print_format json "file:20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].mp4"
[debug] ffmpeg command line: "C:\Program Files\ffmpeg-master-latest-win64-gpl\bin\ffprobe" -show_streams "file:20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].mp4"
[FixupM3u8] Fixing MPEG-TS in MP4 container of "20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].mp4"
[debug] ffmpeg command line: "C:\Program Files\ffmpeg-master-latest-win64-gpl\bin\ffmpeg" -y -loglevel repeat+info -i "file:20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].mp4" -map 0 -dn -ignore_unknown -c copy -f mp4 -bsf:a aac_adtstoasc -movflags +faststart "file:20216_01_01_Die_Stadt [20216_01_01_Die_Stadt].temp.mp4"
```