From 825e26a81449de07e5deef0a6d71e1977d18e5cd Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Tue, 25 Dec 2018 10:44:00 +0200 Subject: [PATCH 01/72] Handle error message for vk --- youtube_dl/extractor/vk.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index b52d15ac6..e0d691e25 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -298,7 +298,13 @@ class VKIE(VKBaseIE): # The video is not available in your region. 'url': 'https://vk.com/video-51812607_171445436', 'only_matching': True, - }] + }, + { + # Video %s is not available. + 'url': 'https://vk.com/video-173478245_456239188', + 'only_matching': True, + }, + ] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) @@ -361,6 +367,9 @@ class VKIE(VKBaseIE): r'The video .+? is not available in your region.': 'Video %s is not available in your region.', + + r'The video .+? is unavailable': + 'Video %s is not available.', } for error_re, error_msg in ERRORS.items(): From cc793fcab5b9fb07d47d2ac80a0bcd4c723298e8 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 27 Dec 2018 23:43:13 +0200 Subject: [PATCH 02/72] fix ok slowness. fix upload date extraction --- youtube_dl/extractor/odnoklassniki.py | 30 +++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 190d8af4d..d52159da1 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -127,8 +127,8 @@ class OdnoklassnikiIE(InfoExtractor): 'http://ok.ru/video/%s' % video_id, video_id) error = self._search_regex( - r'[^>]+class="vp_video_stub_txt"[^>]*>([^<]+)<', - webpage, 'error', default=None) + r'
(?P.*?)<\/div>', + webpage, name='error',group='error', default=None) if error: raise ExtractorError(error, expected=True) @@ -172,6 +172,32 @@ class OdnoklassnikiIE(InfoExtractor): upload_date = unified_strdate(self._html_search_meta( 'ya:ovs:upload_date', webpage, 'upload date', default=None)) + if upload_date is None: + upload_date_str = self._search_regex( + r'vp-layer-info_date">(?P.*?)<\/span>', + webpage, 'upload date', group='date') + if upload_date_str: + from datetime import datetime + upload_date_time = None + try: + upload_date_time = datetime.strptime(upload_date_str, '%d %b %Y') + except: + pass + try: + upload_date_time = datetime.strptime(upload_date_str, '%d %b') + upload_date_time = upload_date_time.replace(year=datetime.utcnow().year) + except: + pass + try: + upload_date_time = datetime.strptime(upload_date_str, '%H:%M') + upload_date_time = upload_date_time.replace(year=datetime.utcnow().year) + upload_date_time = upload_date_time.replace(day=datetime.utcnow().day) + except: + pass + + if upload_date_time: + upload_date = upload_date_time.strftime('%Y%m%d') + age_limit = None adult = self._html_search_meta( 'ya:ovs:adult', webpage, 'age limit', default=None) From 89acfecb6898b35f8dbb7b3e697aa81089270d75 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 27 Dec 2018 23:57:31 +0200 Subject: [PATCH 03/72] fix yestarday videos. --- youtube_dl/extractor/odnoklassniki.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index d52159da1..a3785bb62 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -177,7 +177,7 @@ class OdnoklassnikiIE(InfoExtractor): r'vp-layer-info_date">(?P.*?)<\/span>', webpage, 'upload date', group='date') if upload_date_str: - from datetime import datetime + from datetime import datetime, timedelta upload_date_time = None try: upload_date_time = datetime.strptime(upload_date_str, '%d %b %Y') @@ -189,9 +189,15 @@ class OdnoklassnikiIE(InfoExtractor): except: pass try: - upload_date_time = datetime.strptime(upload_date_str, '%H:%M') + if upload_date_str.find(':') >=0: + hour_and_minutes = upload_date_str.split(' ')[-1] + else: + hour_and_minutes = upload_date_str + upload_date_time = datetime.strptime(hour_and_minutes, '%H:%M') upload_date_time = upload_date_time.replace(year=datetime.utcnow().year) upload_date_time = upload_date_time.replace(day=datetime.utcnow().day) + if upload_date_str.find('yesterday') ==0: + upload_date_time = upload_date_time - timedelta(days=1) except: pass From dfeed7fa42dc3aafd41cd9fae2f26b1a4631275c Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 30 Dec 2018 22:25:04 +0200 Subject: [PATCH 04/72] add another date option --- youtube_dl/extractor/odnoklassniki.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index a3785bb62..1dbda0ef2 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -188,6 +188,12 @@ class OdnoklassnikiIE(InfoExtractor): upload_date_time = upload_date_time.replace(year=datetime.utcnow().year) except: pass + try: + upload_date_time = datetime.strptime(upload_date_str, '%d %B') + upload_date_time = upload_date_time.replace(year=datetime.utcnow().year) + except: + pass + try: if upload_date_str.find(':') >=0: hour_and_minutes = upload_date_str.split(' ')[-1] From facff120016831d481acce333d239edca2f6eafd Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 30 Dec 2018 22:36:35 +0200 Subject: [PATCH 05/72] lets go wild --- youtube_dl/extractor/odnoklassniki.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 1dbda0ef2..621e9d497 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -177,6 +177,7 @@ class OdnoklassnikiIE(InfoExtractor): r'vp-layer-info_date">(?P.*?)<\/span>', webpage, 'upload date', group='date') if upload_date_str: + upload_date_str = upload_date_str.replace('Sept', 'Sep') from datetime import datetime, timedelta upload_date_time = None try: From 1ab0f7a742af9cb6061424271d167be993e4ffd4 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Wed, 16 Jan 2019 11:34:16 +0200 Subject: [PATCH 06/72] update version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 5ba61f489..3671a1fd3 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = '2019.01.10' +__version__ = 'vc.2019.01.16' From 84d83668463f5132831d650d5290658b135cbe0b Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 17 Jan 2019 15:43:27 +0200 Subject: [PATCH 07/72] fetch vimeo views --- youtube_dl/extractor/vimeo.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index fd37f919b..3415ca597 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -353,6 +353,7 @@ class VimeoIE(VimeoBaseInfoExtractor): 'timestamp': 1324343742, 'upload_date': '20111220', 'description': 'md5:ae23671e82d05415868f7ad1aec21147', + 'view_count': int, }, }, { @@ -641,12 +642,17 @@ class VimeoIE(VimeoBaseInfoExtractor): 'timestamp', default=None) try: - view_count = int(self._search_regex(r'UserPlays:(\d+)', webpage, 'view count')) + # When userInteractionCount does not exist views is 0 + view_count = int_or_none( + self._search_regex( + r'"interactionType":"http:\/\/schema\.org\/WatchAction","userInteractionCount":(.+?)}', + webpage, 'view count', default=0 + ) + ) like_count = int(self._search_regex(r'UserLikes:(\d+)', webpage, 'like count')) comment_count = int(self._search_regex(r'UserComments:(\d+)', webpage, 'comment count')) except RegexNotFoundError: # This info is only available in vimeo.com/{id} urls - view_count = None like_count = None comment_count = None From 61ee81c06b8a55581d478d7432331dd7eb0a3cfc Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 20 Jan 2019 11:10:36 +0200 Subject: [PATCH 08/72] v --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 362265964..444ec7009 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,5 +1,5 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.01.17' +__version__ = 'vc.2019.01.20' From f6c212489cd6a85176a31bd936560e8339e53d06 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Tue, 22 Jan 2019 12:46:57 +0200 Subject: [PATCH 09/72] . --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 444ec7009..5fd1c8ac4 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,5 +1,5 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.01.20' +__version__ = 'vc.2019.01.22' From a6606f0bf62a33d36b2c26d98609839e46b69b31 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 3 Feb 2019 12:05:08 +0200 Subject: [PATCH 10/72] change version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 6c0866d0f..444fa83a6 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.02.03' +__version__ = 'vc.2019.02.03.1' From c62fd8a4eb70545acb099562bfd4024565da49f3 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 28 Apr 2019 16:48:01 +0300 Subject: [PATCH 11/72] update version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index d4c1278b2..86fc25af9 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.04.24' +__version__ = 'vc.2019.04.28' From 806b59d6148e5dab73b844c95982e4d1ad5c3541 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 28 Apr 2019 17:05:18 +0300 Subject: [PATCH 12/72] adding is_live to the info json of ok videos --- youtube_dl/extractor/odnoklassniki.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 114b93c07..9d2df2e2d 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -207,6 +207,7 @@ class OdnoklassnikiIE(InfoExtractor): assert title if provider == 'LIVE_TV_APP': info['title'] = self._live_title(title) + info['is_live'] = True quality = qualities(('4', '0', '1', '2', '3', '5')) From 3768a1fde8f8325590fab19c9502fe1efd03cca0 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 28 Apr 2019 17:05:27 +0300 Subject: [PATCH 13/72] adding test --- youtube_dl/extractor/odnoklassniki.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 9d2df2e2d..95d1ec22d 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -94,6 +94,21 @@ class OdnoklassnikiIE(InfoExtractor): 'skip_download': True, }, 'skip': 'Video has not been found', + },{ + # live video + 'url': 'https://www.ok.ru/video/1050794925929', + 'info_dict': { + 'id': '1050794925929', + 'title': 're:^Поиск репертуара [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', + 'ext': 'mp4', + 'upload_date': u'20190428', + 'uploader': u'(((((КнЯзЬ ))))', + 'uploader_id': u'557343776873', + 'is_live': True + }, + 'params': { + 'skip_download': True, + } }, { 'url': 'http://ok.ru/web-api/video/moviePlayer/20079905452', 'only_matching': True, From d224fceabca1a391abeadb37d6246428879f1ea1 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 28 Apr 2019 17:19:19 +0300 Subject: [PATCH 14/72] removing bad is_live code --- youtube_dl/extractor/odnoklassniki.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 44a19e77e..e716da7da 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -94,21 +94,6 @@ class OdnoklassnikiIE(InfoExtractor): 'skip_download': True, }, 'skip': 'Video has not been found', - },{ - # live video - 'url': 'https://www.ok.ru/video/1050794925929', - 'info_dict': { - 'id': '1050794925929', - 'title': 're:^Поиск репертуара [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', - 'ext': 'mp4', - 'upload_date': u'20190428', - 'uploader': u'(((((КнЯзЬ ))))', - 'uploader_id': u'557343776873', - 'is_live': True - }, - 'params': { - 'skip_download': True, - } }, { 'url': 'http://ok.ru/web-api/video/moviePlayer/20079905452', 'only_matching': True, @@ -261,7 +246,6 @@ class OdnoklassnikiIE(InfoExtractor): assert title if provider == 'LIVE_TV_APP': info['title'] = self._live_title(title) - info['is_live'] = True quality = qualities(('4', '0', '1', '2', '3', '5')) From ed78d69c06e79ba08fe819017a69afa4915d884c Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 28 Apr 2019 17:43:20 +0300 Subject: [PATCH 15/72] Revert "removing bad is_live code" This reverts commit d224fceabca1a391abeadb37d6246428879f1ea1. --- youtube_dl/extractor/odnoklassniki.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index e716da7da..44a19e77e 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -94,6 +94,21 @@ class OdnoklassnikiIE(InfoExtractor): 'skip_download': True, }, 'skip': 'Video has not been found', + },{ + # live video + 'url': 'https://www.ok.ru/video/1050794925929', + 'info_dict': { + 'id': '1050794925929', + 'title': 're:^Поиск репертуара [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', + 'ext': 'mp4', + 'upload_date': u'20190428', + 'uploader': u'(((((КнЯзЬ ))))', + 'uploader_id': u'557343776873', + 'is_live': True + }, + 'params': { + 'skip_download': True, + } }, { 'url': 'http://ok.ru/web-api/video/moviePlayer/20079905452', 'only_matching': True, @@ -246,6 +261,7 @@ class OdnoklassnikiIE(InfoExtractor): assert title if provider == 'LIVE_TV_APP': info['title'] = self._live_title(title) + info['is_live'] = True quality = qualities(('4', '0', '1', '2', '3', '5')) From cb4f53ec57d01f226fbf028b2acd2abd32e2d736 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 30 Apr 2019 16:27:06 +0300 Subject: [PATCH 16/72] updating version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 86fc25af9..e74e4b60b 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.04.28' +__version__ = 'vc.2019.04.30' From a169965a2a9a25e6ea0962aeb56056894f1670e0 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 5 May 2019 11:43:45 +0300 Subject: [PATCH 17/72] fixes by flake8 --- youtube_dl/extractor/odnoklassniki.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 44a19e77e..1eb3bdd2f 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -94,7 +94,7 @@ class OdnoklassnikiIE(InfoExtractor): 'skip_download': True, }, 'skip': 'Video has not been found', - },{ + }, { # live video 'url': 'https://www.ok.ru/video/1050794925929', 'info_dict': { @@ -147,7 +147,7 @@ class OdnoklassnikiIE(InfoExtractor): error = self._search_regex( r'
(?P.*?)<\/div>', - webpage, name='error',group='error', default=None) + webpage, name='error', group='error', default=None) if error: raise ExtractorError(error, expected=True) From b02e947a1455737d3bdfdefc2692f5108be269ab Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 5 May 2019 11:44:38 +0300 Subject: [PATCH 18/72] adding live_status to facebook --- youtube_dl/extractor/facebook.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index cde8eb22c..8e6815189 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -382,7 +382,19 @@ class FacebookIE(InfoExtractor): if not video_data: raise ExtractorError('Cannot parse data') - is_live = video_data[0].get('is_broadcast', False) and video_data[0].get('is_live_stream', False) + is_scheduled = '"isScheduledLive":true' in tahoe_data.secondary + is_live_stream = video_data[0].get('is_live_stream', False) + is_broadcast = video_data[0].get('is_broadcast', False) + + live_status = 'not_live' + if is_broadcast: + live_status = 'completed' + if is_live_stream: + live_status = 'live' + if is_scheduled: + live_status = 'upcoming' + + is_live = live_status == 'live' formats = [] for f in video_data: @@ -468,7 +480,8 @@ class FacebookIE(InfoExtractor): 'thumbnail': thumbnail, 'view_count': view_count, 'uploader_id': uploader_id, - 'is_live': is_live + 'is_live': is_live, + 'live_status': live_status } return webpage, info_dict From ff87a1b642833693b0cfaef82ae20f47585b530d Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 5 May 2019 14:02:39 +0300 Subject: [PATCH 19/72] updating version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index e74e4b60b..ad3d8ebdc 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.04.30' +__version__ = 'vc.2019.05.05' From a875d4d0db798cc015cd6d1812bd34530b50c1e0 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 11:43:46 +0300 Subject: [PATCH 20/72] just adding a comment to test pull bot --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 8e6815189..71b987ad3 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -458,6 +458,7 @@ class FacebookIE(InfoExtractor): r'[\'\"]ownerid[\'\"]\s*:\s*[\'\"](\d+)[\'\"]', tahoe_data.secondary, 'uploader_id', fatal=False) + # just adding a comment thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 7cd45984b8baf2ae38df8f2c299196aa32d9376b Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 12:23:14 +0300 Subject: [PATCH 21/72] adding pull.yml file --- .github/pull.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..78960b078 --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,5 @@ +version: "1" +rules: + - base: master + upstream: aviperes:Fix.25.12.2018 # change `wei` to the owner of upstream repo + mergeMethod: hardreset From 36effdc65370cbb5d94d4ddb1edf135dd3514244 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 12:28:15 +0300 Subject: [PATCH 22/72] just changing a comment --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 71b987ad3..6d4dbce38 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -458,7 +458,7 @@ class FacebookIE(InfoExtractor): r'[\'\"]ownerid[\'\"]\s*:\s*[\'\"](\d+)[\'\"]', tahoe_data.secondary, 'uploader_id', fatal=False) - # just adding a comment + # just changing a comment thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From e2b4f931b3e45165542cfc9dfeb7d367050fc214 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 12:34:58 +0300 Subject: [PATCH 23/72] Revert "adding pull.yml file" This reverts commit 7cd45984b8baf2ae38df8f2c299196aa32d9376b. --- .github/pull.yml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml deleted file mode 100644 index 78960b078..000000000 --- a/.github/pull.yml +++ /dev/null @@ -1,5 +0,0 @@ -version: "1" -rules: - - base: master - upstream: aviperes:Fix.25.12.2018 # change `wei` to the owner of upstream repo - mergeMethod: hardreset From e58c09de9b951d7edd2599fcbca23353e4c691e5 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 12:39:38 +0300 Subject: [PATCH 24/72] changing the commit --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 6d4dbce38..6188f317d 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -458,7 +458,7 @@ class FacebookIE(InfoExtractor): r'[\'\"]ownerid[\'\"]\s*:\s*[\'\"](\d+)[\'\"]', tahoe_data.secondary, 'uploader_id', fatal=False) - # just changing a comment + # just changing a comment again thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 5611ac8b67fa1015374deae9cde1496a0b5fe280 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 14:18:10 +0300 Subject: [PATCH 25/72] meaningless comment --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 789dd79d5..0b4cafe95 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,6 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) + # adding a meaningless comment thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 3e0254ed7fafa07ceed7b2694defb87356b61490 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:39:25 +0300 Subject: [PATCH 26/72] a comment on the comment --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 0b4cafe95..8d278d485 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment + # adding a meaningless comment. we will need to remove it eventually thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 25336837f3135a8789ac7cd2793503ae0d488de6 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:41:26 +0300 Subject: [PATCH 27/72] adding pull.yml file --- .github/pull.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..06f0291ad --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,5 @@ +version: "1" +rules: + - base: master + upstream: aviperes:master # change `wei` to the owner of upstream repo + mergeMethod: hardreset From b100e95f198ae95a4b9735f46a5674e99547b9aa Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:44:38 +0300 Subject: [PATCH 28/72] going for a conflict!!! ya!! --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 8d278d485..14ca712a7 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment. we will need to remove it eventually + # changed the comment from my fork thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 45d7fde2e0b3f9129bc9775f9dacb09925e99bd8 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:45:46 +0300 Subject: [PATCH 29/72] making conflict with the fork... let's see how pull will react... --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 8d278d485..418cccd73 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment. we will need to remove it eventually + # adding a meaningless comment. Don't we love mess in the code ? thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 6683833b117c5ece7b395f4053c0b95b21a5d811 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:51:30 +0300 Subject: [PATCH 30/72] changing pull.yml with the hope to get pull request... --- .github/pull.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/pull.yml b/.github/pull.yml index 06f0291ad..1a2188824 100644 --- a/.github/pull.yml +++ b/.github/pull.yml @@ -3,3 +3,8 @@ rules: - base: master upstream: aviperes:master # change `wei` to the owner of upstream repo mergeMethod: hardreset + assignees: + - hashark + reviewers: + - hashark + From 96ec9d969189fdf0d1777acf8dc05c462a94c6ad Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 18:20:35 +0300 Subject: [PATCH 31/72] removing the comment --- youtube_dl/extractor/facebook.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 4c9102268..789dd79d5 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,9 +428,6 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - - # adding a meaningless comment. Don't we love mess in the code ? - # changed the comment from my fork thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From ee722ada9b74f4e5ccd9da20794a73f3a75e0216 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 18:26:01 +0300 Subject: [PATCH 32/72] adding a new comment now to see what's up with pull bot --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 789dd79d5..806e8f94e 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,6 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) + # adding a new comment now to see what's up thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 019d706dd9f450604fcc96fb21631ad7cab29aaa Mon Sep 17 00:00:00 2001 From: hashark <18191362+hashark@users.noreply.github.com> Date: Tue, 11 Jun 2019 18:45:12 +0300 Subject: [PATCH 33/72] deleting pull.yml as it was added by accident --- .github/pull.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml deleted file mode 100644 index 1a2188824..000000000 --- a/.github/pull.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: "1" -rules: - - base: master - upstream: aviperes:master # change `wei` to the owner of upstream repo - mergeMethod: hardreset - assignees: - - hashark - reviewers: - - hashark - From 65c71ac598be7f6a4b0156ad2c1c529c949efd1b Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:19:43 +0300 Subject: [PATCH 34/72] new comment to test the branch pull --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 806e8f94e..b39d5c5a7 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -429,6 +429,7 @@ class FacebookIE(InfoExtractor): r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) # adding a new comment now to see what's up + # adding commit to see if it reaches the new branch thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 8e0a8ad583c92b70c421e88ccc6c71b78b47f3f8 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:22:10 +0300 Subject: [PATCH 35/72] another comment --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index b39d5c5a7..1dab582f2 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -430,6 +430,7 @@ class FacebookIE(InfoExtractor): 'timestamp', default=None)) # adding a new comment now to see what's up # adding commit to see if it reaches the new branch + # another comment to check base thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From f21e20734eb9f85ab547838c03bfdc399d7c2661 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:28:33 +0300 Subject: [PATCH 36/72] removing comments --- youtube_dl/extractor/facebook.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 1dab582f2..789dd79d5 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,9 +428,6 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a new comment now to see what's up - # adding commit to see if it reaches the new branch - # another comment to check base thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From d6ad71cb7ae2fbd036246042f0c7696977d51fa3 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Thu, 13 Jun 2019 11:43:01 +0300 Subject: [PATCH 37/72] removing the comment I used to test pull --- youtube_dl/extractor/facebook.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 6188f317d..c4555142e 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -457,8 +457,6 @@ class FacebookIE(InfoExtractor): 'uploader_id', default=None) or self._search_regex( r'[\'\"]ownerid[\'\"]\s*:\s*[\'\"](\d+)[\'\"]', tahoe_data.secondary, 'uploader_id', fatal=False) - - # just changing a comment again thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 610d227188261fdc6139d7b39cea1b3fe08cb123 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Thu, 13 Jun 2019 12:01:30 +0300 Subject: [PATCH 38/72] adding pull configurations file --- .github/pull.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..b55ef8820 --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,8 @@ +version: "1" +rules: + - base: master + upstream: ytdl-org:master + mergeMethod: hardreset + reviewers: + - aviperes + - hashark From 4b7016c23eb1009c681e90ffe45b9ba3ed0005a6 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Thu, 13 Jun 2019 17:36:45 +0300 Subject: [PATCH 39/72] fixing OK live video detection --- youtube_dl/extractor/odnoklassniki.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 1eb3bdd2f..f177e4eb4 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -96,14 +96,14 @@ class OdnoklassnikiIE(InfoExtractor): 'skip': 'Video has not been found', }, { # live video - 'url': 'https://www.ok.ru/video/1050794925929', + 'url': 'https://www.ok.ru/live/1385317932687', 'info_dict': { - 'id': '1050794925929', - 'title': 're:^Поиск репертуара [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', + 'id': u'1385317932687', + 'title': u're:АНДРЕЙ МАЛАХОВ. ПРЯМОЙ ЭФИР [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', 'ext': 'mp4', - 'upload_date': u'20190428', - 'uploader': u'(((((КнЯзЬ ))))', - 'uploader_id': u'557343776873', + 'upload_date': u'20190603', + 'uploader': u'Светлана Соколенко', + 'uploader_id': u'575511609483', 'is_live': True }, 'params': { @@ -259,7 +259,7 @@ class OdnoklassnikiIE(InfoExtractor): return info assert title - if provider == 'LIVE_TV_APP': + if 'LIVE_TV' in provider: info['title'] = self._live_title(title) info['is_live'] = True From d75b910ad2d1d50424d8a2b791e2f327e7431771 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 16 Jun 2019 12:46:03 +0300 Subject: [PATCH 40/72] changing the merge method from master --- .github/pull.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull.yml b/.github/pull.yml index b55ef8820..cb259a99c 100644 --- a/.github/pull.yml +++ b/.github/pull.yml @@ -2,7 +2,7 @@ version: "1" rules: - base: master upstream: ytdl-org:master - mergeMethod: hardreset + mergeMethod: merge reviewers: - aviperes - hashark From e0fee7b2eeb571b00026677a79fb158af78674d0 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Mon, 17 Jun 2019 13:49:51 +0300 Subject: [PATCH 41/72] fix ffmpeg --- youtube_dl/downloader/external.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/downloader/external.py b/youtube_dl/downloader/external.py index acdb27712..1c382ca2e 100644 --- a/youtube_dl/downloader/external.py +++ b/youtube_dl/downloader/external.py @@ -243,8 +243,6 @@ class FFmpegFD(ExternalFD): # http://trac.ffmpeg.org/ticket/6125#comment:10 args += ['-seekable', '1' if seekable else '0'] - args += self._configuration_args() - # start_time = info_dict.get('start_time') or 0 # if start_time: # args += ['-ss', compat_str(start_time)] @@ -311,6 +309,8 @@ class FFmpegFD(ExternalFD): args += ['-rtmp_conn', conn] args += ['-i', url, '-c', 'copy'] + + args += self._configuration_args() if self.params.get('test', False): args += ['-fs', compat_str(self._TEST_FILE_SIZE)] From 549a91de290d7dcf4d8bf67b66bad62faa7be4be Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Mon, 17 Jun 2019 13:58:41 +0300 Subject: [PATCH 42/72] . --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index c0c82859e..d35ae88f3 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.08' +__version__ = 'vc.2019.06.17' From 4a7e1afbf3719a9034bc34e1b636865f66a99e79 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Wed, 19 Jun 2019 13:54:08 +0300 Subject: [PATCH 43/72] using _og_search_title before using the description as a title --- youtube_dl/extractor/facebook.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index c4555142e..892341add 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -431,6 +431,8 @@ class FacebookIE(InfoExtractor): video_title = self._html_search_regex( r'(?s)(.*?)', webpage, 'alternative title', default=None) + if not video_title: + video_title = self._og_search_title(webpage, default=None) if not video_title: video_title = self._html_search_meta( 'description', webpage, 'title', default=None) From f6afa73ac4080561908e4118e141fda637796bd3 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Wed, 19 Jun 2019 13:54:53 +0300 Subject: [PATCH 44/72] using the ownerName regex before using _og_search_title to get the uploader name --- youtube_dl/extractor/facebook.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 892341add..cc233b651 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -440,12 +440,13 @@ class FacebookIE(InfoExtractor): video_title = limit_length(video_title, 80) else: video_title = 'Facebook video #%s' % video_id + uploader = clean_html(get_element_by_id( 'fbPhotoPageAuthorName', webpage)) or self._search_regex( r'ownerName\s*:\s*"([^"]+)"', webpage, 'uploader',default=None) or \ - self._og_search_title(webpage, default=None) or self._search_regex( + self._search_regex( r'\"ownerName\":"(.+?)"', tahoe_data.secondary, - 'uploader_id', fatal=False) + 'uploader_id', fatal=False) or self._og_search_title(webpage, default=None) timestamp = int_or_none(self._search_regex( From ff8d873ffb3ec6a7cb9fd4640fada37a586b873b Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Wed, 19 Jun 2019 14:17:19 +0300 Subject: [PATCH 45/72] updating version --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index d35ae88f3..a5def2a00 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.17' +__version__ = 'vc.2019.06.19' From 46fc798e15c82dff75e0a3d50ac05361e63ed2c5 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 20 Jun 2019 13:03:30 +0300 Subject: [PATCH 46/72] extract shares and likes. --- youtube_dl/extractor/facebook.py | 47 ++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index cc233b651..3ba2e648f 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -460,18 +460,12 @@ class FacebookIE(InfoExtractor): 'uploader_id', default=None) or self._search_regex( r'[\'\"]ownerid[\'\"]\s*:\s*[\'\"](\d+)[\'\"]', tahoe_data.secondary, 'uploader_id', fatal=False) + thumbnail = self._og_search_thumbnail(webpage) - view_count = parse_count(self._search_regex( - r'\bpostViewCount\s*:\s*["\']([\d,.]+)', webpage, 'view count', - default=None) or self._search_regex( - r'[\'\"]postViewCount[\'\"]\s*:\s*(\d+)', tahoe_data.secondary, 'view count', - default=None) or self._search_regex( - r'\bviewCount\s*:\s*["\']([\d,.]+)', webpage, 'view count', - default=None) or self._search_regex( - r'[\'\"]viewCount[\'\"]\s*:\s*(\d+)', tahoe_data.secondary, 'view count', - default=None) - ) + view_count = parse_count(self._extract_meta_count(['postViewCount', 'viewCount'], webpage, tahoe_data, 'likes')) + likes_count = parse_count(self._extract_likes(webpage, tahoe_data)) + shares_count = parse_count(self._extract_meta_count(['sharecount'], webpage, tahoe_data, 'shares')) info_dict = { 'id': video_id, @@ -483,11 +477,42 @@ class FacebookIE(InfoExtractor): 'view_count': view_count, 'uploader_id': uploader_id, 'is_live': is_live, - 'live_status': live_status + 'live_status': live_status, + 'likes': likes_count, + 'shares': shares_count } return webpage, info_dict + def _extract_meta_count(self, fields, webpage, tahoe_data, name, ): + value = None + + for f in fields: + if value: + break + value = self._search_regex( + r'\b%s\s*:\s*["\']([\d,.]+)' % f, webpage, name, + default=None + ) + if value: + break + + value = self._search_regex( + r'[\'\"]%s[\'\"]\s*:\s*(\d+)' % f, tahoe_data.secondary, name, + default=None) + + return value + + def _extract_likes(self, webpage, tahoe_data): + values = re.findall(r'\blikecount\s*:\s*["\']([\d,.]+)', webpage) + if values: + return values[-1] + + + values = re.findall(r'[\'\"]\blikecount[\'\"]\s*:\s*(\d+)', tahoe_data.secondary) + if values: + return values[-1] + def _real_extract(self, url): video_id = self._match_id(url) From a5456c043a1f1231ff98421252573b354e0c084f Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 20 Jun 2019 13:14:42 +0300 Subject: [PATCH 47/72] . --- youtube_dl/extractor/facebook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 3ba2e648f..1b91c9036 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -478,8 +478,8 @@ class FacebookIE(InfoExtractor): 'uploader_id': uploader_id, 'is_live': is_live, 'live_status': live_status, - 'likes': likes_count, - 'shares': shares_count + 'like_count': likes_count, + 'share_count': shares_count } return webpage, info_dict From 77c07d1cc2b167e3a910e2dd2ca1d7269f4b5a4f Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 20 Jun 2019 14:41:51 +0300 Subject: [PATCH 48/72] get twitter views. --- youtube_dl/extractor/twitter.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/youtube_dl/extractor/twitter.py b/youtube_dl/extractor/twitter.py index 41d0b6be8..852589b65 100644 --- a/youtube_dl/extractor/twitter.py +++ b/youtube_dl/extractor/twitter.py @@ -14,6 +14,7 @@ from ..utils import ( remove_end, try_get, xpath_text, + parse_count ) from .periscope import PeriscopeIE @@ -165,6 +166,7 @@ class TwitterCardIE(TwitterBaseIE): config = None formats = [] duration = None + view_count = None urls = [url] if path.startswith('cards/'): @@ -265,6 +267,7 @@ class TwitterCardIE(TwitterBaseIE): title = 'Twitter web player' thumbnail = config.get('posterImage') duration = float_or_none(track.get('durationMs'), scale=1000) + view_count = parse_count(track.get('viewCount')) self._remove_duplicate_formats(formats) self._sort_formats(formats) @@ -275,6 +278,7 @@ class TwitterCardIE(TwitterBaseIE): 'thumbnail': thumbnail, 'duration': duration, 'formats': formats, + 'view_count': view_count } From 3ba6ef6ffbd165497666c6f1614d4b9b8e7b966e Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Fri, 21 Jun 2019 00:19:24 +0300 Subject: [PATCH 49/72] save guest token. --- youtube_dl/extractor/common.py | 2 +- youtube_dl/extractor/twitter.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 9c3e9eec6..b411882e0 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -2816,7 +2816,7 @@ class InfoExtractor(object): """ Return a compat_cookies.SimpleCookie with the cookies for the url """ req = sanitized_Request(url) self._downloader.cookiejar.add_cookie_header(req) - return compat_cookies.SimpleCookie(req.get_header('Cookie')) + return compat_cookies.SimpleCookie(str(req.get_header('Cookie'))) def _apply_first_set_cookie_header(self, url_handle, cookie): """ diff --git a/youtube_dl/extractor/twitter.py b/youtube_dl/extractor/twitter.py index 852589b65..fe9860b3c 100644 --- a/youtube_dl/extractor/twitter.py +++ b/youtube_dl/extractor/twitter.py @@ -241,12 +241,18 @@ class TwitterCardIE(TwitterBaseIE): ct0 = self._get_cookies(url).get('ct0') if ct0: headers['csrf_token'] = ct0.value - guest_token = self._download_json( - '%s/guest/activate.json' % self._API_BASE, video_id, - 'Downloading guest token', data=b'', - headers=headers)['guest_token'] + guest_token_c = self._get_cookies('http://api.twitter.com/').get('gt') + if not guest_token_c: + guest_token = self._download_json( + '%s/guest/activate.json' % self._API_BASE, video_id, + 'Downloading guest token', data=b'', + headers=headers)['guest_token'] + self._set_cookie('api.twitter.com', 'gt', guest_token) + else: + guest_token = guest_token_c.value + headers['x-guest-token'] = guest_token - self._set_cookie('api.twitter.com', 'gt', guest_token) + config = self._download_json( '%s/videos/tweet/config/%s.json' % (self._API_BASE, video_id), video_id, headers=headers) From 3f8ec99719cc91c9ec4fe3a6b32e4930e2c27c23 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sat, 22 Jun 2019 22:54:09 +0300 Subject: [PATCH 50/72] extrace page likes. --- youtube_dl/extractor/facebook.py | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 1b91c9036..14cb54966 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -24,6 +24,7 @@ from ..utils import ( sanitized_Request, try_get, urlencode_postdata, + update_url_query ) @@ -481,6 +482,8 @@ class FacebookIE(InfoExtractor): 'like_count': likes_count, 'share_count': shares_count } + if uploader_id: + info_dict['uploader_like_count'] = FacebookAjax(self, webpage, uploader_id).page_likes return webpage, info_dict @@ -587,6 +590,53 @@ class FacebookTahoeData: return tahoe_request_data, tahoe_request_headers +class FacebookAjax: + HOVER_URL_TEMPLATE = 'https://www.facebook.com/ajax/hovercard/user.php?id=111&fb_dtsg_ag=x&endpoint=%2Fajax%2Fhovercard%2Fuser.php%3Fid%3D111&__a=1' + + def __init__(self, extractor, page, page_id): + self._page = page + self._page_id = page_id + self._extractor = extractor + self._hover_data = None + + def _get_hover_data(self): + if self._hover_data: + data = self._hover_data + else: + data = self._extractor._download_webpage( + self._get_request_url(self._page_id), self._page_id + ) + return '' if not data else data + + @property + def hover(self): + return self._get_hover_data() + + @property + def page_likes(self): + return parse_count( + self._extractor._search_regex(r'\/span>([\d,]+) likes', self.hover, 'uploader_likes', default=None) + ) + + def _get_request_url(self, page_id): + return update_url_query(self.HOVER_URL_TEMPLATE, + { + + 'id': page_id, + 'endpoint': '/ajax/hovercard/user.php?id=%s' % page_id, + '__a': 1, + '__pc': self._extractor._search_regex( + r'pkg_cohort["\']\s*:\s*["\'](.+?)["\']', self._page, + 'pkg cohort', default='PHASED:DEFAULT'), + '__rev': self._extractor._search_regex( + r'client_revision["\']\s*:\s*(\d+),', self._page, + 'client revision', default='3944515'), + 'fb_dtsg': self._extractor._search_regex( + r'"DTSGInitialData"\s*,\s*\[\]\s*,\s*{\s*"token"\s*:\s*"([^"]+)"', + self._page, 'dtsg token', default=''), + }) + + class FacebookPluginsVideoIE(InfoExtractor): _VALID_URL = r'https?://(?:[\w-]+\.)?facebook\.com/plugins/video\.php\?.*?\bhref=(?Phttps.+)' From c8a0a6d791501c7d15534405e7a70c6e3110a792 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sat, 22 Jun 2019 22:59:11 +0300 Subject: [PATCH 51/72] not fatal for now. --- youtube_dl/extractor/facebook.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 14cb54966..1021345bf 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -614,10 +614,13 @@ class FacebookAjax: @property def page_likes(self): - return parse_count( - self._extractor._search_regex(r'\/span>([\d,]+) likes', self.hover, 'uploader_likes', default=None) - ) - + try: + return parse_count( + self._extractor._search_regex(r'\/span>([\d,]+) likes', self.hover, 'uploader_likes', default=None) + ) + except: + return None + def _get_request_url(self, page_id): return update_url_query(self.HOVER_URL_TEMPLATE, { From 92e5646145dbaef5d6523dfc4d2a44cea9c4d57d Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 23 Jun 2019 09:57:17 +0300 Subject: [PATCH 52/72] print exception. --- youtube_dl/extractor/facebook.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 1021345bf..0c072a5e0 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -618,9 +618,9 @@ class FacebookAjax: return parse_count( self._extractor._search_regex(r'\/span>([\d,]+) likes', self.hover, 'uploader_likes', default=None) ) - except: - return None - + except Exception as e: + self._extractor.report_warning(self._page_id + str(e)) + def _get_request_url(self, page_id): return update_url_query(self.HOVER_URL_TEMPLATE, { From 0688086aea498a903d4ad93b98f90944ffbf3081 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 12:13:48 +0300 Subject: [PATCH 53/72] upgrading version (to test new watcher) --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index a5def2a00..9a682d73c 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.19' +__version__ = 'vc.2019.06.20' From 75593b2c1b2b2ba23fbe7840bd0e7aed738198ef Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 14:04:52 +0300 Subject: [PATCH 54/72] changing version again to test the watcher --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 9a682d73c..a5def2a00 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.20' +__version__ = 'vc.2019.06.19' From 7b284e4b000c060a211b5329619f98affd7b83a9 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 14:11:31 +0300 Subject: [PATCH 55/72] again --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index a5def2a00..9a682d73c 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.19' +__version__ = 'vc.2019.06.20' From b90bcd03fd4c9a7c1c178c95c1f7854bb09a2b5c Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 14:37:03 +0300 Subject: [PATCH 56/72] again --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 9a682d73c..f38d395fc 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.20' +__version__ = 'vc.2019.06.21' From a369e1aaa7a2096c82480b32dd99a398874b8b76 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 16:12:28 +0300 Subject: [PATCH 57/72] upgrading again in order to test the watcher --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index f38d395fc..987778cd6 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.21' +__version__ = 'vc.2019.06.22' From 228de634855fa8d4929b80ed681c0747983746cd Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 16:17:30 +0300 Subject: [PATCH 58/72] again --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 987778cd6..ba1ccdf53 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.22' +__version__ = 'vc.2019.06.23' From 625a0b383af0c91cf28219d4c8774143ba135f9f Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 16:18:58 +0300 Subject: [PATCH 59/72] one more time --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index ba1ccdf53..11f895645 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.23' +__version__ = 'vc.2019.06.231' From ca1cf00cacd2aa2b53ad165b613cc7264ea1127d Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 16:23:50 +0300 Subject: [PATCH 60/72] again --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 11f895645..ba1ccdf53 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.231' +__version__ = 'vc.2019.06.23' From bb2ddf68d5131702d1cc63bcea42eceb80e3614e Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 23 Jun 2019 16:28:51 +0300 Subject: [PATCH 61/72] again :-( --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index ba1ccdf53..d05d19391 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.23' +__version__ = 'vc.2019.06.232' From 8d6cc49ace357dc1a1a173ce7154ef8bf174b989 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Tue, 25 Jun 2019 12:32:07 +0300 Subject: [PATCH 62/72] get facebook live current views. --- youtube_dl/extractor/facebook.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 1b91c9036..d6d926c46 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -463,7 +463,10 @@ class FacebookIE(InfoExtractor): thumbnail = self._og_search_thumbnail(webpage) - view_count = parse_count(self._extract_meta_count(['postViewCount', 'viewCount'], webpage, tahoe_data, 'likes')) + if is_live: + view_count = parse_count(self._search_regex(r'viewerCount:([\d]+)', webpage, 'views', fatal=False)) + else: + view_count = parse_count(self._extract_meta_count(['postViewCount', 'viewCount'], webpage, tahoe_data, 'likes')) likes_count = parse_count(self._extract_likes(webpage, tahoe_data)) shares_count = parse_count(self._extract_meta_count(['sharecount'], webpage, tahoe_data, 'shares')) From 2e58d3ffb859324b6328b43a9e0a62e5b30fd705 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 27 Jun 2019 10:53:46 +0300 Subject: [PATCH 63/72] handle another case. --- youtube_dl/extractor/facebook.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 96b5a81bb..33d2acc91 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -465,9 +465,13 @@ class FacebookIE(InfoExtractor): thumbnail = self._og_search_thumbnail(webpage) if is_live: - view_count = parse_count(self._search_regex(r'viewerCount:([\d]+)', webpage, 'views', fatal=False)) + view_count = parse_count( + self._search_regex(r'viewerCount:([\d]+)', webpage, 'views', fatal=False) or \ + self._search_regex(r'[\'\"]viewerCount[\'\"]\s*:\s*(\d+)', tahoe_data.primary, 'views', fatal=False) + ) else: view_count = parse_count(self._extract_meta_count(['postViewCount', 'viewCount'], webpage, tahoe_data, 'likes')) + likes_count = parse_count(self._extract_likes(webpage, tahoe_data)) shares_count = parse_count(self._extract_meta_count(['sharecount'], webpage, tahoe_data, 'shares')) From 3e7228b22dac7bc850610a59b1bb6074f8ba43fb Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 27 Jun 2019 21:51:12 +0300 Subject: [PATCH 64/72] update version. --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index d05d19391..0a425444d 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.232' +__version__ = 'vc.2019.06.27' From 2090ccef7bb22a6a08286a145086916c0c6cacbe Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 30 Jun 2019 17:46:05 +0300 Subject: [PATCH 65/72] add expiration. --- youtube_dl/extractor/twitter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/twitter.py b/youtube_dl/extractor/twitter.py index fe9860b3c..422350c3b 100644 --- a/youtube_dl/extractor/twitter.py +++ b/youtube_dl/extractor/twitter.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import re - +import time from .common import InfoExtractor from ..compat import compat_urlparse from ..utils import ( @@ -247,7 +247,7 @@ class TwitterCardIE(TwitterBaseIE): '%s/guest/activate.json' % self._API_BASE, video_id, 'Downloading guest token', data=b'', headers=headers)['guest_token'] - self._set_cookie('api.twitter.com', 'gt', guest_token) + self._set_cookie('api.twitter.com', 'gt', guest_token, expire_time=time.time() + 3000) else: guest_token = guest_token_c.value From 4fdd41c117b9e518d6b28cfb45196ada791d4b8a Mon Sep 17 00:00:00 2001 From: hashark <18191362+hashark@users.noreply.github.com> Date: Mon, 1 Jul 2019 10:41:20 +0300 Subject: [PATCH 66/72] Update version.py --- youtube_dl/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 0a425444d..598da455d 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = 'vc.2019.06.27' +__version__ = 'vc.2019.06.30' From f46186f960ac2a867bdb07772a379cf88d55dbe0 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 21 Jul 2019 10:58:11 +0300 Subject: [PATCH 67/72] [ok.ru] Drop embedded videos. --- youtube_dl/extractor/odnoklassniki.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index f177e4eb4..58ea3aea0 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -252,11 +252,14 @@ class OdnoklassnikiIE(InfoExtractor): } if provider == 'USER_YOUTUBE': + """ info.update({ '_type': 'url_transparent', 'url': movie['contentId'], }) return info + """ + raise ExtractorError('This video is embedded from YouTube.', expected=True) assert title if 'LIVE_TV' in provider: From 19d7a4f22d309782a5bc2a032d92a2dec9105c0a Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 21 Jul 2019 13:31:05 +0300 Subject: [PATCH 68/72] support embedding video. --- youtube_dl/YoutubeDL.py | 4 ++++ youtube_dl/extractor/odnoklassniki.py | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 3e832fec2..5d82508e7 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -867,6 +867,10 @@ class YoutubeDL(object): ie_key=ie_result.get('ie_key'), extra_info=extra_info) elif result_type == 'url_transparent': + if not self.params.get('download_embedded_video', True): + ie_result['embedded_url'] = ie_result['url'] + return ie_result + # Use the information from the embedding page info = self.extract_info( ie_result['url'], ie_key=ie_result.get('ie_key'), diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 58ea3aea0..06de40e50 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -252,14 +252,12 @@ class OdnoklassnikiIE(InfoExtractor): } if provider == 'USER_YOUTUBE': - """ info.update({ '_type': 'url_transparent', - 'url': movie['contentId'], + 'url': 'https://www.youtube.com/watch?v=%s' % movie['contentId'], }) return info - """ - raise ExtractorError('This video is embedded from YouTube.', expected=True) + assert title if 'LIVE_TV' in provider: From 4c10e352246650fa78fe3e6490006ba566bfbc3f Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 21 Jul 2019 13:47:44 +0300 Subject: [PATCH 69/72] discar change. --- youtube_dl/YoutubeDL.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 5d82508e7..c72acec0a 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -867,9 +867,6 @@ class YoutubeDL(object): ie_key=ie_result.get('ie_key'), extra_info=extra_info) elif result_type == 'url_transparent': - if not self.params.get('download_embedded_video', True): - ie_result['embedded_url'] = ie_result['url'] - return ie_result # Use the information from the embedding page info = self.extract_info( From 24f8b040f48dcae5d165f5199ebd593084c63977 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Thu, 26 Sep 2019 16:01:43 +0300 Subject: [PATCH 70/72] . --- youtube_dl/extractor/vk.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index aa241824a..9ed3bc6b0 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -305,6 +305,7 @@ class VKIE(VKBaseIE): video_id = '%s_%s' % (mobj.group('oid'), mobj.group('id')) info_page = self._download_webpage(info_url, video_id) + url_page = self._download_webpage(url, video_id) error_message = self._html_search_regex( [r'(?s)]+class="video_layer_message"[^>]*>(.+?)
', @@ -354,11 +355,15 @@ class VKIE(VKBaseIE): r'The video .+? is unavailable': 'Video %s is not available.', + + r'You need to be a member of this group to view': + 'Video %s is for group members only.', } for error_re, error_msg in ERRORS.items(): - if re.search(error_re, info_page): - raise ExtractorError(error_msg % video_id, expected=True) + for page in [info_page, url_page]: + if re.search(error_re, page): + raise ExtractorError(error_msg % video_id, expected=True) youtube_url = YoutubeIE._extract_url(info_page) if youtube_url: From a8b8535f5b382504db44cfacb35d54472fa305a9 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Wed, 16 Oct 2019 10:11:25 +0300 Subject: [PATCH 71/72] fix error handling --- youtube_dl/extractor/vk.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index 718c4e774..08e838060 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -322,38 +322,38 @@ class VKIE(VKBaseIE): ERROR_COPYRIGHT = 'Video %s has been removed from public access due to rightholder complaint.' ERRORS = { - r'>Видеозапись .*? была изъята из публичного доступа в связи с обращением правообладателя.<': + r'Видеозапись .*? была изъята из публичного доступа в связи с обращением правообладателя.<': ERROR_COPYRIGHT, - r'>The video .*? was removed from public access by request of the copyright holder.<': + r'The video .*? was removed from public access by request of the copyright holder.<': ERROR_COPYRIGHT, - r'Please log in or <': + r'Please log in or <': 'Video %s is only available for registered users, ' 'use --username and --password options to provide account credentials.', - r'Unknown error': + r'Unknown error': 'Video %s does not exist.', r'Видео временно недоступно': 'Video %s is temporarily unavailable.', - r'Access denied': + r'Access denied': 'Access denied to video %s.', - r'Видеозапись недоступна, так как её автор был заблокирован.': + r'Видеозапись недоступна, так как её автор был заблокирован.': 'Video %s is no longer available, because its author has been blocked.', - r'This video is no longer available, because its author has been blocked.': + r'This video is no longer available, because its author has been blocked.': 'Video %s is no longer available, because its author has been blocked.', - r'This video is no longer available, because it has been deleted.': + r'This video is no longer available, because it has been deleted.': 'Video %s is no longer available, because it has been deleted.', - r'The video .+? is not available in your region.': + r'The video .+? is not available in your region.': 'Video %s is not available in your region.', - r'The video .+? is unavailable': + r'The video .+? is unavailable': 'Video %s is not available.', r'You need to be a member of this group to view': From 66634ec66b944df027b968575358bb59520394b8 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 22 Oct 2019 12:41:44 +0300 Subject: [PATCH 72/72] prioritize tahoe_data.secondary over webpage when extracting timestamp --- youtube_dl/extractor/facebook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 5e3cfdb94..fff42255e 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -456,9 +456,9 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( - r']+data-utime=["\'](\d+)', webpage, - 'timestamp', default=None) or self._search_regex( r'data-utime=\\\"(\d+)\\\"', tahoe_data.secondary, + 'timestamp', default=None) or self._search_regex( + r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) uploader_id = self._search_regex(