Repository: yt-dlp/yt-dlp
Issue category: Feature Request

Issue:
[BiliBili] extract 720p/1080p format without logging in by passing `'try_look': 1` to the api
### 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 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 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 I'm willing to share it if required

### Region

China/Out of China

### Example URLs

https://www.bilibili.com/video/BV1fK4y1t7hj/?spm_id_from=333.337.search-card.all.click&vd_source=...c145ee572cfa536d2947

### Provide a description that is worded well enough to be understood

As mentioned in https://github.com/yt-dlp/yt-dlp/pull/9117#discussion_r1608974583, it is possible to extract 720p/1080p formats(`80`&`64`) without logging in by passing the parameter `'try_look': 1` to the API.
(though premium formats `120`&`116` are still not accessible)

### 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
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV1fK4y1t7hj/?spm_id_from=333.337.search-card.all.click&vd_source=...c145ee572cfa536d2947
[BiliBili] 1fK4y1t7hj: Downloading webpage
[BiliBili] BV1fK4y1t7hj: Extracting videos in anthology
[BiliBili] BV1fK4y1t7hj: Downloading wbi sign
[BiliBili] BV1fK4y1t7hj: Downloading video formats for cid 196018899 
[BiliBili] Format(s) 4K 超清, 1080P 60帧, 1080P 高清, 720P 高清 are missing; you have to login or become a premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[BiliBili] 883362563: Extracting chapters
[info] Available formats for BV1fK4y1t7hj:
ID     EXT RESOLUTION FPS │  FILESIZE  TBR PROTO │ VCODEC         VBR ACODEC      ABR
─────────────────────────────────────────────────────────────────────────────────────
30216  m4a audio only     │ ≈ 1.71MiB  49k https │ audio only         mp4a.40.5   49k
30232  m4a audio only     │ ≈ 4.72MiB 134k https │ audio only         mp4a.40.2  134k
30280  m4a audio only     │ ≈10.10MiB 287k https │ audio only         mp4a.40.2  287k
30016  mp4 640x290     29 │ ≈12.24MiB 348k https │ avc1.64001E   348k video only
100022 mp4 792x360     30 │ ≈ 7.11MiB 202k https │ av01.0.04M.08 202k video only
30011  mp4 792x360     30 │ ≈10.98MiB 312k https │ hev1.1.6.L120 312k video only
30032  mp4 854x388     29 │ ≈24.20MiB 688k https │ avc1.64001E   688k video only
100023 mp4 1056x480    30 │ ≈15.72MiB 447k https │ av01.0.04M.08 447k video only
30033  mp4 1056x480    30 │ ≈10.57MiB 300k https │ hev1.1.6.L120 300k video only
```



Hints:
With `'try_look': 1` passed to the api, it gives:
```
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV1fK4y1t7hj/?spm_id_from=333.337.search-card.all.click&vd_source=...c145ee572cfa536d2947
[BiliBili] 1fK4y1t7hj: Downloading webpage
[BiliBili] BV1fK4y1t7hj: Extracting videos in anthology
[BiliBili] BV1fK4y1t7hj: Downloading wbi sign
[BiliBili] BV1fK4y1t7hj: Downloading video formats for cid 196018899 
[BiliBili] Format(s) 4K 超清, 1080P 60帧 are missing; you have to login or become a premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[BiliBili] 883362563: Extracting chapters
[info] Available formats for BV1fK4y1t7hj:
ID     EXT RESOLUTION FPS │  FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR
───────────────────────────────────────────────────────────────────────────────────────
30216  m4a audio only     │ ≈ 1.71MiB   49k https │ audio only          mp4a.40.5   49k
30232  m4a audio only     │ ≈ 4.72MiB  134k https │ audio only          mp4a.40.2  134k
30280  m4a audio only     │ ≈10.10MiB  287k https │ audio only          mp4a.40.2  287k
30016  mp4 640x290     29 │ ≈12.24MiB  348k https │ avc1.64001E    348k video only
100022 mp4 792x360     30 │ ≈ 7.11MiB  202k https │ av01.0.04M.08  202k video only
30011  mp4 792x360     30 │ ≈10.98MiB  312k https │ hev1.1.6.L120  312k video only
30032  mp4 854x388     29 │ ≈24.20MiB  688k https │ avc1.64001E    688k video only
100023 mp4 1056x480    30 │ ≈15.72MiB  447k https │ av01.0.04M.08  447k video only
30033  mp4 1056x480    30 │ ≈10.57MiB  300k https │ hev1.1.6.L120  300k video only
30064  mp4 1280x580    29 │ ≈48.29MiB 1373k https │ avc1.64001F   1373k video only
100024 mp4 1584x720    30 │ ≈35.36MiB 1005k https │ av01.0.08M.08 1005k video only
30066  mp4 1584x720    30 │ ≈17.87MiB  508k https │ hev1.1.6.L120  508k video only
30080  mp4 1920x872    29 │ ≈70.08MiB 1992k https │ avc1.640032   1992k video only
100026 mp4 2378x1080   30 │ ≈50.91MiB 1447k https │ av01.0.12M.08 1447k video only
30077  mp4 2378x1080   30 │ ≈42.76MiB 1215k https │ hev1.1.6.L150 1215k video only
```

* When passing a normal logged-in(non-premium account) cookie, the premium formats are still not provided.

My patch:
```diff
diff --git a/yt_dlp/extractor/bilibili.py b/yt_dlp/extractor/bilibili.py
index a84b7a6f7..8e53f59dc 100644
--- a/yt_dlp/extractor/bilibili.py
+++ b/yt_dlp/extractor/bilibili.py
@@ -164,14 +164,12 @@ def _sign_wbi(self, params, video_id):
         params['w_rid'] = hashlib.md5(f'{query}{self._get_wbi_key(video_id)}'.encode()).hexdigest()
         return params
 
-    def _download_playinfo(self, bvid, cid, headers=None, qn=None):
-        params = {'bvid': bvid, 'cid': cid, 'fnval': 4048}
-        if qn:
-            params['qn'] = qn
+    def _download_playinfo(self, bvid, cid, headers=None, **kwargs):
+        params = {'bvid': bvid, 'cid': cid, 'fnval': 4048, **kwargs}
         return self._download_json(
             'https://api.bilibili.com/x/player/wbi/playurl', bvid,
             query=self._sign_wbi(params, bvid), headers=headers,
-            note=f'Downloading video formats for cid {cid} {qn or ""}')['data']
+            note=f'Downloading video formats for cid {cid} {kwargs.get("qn", "")}')['data']
 
     def json2srt(self, json_data):
         srt_data = ''
@@ -723,6 +721,7 @@ def _real_extract(self, url):
                 duration=traverse_obj(initial_state, ('videoData', 'duration', {int_or_none})),
                 __post_extractor=self.extract_comments(aid))
         else:
+            play_info = self._download_playinfo(video_id, cid, headers=headers, try_look=1)
             formats = self.extract_formats(play_info)
 
             if not traverse_obj(play_info, ('dash')):
```
seems like bilibili has added `window.__playinfo__` back onto the webpage. That explains https://github.com/yt-dlp/yt-dlp/issues/11665#issuecomment-2516376014
Should we always use the API even when playinfo is embedded?
Is there any benefit to using the `window.__playinfo__` JSON object besides saving a request?
> Is there any benefit to using the `window.__playinfo__` JSON object besides saving a request?

For BilibiliIE, No
<details><summary>

patch: remove playinfo extraction from `window.__playinfo__` and always download it _after_ the `is_interactive` check(`_get_interactive_entries` doesn't need playinfo)

</summary>

```diff
diff --git a/yt_dlp/extractor/bilibili.py b/yt_dlp/extractor/bilibili.py
index 91619d9d5..b121324de 100644
--- a/yt_dlp/extractor/bilibili.py
+++ b/yt_dlp/extractor/bilibili.py
@@ -681,12 +681,6 @@ def _real_extract(self, url):
         old_video_id = format_field(aid, None, f'%s_part{part_id or 1}')
         cid = traverse_obj(video_data, ('pages', part_id - 1, 'cid')) if part_id else video_data.get('cid')
 
-        play_info = (
-            traverse_obj(
-                self._search_json(r'window\.__playinfo__\s*=', webpage, 'play info', video_id, default=None),
-                ('data', {dict}))
-            or self._download_playinfo(video_id, cid, headers=headers, query={'try_look': 1}))
-
         festival_info = {}
         if is_festival:
             festival_info = traverse_obj(initial_state, {
@@ -724,6 +718,7 @@ def _real_extract(self, url):
                 duration=traverse_obj(initial_state, ('videoData', 'duration', {int_or_none})),
                 __post_extractor=self.extract_comments(aid))
 
+        play_info = self._download_playinfo(video_id, cid, headers=headers, query={'try_look': 1})
         formats = self.extract_formats(play_info)
 
         if video_data.get('is_upower_exclusive'):
```

</details>

<details><summary>test log</summary>

```log
[debug] Command-line config: ['-vF', '--no-simulate', '--test', '--no-playlist', 'https://www.bilibili.com/video/BV1jL41167ZG/', 'bilisearch:4k60', 'https://www.bilibili.com/video/BV1GJ411x7h7/?']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2024.12.03 from yt-dlp/yt-dlp [2b67ac300] (source)
[debug] Lazy loading extractors is disabled
[debug] Git HEAD: cfa76f35d
[debug] Python 3.13.0 (CPython x86_64 64bit) - Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.35 (OpenSSL 3.0.2 15 Mar 2022, glibc 2.35)
[debug] exe versions: ffmpeg 4.4.2 (setts), ffprobe 4.4.2
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.08.30, curl_cffi-0.7.1, mutagen-1.47.0, requests-2.32.3, secretstorage-3.3.3, sqlite3-3.37.2, urllib3-2.2.3, websockets-13.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1837 extractors
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV1jL41167ZG/
[BiliBili] 1jL41167ZG: Downloading webpage
[BiliBili] BV1jL41167ZG: Extracting videos in anthology
[BiliBili] BV1jL41167ZG: Downloading wbi sign
mutagen-1.47.0[BiliBili] BV1jL41167ZG: Downloading video formats for cid 1131949939
WARNING: [BiliBili] BV1jL41167ZG: This is a supporter-only video, only the preview will be extracted: 该视频为「高级充电回馈」专属视频，开通「18元档包月充电」即可观看. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[BiliBili] 443708639: Extracting chapters
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec, channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[info] Available formats for BV1jL41167ZG:
ID EXT RESOLUTION │   FILESIZE PROTO │ VCODEC  ACODEC  MORE INFO
────────────────────────────────────────────────────────────────
32 mp4 unknown    │  517.19KiB https │ unknown unknown 试看
[debug] Default format spec: bestvideo*+bestaudio/best
[info] BV1jL41167ZG: Downloading 1 format(s): 32
[debug] Invoking http downloader on "https://upos-sz-mirroraliov.bilivideo.com/upgcxcode/39/99/1131949939/1131949939_da4-1-29.mp4?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1733350193&gen=playurlv2&os=aliovbv&oi=3526874561&trid=77bba2f6fdcf4782b811b76b64d3fe25u&mid=0&platform=pc&og=cos&upsig=70dd6bf862a0de04001044100002d805&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&bvc=vod&nettype=0&orderid=0,2&buvid=BDC5BB95-117A-73BD-2A2C-4F150EBDC1A690723infoc&build=0&f=u_0_0&agrr=1&bw=52960&logo=80000000"
[download] 一场大火引发的离奇死亡！古典推理经典短篇集《不可能犯罪诊断书》！ [BV1jL41167ZG].mp4 has already been downloaded
[download] 100% of   10.00KiB
[BiliBiliSearch] Extracting URL: bilisearch:4k60
[download] Downloading playlist: 4k60
[BiliBiliSearch] 4k60: Extracting results from page 1
[BiliBiliSearch] Playlist 4k60: Downloading 1 items of 1
[download] Downloading item 1 of 1
[BiliBili] Extracting URL: http://www.bilibili.com/video/av286406916
[BiliBili] 286406916: Downloading webpage
[BiliBili] BV1yf4y1R7mU: Extracting videos in anthology
[BiliBili] Downloading just the video BV1yf4y1R7mU because of --no-playlist
[BiliBili] BV1yf4y1R7mU: Downloading video formats for cid 214423511
[BiliBili] Format(s) 4K 超清, 1080P 60帧 are missing; you have to become a premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[BiliBili] 286406916: Extracting chapters
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec, channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[info] Available formats for BV1yf4y1R7mU_p1:
ID     EXT RESOLUTION FPS │  FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR
───────────────────────────────────────────────────────────────────────────────────────
30216  m4a audio only     │ ≈ 2.66MiB   51k https │ audio only          mp4a.40.5   51k
30232  m4a audio only     │ ≈ 5.93MiB  113k https │ audio only          mp4a.40.2  113k
30280  m4a audio only     │ ≈ 5.93MiB  113k https │ audio only          mp4a.40.2  113k
30016  mp4 490x360     29 │ ≈13.50MiB  258k https │ avc1.64001E    258k video only
100109 mp4 490x360     30 │ ≈ 9.30MiB  178k https │ hev1.1.6.L120  178k video only
100022 mp4 490x360     30 │ ≈10.64MiB  203k https │ av01.0.01M.08  203k video only
30032  mp4 654x480     29 │ ≈23.25MiB  444k https │ avc1.64001E    444k video only
100023 mp4 654x480     30 │ ≈21.79MiB  416k https │ av01.0.04M.08  416k video only
100110 mp4 654x480     30 │ ≈12.79MiB  244k https │ hev1.1.6.L120  244k video only
30064  mp4 982x720     29 │ ≈43.64MiB  833k https │ avc1.64001F    833k video only
100024 mp4 982x720     30 │ ≈41.55MiB  793k https │ av01.0.05M.08  793k video only
100111 mp4 982x720     30 │ ≈20.49MiB  391k https │ hev1.1.6.L120  391k video only
30080  mp4 1472x1080   29 │ ≈70.07MiB 1337k https │ avc1.640032   1337k video only
100026 mp4 1472x1080   30 │ ≈55.07MiB 1051k https │ av01.0.08M.08 1051k video only
100113 mp4 1472x1080   30 │ ≈43.98MiB  839k https │ hev1.1.6.L120  839k video only
[debug] Default format spec: bestvideo*+bestaudio/best
[info] BV1yf4y1R7mU_p1: Downloading 1 format(s): 100113+30280
[debug] Invoking http downloader on "https://upos-sz-mirroraliov.bilivideo.com/upgcxcode/11/35/214423511/214423511-1-100113.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1733350196&gen=playurlv2&os=aliovbv&oi=3526874561&trid=1a192ecbe746440fb857d62727058149u&mid=0&platform=pc&og=hw&upsig=a024db055bba6ef60c8e86a21523f86f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&bvc=vod&nettype=0&orderid=0,2&buvid=BDC5BB95-117A-73BD-2A2C-4F150EBDC1A690723infoc&build=0&f=u_0_0&agrr=1&bw=105008&logo=80000000"
[download] Destination: 【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f100113.mp4
[download] 100% of   10.00KiB in 00:00:00 at 17.48KiB/s
[debug] Invoking http downloader on "https://upos-sz-mirroraliov.bilivideo.com/upgcxcode/11/35/214423511/214423511_nb3-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1733350196&gen=playurlv2&os=aliovbv&oi=3526874561&trid=1a192ecbe746440fb857d62727058149u&mid=0&platform=pc&og=hw&upsig=a4cb8ca94574f8425cb20fece02eb6f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&bvc=vod&nettype=0&orderid=0,2&buvid=BDC5BB95-117A-73BD-2A2C-4F150EBDC1A690723infoc&build=0&f=u_0_0&agrr=1&bw=14173&logo=80000000"
[download] Destination: 【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f30280.m4a
[download] 100% of   10.00KiB in 00:00:00 at 38.68KiB/s
[Merger] Merging formats into "【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f100113.mp4' -i 'file:【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f30280.m4a' -c copy -map 0:v:0 -map 1:a:0 -movflags +faststart 'file:【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].temp.mp4'
Deleting original file 【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f30280.m4a (pass -k to keep)
Deleting original file 【4K60帧】群星《北京欢迎你》2008原版+宽屏版 AI修复高清收藏版 p01 【AI修复】08年原版4_3比例 [BV1yf4y1R7mU_p1].f100113.mp4 (pass -k to keep)
[download] Finished downloading playlist: 4k60
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV1GJ411x7h7/?
[BiliBili] 1GJ411x7h7: Downloading webpage
ERROR: [BiliBili] 1GJ411x7h7: This video may be deleted or geo-restricted. You might want to try a VPN or a proxy server (with --proxy)
  File "/home/user/yt-dlp_dev/yt-dlp-fork/yt_dlp/extractor/common.py", line 742, in extract
    ie_result = self._real_extract(url)
  File "/home/user/yt-dlp_dev/yt-dlp-fork/yt_dlp/extractor/bilibili.py", line 649, in _real_extract
    raise ExtractorError(
        'This video may be deleted or geo-restricted. '
        'You might want to try a VPN or a proxy server (with --proxy)', expected=True)
```

</details>

Patch:
diff --git a/yt_dlp/extractor/bilibili.py b/yt_dlp/extractor/bilibili.py
index 91619d9d5ca9..2db951a6084d 100644
--- a/yt_dlp/extractor/bilibili.py
+++ b/yt_dlp/extractor/bilibili.py
@@ -681,12 +681,6 @@ def _real_extract(self, url):
         old_video_id = format_field(aid, None, f'%s_part{part_id or 1}')
         cid = traverse_obj(video_data, ('pages', part_id - 1, 'cid')) if part_id else video_data.get('cid')
 
-        play_info = (
-            traverse_obj(
-                self._search_json(r'window\.__playinfo__\s*=', webpage, 'play info', video_id, default=None),
-                ('data', {dict}))
-            or self._download_playinfo(video_id, cid, headers=headers, query={'try_look': 1}))
-
         festival_info = {}
         if is_festival:
             festival_info = traverse_obj(initial_state, {
@@ -724,6 +718,13 @@ def _real_extract(self, url):
                 duration=traverse_obj(initial_state, ('videoData', 'duration', {int_or_none})),
                 __post_extractor=self.extract_comments(aid))
 
+        play_info = None
+        if self.is_logged_in:
+            play_info = traverse_obj(
+                self._search_json(r'window\.__playinfo__\s*=', webpage, 'play info', video_id, default=None),
+                ('data', {dict}))
+        if not play_info:
+            play_info = self._download_playinfo(video_id, cid, headers=headers, query={'try_look': 1})
         formats = self.extract_formats(play_info)
 
         if video_data.get('is_upower_exclusive'):


Test patch: