Repository: yt-dlp
Issue: [orf:tvthek] nested playlists: detect 1st-level playlists
Labels: site-enhancement,triage

### 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 requesting a site-specific feature
- [X] I've verified that I'm running yt-dlp version **2023.03.04** ([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 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)
- [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

Austria:yes, worldwide:maybe

### Example URLs

Example URLs are cited below, but almost all URLs expire within 7 days after broadcast so new URLs might be required.

### Provide a description that is worded well enough to be understood

## basic information

URLs from [orf:tvthek] mostly follow this pattern:

`https://tvthek.orf.at/profile/[broadcast_series]/[broadcast_series_ID]/[broadcast_episode]/[broadcast_episode_ID]`
example:
https://tvthek.orf.at/profile/Themenmontag/13687392/Themenmontag-Die-Wahrheit-ueber-Fisch/14179024

## problem

But [orf:tvthek] extractor doesn't yet interpret the URL as a playlist if only the playlist URL is given.
Example:
https://tvthek.orf.at/profile/Themenmontag/13687392
i.e. `https://tvthek.orf.at/profile/[broadcast_series]/[broadcast_series_ID]`
... is not recognized as a playlist.

## suggested solution

**Basically there are two different URLs listing the playlist entries:**
* https://tvthek.orf.at/profile/Themenmontag/13687392/
  The playlist entries are listed below under the linkified header _"Weitere Ausgaben dieser Sendung"_ (german for _"more episodes of this broadcast"_), which links to the URL below ("......./episodes")
* https://tvthek.orf.at/profile/Themenmontag/13687392/episodes

It would be helpful if the extractor could recognize **both** of these URLs as playlists.

### 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] 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

I also tried `--yes-playlist` (just in case, but it should work without), but still the 1st URL only downloads the first playlist item:
<details>
<summary>log</summary>

[debug] Command-line config: ['https://tvthek.orf.at/profile/Themenmontag/13687392', '-f', 'b', '--yes-playlist', '-v', '--skip-download', '--no-config']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2023.05.06.091501 [c449c0655] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.2
[debug] Proxy map: {}
[debug] Loaded 1813 extractors
[orf:tvthek] Extracting URL: https://tvthek.orf.at/profile/Themenmontag/13687392
[orf:tvthek] 13687392: Downloading webpage
[download] Downloading playlist: 13687392
[orf:tvthek] 15394514: Downloading hls-Q1A-Niedrig m3u8 manifest
[orf:tvthek] 15394514: Downloading hls-Q4A-Mittel m3u8 manifest
[orf:tvthek] 15394514: Downloading hls-Q6A-Hoch m3u8 manifest
[orf:tvthek] 15394514: Downloading hls-Q8C-Sehr hoch m3u8 manifest
[orf:tvthek] 15394514: Downloading hls-QXB-Adaptiv m3u8 manifest
[orf:tvthek] 15394514: Downloading f4m manifest
[orf:tvthek] 15394514: Downloading f4m manifest
[orf:tvthek] 15394514: Downloading f4m manifest
[orf:tvthek] 15394514: Downloading f4m manifest
[orf:tvthek] 15394514: Downloading f4m manifest
[orf:tvthek] 15394514: Downloading dash-Q1A-Niedrig mpd manifest
[orf:tvthek] 15394514: Downloading dash-Q4A-Mittel mpd manifest
[orf:tvthek] 15394514: Downloading dash-Q6A-Hoch mpd manifest
[orf:tvthek] 15394514: Downloading dash-Q8C-Sehr hoch mpd manifest
[orf:tvthek] 15394514: Downloading dash-QXB-Adaptiv mpd manifest
[orf:tvthek] Playlist 13687392: Downloading 1 items of 1
[download] Downloading item 1 of 1
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[info] 15394514: Downloading 1 format(s): hls-Q8C-Sehr_hoch-3541
[download] Finished downloading playlist: 13687392

</details>

 and the 2nd URL fails on generic extractor:

<details>
<summary>log</summary>

[debug] Command-line config: ['https://tvthek.orf.at/profile/Themenmontag/13687392/episodes', '-f', 'b', '-v', '--no-config', '--yes-playlist', '--skip-download']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2023.05.06.091501 [c449c0655] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.2
[debug] Proxy map: {}
[debug] Loaded 1813 extractors
[generic] Extracting URL: https://tvthek.orf.at/profile/Themenmontag/13687392/episodes
[generic] episodes: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] episodes: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://tvthek.orf.at/profile/Themenmontag/13687392/episodes
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1532, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1608, in __extract_info
  File "yt_dlp\extractor\common.py", line 694, in extract
  File "yt_dlp\extractor\generic.py", line 2568, in _real_extract
yt_dlp.utils.UnsupportedError: Unsupported URL: https://tvthek.orf.at/profile/Themenmontag/13687392/episodes

</details>

# related
* #6486
* #7268
* #6984