[ie/tiktok:live] Fix room ID extraction (#14287)

Closes #9418
Authored by: bashonly
pull/6698/merge
bashonly 1 week ago committed by GitHub
parent 3d9a88bd8e
commit 5c1abcdc49
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1518,19 +1518,22 @@ class TikTokLiveIE(TikTokBaseIE):
def _real_extract(self, url): def _real_extract(self, url):
uploader, room_id = self._match_valid_url(url).group('uploader', 'id') uploader, room_id = self._match_valid_url(url).group('uploader', 'id')
if not room_id:
webpage = self._download_webpage( webpage = self._download_webpage(
url, uploader or room_id, headers={'User-Agent': 'Mozilla/5.0'}, fatal=not room_id) format_field(uploader, None, self._UPLOADER_URL_FORMAT), uploader)
room_id = traverse_obj(
self._get_universal_data(webpage, uploader),
('webapp.user-detail', 'userInfo', 'user', 'roomId', {str}))
if webpage: if not uploader or not room_id:
webpage = self._download_webpage(url, uploader or room_id, fatal=not room_id)
data = self._get_sigi_state(webpage, uploader or room_id) data = self._get_sigi_state(webpage, uploader or room_id)
room_id = ( room_id = room_id or traverse_obj(data, ((
traverse_obj(data, ((
('LiveRoom', 'liveRoomUserInfo', 'user'), ('LiveRoom', 'liveRoomUserInfo', 'user'),
('UserModule', 'users', ...)), 'roomId', {str}, any)) ('UserModule', 'users', ...)), 'roomId', {str}, any))
or self._search_regex(r'snssdk\d*://live\?room_id=(\d+)', webpage, 'room ID', default=room_id)) uploader = uploader or traverse_obj(data, ((
uploader = uploader or traverse_obj( ('LiveRoom', 'liveRoomUserInfo', 'user'),
data, ('LiveRoom', 'liveRoomUserInfo', 'user', 'uniqueId'), ('UserModule', 'users', ...)), 'uniqueId', {str}, any))
('UserModule', 'users', ..., 'uniqueId'), get_all=False, expected_type=str)
if not room_id: if not room_id:
raise UserNotLive(video_id=uploader) raise UserNotLive(video_id=uploader)

Loading…
Cancel
Save