projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a62460a
)
[clyp] Add support for token protected media (closes #17184)
author
Sergey M․
<dstftw@gmail.com>
Tue, 7 Aug 2018 16:27:08 +0000
(23:27 +0700)
committer
Sergey M․
<dstftw@gmail.com>
Tue, 7 Aug 2018 16:27:08 +0000
(23:27 +0700)
youtube_dl/extractor/clyp.py
patch
|
blob
|
history
diff --git
a/youtube_dl/extractor/clyp.py
b/youtube_dl/extractor/clyp.py
index 57e6437997153200999e7a6eb6b9b9e450f6b13f..06d04de139444e0e48d46cc2132eee9f1f94919d 100644
(file)
--- a/
youtube_dl/extractor/clyp.py
+++ b/
youtube_dl/extractor/clyp.py
@@
-1,15
+1,19
@@
from __future__ import unicode_literals
from .common import InfoExtractor
from __future__ import unicode_literals
from .common import InfoExtractor
+from ..compat import (
+ compat_parse_qs,
+ compat_urllib_parse_urlparse,
+)
from ..utils import (
float_or_none,
from ..utils import (
float_or_none,
-
parse_iso8601
,
+
unified_timestamp
,
)
class ClypIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?clyp\.it/(?P<id>[a-z0-9]+)'
)
class ClypIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?clyp\.it/(?P<id>[a-z0-9]+)'
- _TEST
=
{
+ _TEST
S = [
{
'url': 'https://clyp.it/ojz2wfah',
'md5': '1d4961036c41247ecfdcc439c0cddcbb',
'info_dict': {
'url': 'https://clyp.it/ojz2wfah',
'md5': '1d4961036c41247ecfdcc439c0cddcbb',
'info_dict': {
@@
-21,13
+25,34
@@
class ClypIE(InfoExtractor):
'timestamp': 1443515251,
'upload_date': '20150929',
},
'timestamp': 1443515251,
'upload_date': '20150929',
},
- }
+ }, {
+ 'url': 'https://clyp.it/b04p1odi?token=b0078e077e15835845c528a44417719d',
+ 'info_dict': {
+ 'id': 'b04p1odi',
+ 'ext': 'mp3',
+ 'title': 'GJ! (Reward Edit)',
+ 'description': 'Metal Resistance (THE ONE edition)',
+ 'duration': 177.789,
+ 'timestamp': 1528241278,
+ 'upload_date': '20180605',
+ },
+ 'params': {
+ 'skip_download': True,
+ },
+ }]
def _real_extract(self, url):
audio_id = self._match_id(url)
def _real_extract(self, url):
audio_id = self._match_id(url)
+ qs = compat_parse_qs(compat_urllib_parse_urlparse(url).query)
+ token = qs.get('token', [None])[0]
+
+ query = {}
+ if token:
+ query['token'] = token
+
metadata = self._download_json(
metadata = self._download_json(
- 'https://api.clyp.it/%s' % audio_id, audio_id)
+ 'https://api.clyp.it/%s' % audio_id, audio_id
, query=query
)
formats = []
for secure in ('', 'Secure'):
formats = []
for secure in ('', 'Secure'):
@@
-45,7
+70,7
@@
class ClypIE(InfoExtractor):
title = metadata['Title']
description = metadata.get('Description')
duration = float_or_none(metadata.get('Duration'))
title = metadata['Title']
description = metadata.get('Description')
duration = float_or_none(metadata.get('Duration'))
- timestamp =
parse_iso8601
(metadata.get('DateCreated'))
+ timestamp =
unified_timestamp
(metadata.get('DateCreated'))
return {
'id': audio_id,
return {
'id': audio_id,