diff options
| author | MinePlayersPE <mineplayerspealt@gmail.com> | 2022-01-09 15:21:56 +0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-09 13:51:56 +0530 | 
| commit | be1f331f2103e6c89c8d25e47e1b445072b498dd (patch) | |
| tree | 0863b076f86822f477fbf352e310b447d8cdcddc | |
| parent | 3cf5429a215cfc7f7413eb987c33cc66454cfa6a (diff) | |
| download | hypervideo-pre-be1f331f2103e6c89c8d25e47e1b445072b498dd.tar.lz hypervideo-pre-be1f331f2103e6c89c8d25e47e1b445072b498dd.tar.xz hypervideo-pre-be1f331f2103e6c89c8d25e47e1b445072b498dd.zip | |
[TikTok] Misc fixes (#2271)
Closes #2265
Authored by: MinePlayersPE
| -rw-r--r-- | yt_dlp/extractor/tiktok.py | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/yt_dlp/extractor/tiktok.py b/yt_dlp/extractor/tiktok.py index c44fd49b0..258652b07 100644 --- a/yt_dlp/extractor/tiktok.py +++ b/yt_dlp/extractor/tiktok.py @@ -8,7 +8,10 @@ import time  import json  from .common import InfoExtractor -from ..compat import compat_urllib_parse_unquote +from ..compat import ( +    compat_urllib_parse_unquote, +    compat_urllib_parse_urlparse +)  from ..utils import (      ExtractorError,      int_or_none, @@ -23,13 +26,13 @@ from ..utils import (  class TikTokBaseIE(InfoExtractor):      _APP_VERSION = '20.1.0' -    _MANIFEST_APP_VERSION = '200' +    _MANIFEST_APP_VERSION = '210'      _APP_NAME = 'trill'      _AID = 1180      _API_HOSTNAME = 'api-h2.tiktokv.com'      _UPLOADER_URL_FORMAT = 'https://www.tiktok.com/@%s'      _WEBPAGE_HOST = 'https://www.tiktok.com/' -    QUALITIES = ('360p', '540p', '720p') +    QUALITIES = ('360p', '540p', '720p', '1080p')      def _call_api(self, ep, query, video_id, fatal=True,                    note='Downloading API JSON', errnote='Unable to download API page'): @@ -123,7 +126,7 @@ class TikTokBaseIE(InfoExtractor):                  'format_id': 'play_addr',                  'format_note': 'Direct video',                  'vcodec': 'h265' if traverse_obj( -                    video_info, 'is_bytevc1', 'is_h265') else 'h264',  # Always h264? +                    video_info, 'is_bytevc1', 'is_h265') else 'h264',  # TODO: Check for "direct iOS" videos, like https://www.tiktok.com/@cookierun_dev/video/7039716639834656002                  'width': video_info.get('width'),                  'height': video_info.get('height'),              })) @@ -164,7 +167,7 @@ class TikTokBaseIE(InfoExtractor):          auth_cookie = self._get_cookies(self._WEBPAGE_HOST).get('sid_tt')          if auth_cookie:              for f in formats: -                self._set_cookie(f['url'], 'sid_tt', auth_cookie.value) +                self._set_cookie(compat_urllib_parse_urlparse(f['url']).hostname, 'sid_tt', auth_cookie.value)          self._sort_formats(formats, ('quality', 'codec', 'size', 'br'))          thumbnails = [] @@ -404,7 +407,7 @@ class TikTokIE(TikTokBaseIE):              self.report_warning(f'{e}; Retrying with feed workaround')              feed_list = self._call_api('feed', {'aweme_id': aweme_id}, aweme_id,                                         note='Downloading video feed', errnote='Unable to download video feed').get('aweme_list') or [] -            aweme_detail = next(aweme for aweme in feed_list if str(aweme.get('aweme_id')) == aweme_id) +            aweme_detail = next((aweme for aweme in feed_list if str(aweme.get('aweme_id')) == aweme_id), None)              if not aweme_detail:                  raise ExtractorError('Unable to find video in feed', video_id=aweme_id)          return self._parse_aweme_video_app(aweme_detail) | 
