From 341cc7125b24a6921c04f9dbc7a3feb64acfd8d2 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Wed, 16 Jan 2019 12:31:43 +0200 Subject: [PATCH 1/4] Raise error in case of paid videos. --- youtube_dl/extractor/odnoklassniki.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 190d8af4d..3a5476e58 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -115,7 +115,12 @@ class OdnoklassnikiIE(InfoExtractor): }, { 'url': 'https://m.ok.ru/dk?st.cmd=movieLayer&st.discId=863789452017&st.retLoc=friend&st.rtu=%2Fdk%3Fst.cmd%3DfriendMovies%26st.mode%3Down%26st.mrkId%3D%257B%2522uploadedMovieMarker%2522%253A%257B%2522marker%2522%253A%25221519410114503%2522%252C%2522hasMore%2522%253Atrue%257D%252C%2522sharedMovieMarker%2522%253A%257B%2522marker%2522%253Anull%252C%2522hasMore%2522%253Afalse%257D%257D%26st.friendId%3D561722190321%26st.frwd%3Don%26_prevCmd%3DfriendMovies%26tkn%3D7257&st.discType=MOVIE&st.mvId=863789452017&_prevCmd=friendMovies&tkn=3648#lst#', 'only_matching': True, - }] + }, { + # Paid video + 'url': 'https://ok.ru/video/954886983203', + 'only_matching': True, + } + ] def _real_extract(self, url): start_time = int_or_none(compat_parse_qs( @@ -153,6 +158,10 @@ class OdnoklassnikiIE(InfoExtractor): video_id, 'Downloading metadata JSON', data=urlencode_postdata(data)) + paymentInfo = metadata.get('paymentInfo') + if paymentInfo: + raise ExtractorError('This is Paid video. you need to subscribe in order to watch it', expected=True) + movie = metadata['movie'] # Some embedded videos may not contain title in movie dict (e.g. From 0e3e9bd43519b2c0950bd6df4747540be98c28c1 Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 20 Jan 2019 10:08:21 +0200 Subject: [PATCH 2/4] Handle paid video only if formats is missing. --- youtube_dl/extractor/odnoklassniki.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 3a5476e58..11f7f9dc3 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -158,10 +158,6 @@ class OdnoklassnikiIE(InfoExtractor): video_id, 'Downloading metadata JSON', data=urlencode_postdata(data)) - paymentInfo = metadata.get('paymentInfo') - if paymentInfo: - raise ExtractorError('This is Paid video. you need to subscribe in order to watch it', expected=True) - movie = metadata['movie'] # Some embedded videos may not contain title in movie dict (e.g. @@ -255,5 +251,10 @@ class OdnoklassnikiIE(InfoExtractor): self._sort_formats(formats) + if not formats: + payment_info = metadata.get('paymentInfo') + if payment_info: + raise ExtractorError('This video is paid, subscribe to download it', expected=True) + info['formats'] = formats return info From 541557124dae1613aee1f10210103f731205746f Mon Sep 17 00:00:00 2001 From: Avi Peretz Date: Sun, 20 Jan 2019 10:12:46 +0200 Subject: [PATCH 3/4] Aplly comment --- youtube_dl/extractor/odnoklassniki.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 11f7f9dc3..28771bb7f 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -249,12 +249,11 @@ class OdnoklassnikiIE(InfoExtractor): 'ext': 'flv', }) - self._sort_formats(formats) - if not formats: payment_info = metadata.get('paymentInfo') if payment_info: raise ExtractorError('This video is paid, subscribe to download it', expected=True) + self._sort_formats(formats) info['formats'] = formats return info From 4045fa9d9a908588ca10493aa12b3a409cfc8c6c Mon Sep 17 00:00:00 2001 From: Sergey M Date: Sun, 20 Jan 2019 15:14:04 +0700 Subject: [PATCH 4/4] Update odnoklassniki.py --- 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 28771bb7f..114b93c07 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -119,8 +119,7 @@ class OdnoklassnikiIE(InfoExtractor): # Paid video 'url': 'https://ok.ru/video/954886983203', 'only_matching': True, - } - ] + }] def _real_extract(self, url): start_time = int_or_none(compat_parse_qs( @@ -255,5 +254,6 @@ class OdnoklassnikiIE(InfoExtractor): raise ExtractorError('This video is paid, subscribe to download it', expected=True) self._sort_formats(formats) + info['formats'] = formats return info