mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-30 15:40:18 +01:00
commit
587ceadc8f
6
.github/ISSUE_TEMPLATE/1_broken_site.md
vendored
6
.github/ISSUE_TEMPLATE/1_broken_site.md
vendored
|
@ -21,7 +21,7 @@ ## Checklist
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
||||||
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.24. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.26. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
|
||||||
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
||||||
|
@ -29,7 +29,7 @@ ## Checklist
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a broken site support
|
- [ ] I'm reporting a broken site support
|
||||||
- [ ] I've verified that I'm running youtube-dlc version **2020.10.24**
|
- [ ] I've verified that I'm running youtube-dlc version **2020.10.26**
|
||||||
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar issues including closed ones
|
- [ ] I've searched the bugtracker for similar issues including closed ones
|
||||||
|
@ -44,7 +44,7 @@ ## Verbose log
|
||||||
[debug] User config: []
|
[debug] User config: []
|
||||||
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
|
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
|
||||||
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
|
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
|
||||||
[debug] youtube-dlc version 2020.10.24
|
[debug] youtube-dlc version 2020.10.26
|
||||||
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
|
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
|
||||||
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
|
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
|
||||||
[debug] Proxy map: {}
|
[debug] Proxy map: {}
|
||||||
|
|
|
@ -21,7 +21,7 @@ ## Checklist
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
||||||
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.24. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.26. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://yt-dl.org/copyright-infringement. youtube-dlc does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://yt-dl.org/copyright-infringement. youtube-dlc does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
||||||
- Search the bugtracker for similar site support requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
- Search the bugtracker for similar site support requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
||||||
|
@ -29,7 +29,7 @@ ## Checklist
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a new site support request
|
- [ ] I'm reporting a new site support request
|
||||||
- [ ] I've verified that I'm running youtube-dlcc version **2020.10.24**
|
- [ ] I've verified that I'm running youtube-dlcc version **2020.10.26**
|
||||||
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
||||||
- [ ] I've checked that none of provided URLs violate any copyrights
|
- [ ] I've checked that none of provided URLs violate any copyrights
|
||||||
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
||||||
|
|
|
@ -21,13 +21,13 @@ ## Checklist
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
||||||
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.24. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.26. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar site feature requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
- Search the bugtracker for similar site feature requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes (like this [x])
|
- Finally, put x into all relevant boxes (like this [x])
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a site feature request
|
- [ ] I'm reporting a site feature request
|
||||||
- [ ] I've verified that I'm running youtube-dlc version **2020.10.24**
|
- [ ] I've verified that I'm running youtube-dlc version **2020.10.26**
|
||||||
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
||||||
|
|
||||||
|
|
||||||
|
|
6
.github/ISSUE_TEMPLATE/4_bug_report.md
vendored
6
.github/ISSUE_TEMPLATE/4_bug_report.md
vendored
|
@ -21,7 +21,7 @@ ## Checklist
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
||||||
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.24. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.26. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
|
||||||
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
||||||
|
@ -30,7 +30,7 @@ ## Checklist
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a broken site support issue
|
- [ ] I'm reporting a broken site support issue
|
||||||
- [ ] I've verified that I'm running youtube-dlc version **2020.10.24**
|
- [ ] I've verified that I'm running youtube-dlc version **2020.10.26**
|
||||||
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
||||||
|
@ -46,7 +46,7 @@ ## Verbose log
|
||||||
[debug] User config: []
|
[debug] User config: []
|
||||||
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
|
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
|
||||||
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
|
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
|
||||||
[debug] youtube-dlc version 2020.10.24
|
[debug] youtube-dlc version 2020.10.26
|
||||||
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
|
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
|
||||||
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
|
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
|
||||||
[debug] Proxy map: {}
|
[debug] Proxy map: {}
|
||||||
|
|
4
.github/ISSUE_TEMPLATE/5_feature_request.md
vendored
4
.github/ISSUE_TEMPLATE/5_feature_request.md
vendored
|
@ -21,13 +21,13 @@ ## Checklist
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
|
||||||
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.24. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of youtube-dlc. Run `youtube-dlc --version` and ensure your version is 2020.10.26. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar feature requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
- Search the bugtracker for similar feature requests: http://yt-dl.org/search-issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes (like this [x])
|
- Finally, put x into all relevant boxes (like this [x])
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a feature request
|
- [ ] I'm reporting a feature request
|
||||||
- [ ] I've verified that I'm running youtube-dlc version **2020.10.24**
|
- [ ] I've verified that I'm running youtube-dlc version **2020.10.26**
|
||||||
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,19 +12,20 @@
|
||||||
|
|
||||||
|
|
||||||
class TikTokBaseIE(InfoExtractor):
|
class TikTokBaseIE(InfoExtractor):
|
||||||
def _extract_aweme(self, video_data, webpage, url):
|
def _extract_aweme(self, props_data, webpage, url):
|
||||||
|
video_data = try_get(props_data, lambda x: x['pageProps'], expected_type=dict)
|
||||||
video_info = try_get(
|
video_info = try_get(
|
||||||
video_data, lambda x: x['videoData']['itemInfos'], dict)
|
video_data, lambda x: x['itemInfo']['itemStruct'], dict)
|
||||||
author_info = try_get(
|
author_info = try_get(
|
||||||
video_data, lambda x: x['videoData']['authorInfos'], dict)
|
video_data, lambda x: x['itemInfo']['itemStruct']['author'], dict)
|
||||||
share_info = try_get(video_data, lambda x: x['shareMeta'], dict)
|
share_info = try_get(video_data, lambda x: x['itemInfo']['shareMeta'], dict)
|
||||||
|
|
||||||
unique_id = str_or_none(author_info.get('uniqueId'))
|
unique_id = str_or_none(author_info.get('uniqueId'))
|
||||||
timestamp = try_get(video_info, lambda x: int(x['createTime']), int)
|
timestamp = try_get(video_info, lambda x: int(x['createTime']), int)
|
||||||
date = datetime.fromtimestamp(timestamp).strftime('%Y%m%d')
|
date = datetime.fromtimestamp(timestamp).strftime('%Y%m%d')
|
||||||
|
|
||||||
height = try_get(video_info, lambda x: x['video']['videoMeta']['height'], int)
|
height = try_get(video_info, lambda x: x['video']['height'], int)
|
||||||
width = try_get(video_info, lambda x: x['video']['videoMeta']['width'], int)
|
width = try_get(video_info, lambda x: x['video']['width'], int)
|
||||||
thumbnails = []
|
thumbnails = []
|
||||||
thumbnails.append({
|
thumbnails.append({
|
||||||
'url': video_info.get('thumbnail') or self._og_search_thumbnail(webpage),
|
'url': video_info.get('thumbnail') or self._og_search_thumbnail(webpage),
|
||||||
|
@ -32,14 +33,20 @@ def _extract_aweme(self, video_data, webpage, url):
|
||||||
'height': height
|
'height': height
|
||||||
})
|
})
|
||||||
|
|
||||||
|
url = ''
|
||||||
|
if not url:
|
||||||
|
url = try_get(video_info, lambda x: x['video']['playAddr'])
|
||||||
|
if not url:
|
||||||
|
url = try_get(video_info, lambda x: x['video']['downloadAddr'])
|
||||||
formats = []
|
formats = []
|
||||||
formats.append({
|
formats.append({
|
||||||
'url': try_get(video_info, lambda x: x['video']['urls'][0]),
|
'url': url,
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'height': height,
|
'height': height,
|
||||||
'width': width
|
'width': width
|
||||||
})
|
})
|
||||||
|
|
||||||
|
tracker = try_get(props_data, lambda x: x['initialProps']['$wid'])
|
||||||
return {
|
return {
|
||||||
'comment_count': int_or_none(video_info.get('commentCount')),
|
'comment_count': int_or_none(video_info.get('commentCount')),
|
||||||
'duration': try_get(video_info, lambda x: x['video']['videoMeta']['duration'], int),
|
'duration': try_get(video_info, lambda x: x['video']['videoMeta']['duration'], int),
|
||||||
|
@ -63,6 +70,7 @@ def _extract_aweme(self, video_data, webpage, url):
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'http_headers': {
|
'http_headers': {
|
||||||
'Referer': url,
|
'Referer': url,
|
||||||
|
'Cookie': 'tt_webid=%s; tt_webid_v2=%s' % (tracker, tracker),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,10 +138,10 @@ def _real_extract(self, url):
|
||||||
r'id=\"__NEXT_DATA__\"\s+type=\"application\/json\"\s*[^>]+>\s*(?P<json_string_ld>[^<]+)',
|
r'id=\"__NEXT_DATA__\"\s+type=\"application\/json\"\s*[^>]+>\s*(?P<json_string_ld>[^<]+)',
|
||||||
webpage, 'json_string', group='json_string_ld')
|
webpage, 'json_string', group='json_string_ld')
|
||||||
json_data = self._parse_json(json_string, video_id)
|
json_data = self._parse_json(json_string, video_id)
|
||||||
video_data = try_get(json_data, lambda x: x['props']['pageProps'], expected_type=dict)
|
props_data = try_get(json_data, lambda x: x['props'], expected_type=dict)
|
||||||
|
|
||||||
# Chech statusCode for success
|
# Chech statusCode for success
|
||||||
if video_data.get('statusCode') == 0:
|
if props_data.get('pageProps').get('statusCode') == 0:
|
||||||
return self._extract_aweme(video_data, webpage, url)
|
return self._extract_aweme(props_data, webpage, url)
|
||||||
|
|
||||||
raise ExtractorError('Video not available', video_id=video_id)
|
raise ExtractorError('Video not available', video_id=video_id)
|
||||||
|
|
|
@ -1742,6 +1742,13 @@ def extract_player_response(player_response, video_id):
|
||||||
add_dash_mpd_pr(pl_response)
|
add_dash_mpd_pr(pl_response)
|
||||||
return pl_response
|
return pl_response
|
||||||
|
|
||||||
|
def extract_embedded_config(embed_webpage, video_id):
|
||||||
|
embedded_config = self._search_regex(
|
||||||
|
r'setConfig\(({.*})\);',
|
||||||
|
embed_webpage, 'ytInitialData', default=None)
|
||||||
|
if embedded_config:
|
||||||
|
return embedded_config
|
||||||
|
|
||||||
player_response = {}
|
player_response = {}
|
||||||
|
|
||||||
# Get video info
|
# Get video info
|
||||||
|
@ -1755,8 +1762,17 @@ def extract_player_response(player_response, video_id):
|
||||||
# this can be viewed without login into Youtube
|
# this can be viewed without login into Youtube
|
||||||
url = proto + '://www.youtube.com/embed/%s' % video_id
|
url = proto + '://www.youtube.com/embed/%s' % video_id
|
||||||
embed_webpage = self._download_webpage(url, video_id, 'Downloading embed webpage')
|
embed_webpage = self._download_webpage(url, video_id, 'Downloading embed webpage')
|
||||||
# check if video is only playable on youtube - if so it requires auth (cookies)
|
ext = extract_embedded_config(embed_webpage, video_id)
|
||||||
if re.search(r'player-unavailable">', embed_webpage) is not None:
|
# playabilityStatus = re.search(r'{\\\"status\\\":\\\"(?P<playabilityStatus>[^\"]+)\\\"', ext)
|
||||||
|
playable_in_embed = re.search(r'{\\\"playableInEmbed\\\":(?P<playableinEmbed>[^\,]+)', ext)
|
||||||
|
if not playable_in_embed:
|
||||||
|
self.to_screen('Could not determine whether playabale in embed for video %s' % video_id)
|
||||||
|
playable_in_embed = ''
|
||||||
|
else:
|
||||||
|
playable_in_embed = playable_in_embed.group('playableinEmbed')
|
||||||
|
# check if video is only playable on youtube in other words not playable in embed - if so it requires auth (cookies)
|
||||||
|
# if re.search(r'player-unavailable">', embed_webpage) is not None:
|
||||||
|
if playable_in_embed == 'false':
|
||||||
'''
|
'''
|
||||||
# TODO apply this patch when Support for Python 2.6(!) and above drops
|
# TODO apply this patch when Support for Python 2.6(!) and above drops
|
||||||
if ({'VISITOR_INFO1_LIVE', 'HSID', 'SSID', 'SID'} <= cookie_keys
|
if ({'VISITOR_INFO1_LIVE', 'HSID', 'SSID', 'SID'} <= cookie_keys
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
__version__ = '2020.10.24-5'
|
__version__ = '2020.10.25'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user