forked from minhngoc25a/yt-dlc
[myspace] Add support for song urls (fixes #2040)
This commit is contained in:
parent
4cf393bb4b
commit
efb1bb90a0
|
@ -1,3 +1,5 @@
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
@ -8,41 +10,75 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class MySpaceIE(InfoExtractor):
|
class MySpaceIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://myspace\.com/([^/]+)/video/[^/]+/(?P<id>\d+)'
|
_VALID_URL = r'https?://myspace\.com/([^/]+)/(?:video/[^/]+/|music/song/.*?)(?P<id>\d+)'
|
||||||
|
|
||||||
_TEST = {
|
_TESTS = [
|
||||||
u'url': u'https://myspace.com/coldplay/video/viva-la-vida/100008689',
|
{
|
||||||
u'info_dict': {
|
'url': 'https://myspace.com/coldplay/video/viva-la-vida/100008689',
|
||||||
u'id': u'100008689',
|
'info_dict': {
|
||||||
u'ext': u'flv',
|
'id': '100008689',
|
||||||
u'title': u'Viva La Vida',
|
'ext': 'flv',
|
||||||
u'description': u'The official Viva La Vida video, directed by Hype Williams',
|
'title': 'Viva La Vida',
|
||||||
u'uploader': u'Coldplay',
|
'description': 'The official Viva La Vida video, directed by Hype Williams',
|
||||||
u'uploader_id': u'coldplay',
|
'uploader': 'Coldplay',
|
||||||
|
'uploader_id': 'coldplay',
|
||||||
},
|
},
|
||||||
u'params': {
|
'params': {
|
||||||
# rtmp download
|
# rtmp download
|
||||||
u'skip_download': True,
|
'skip_download': True,
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
# song
|
||||||
|
{
|
||||||
|
'url': 'https://myspace.com/spiderbags/music/song/darkness-in-my-heart-39008454-27041242',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '39008454',
|
||||||
|
'ext': 'flv',
|
||||||
|
'title': 'Darkness In My Heart',
|
||||||
|
'uploader_id': 'spiderbags',
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
# rtmp download
|
||||||
|
'skip_download': True,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
mobj = re.match(self._VALID_URL, url)
|
mobj = re.match(self._VALID_URL, url)
|
||||||
video_id = mobj.group('id')
|
video_id = mobj.group('id')
|
||||||
webpage = self._download_webpage(url, video_id)
|
webpage = self._download_webpage(url, video_id)
|
||||||
|
|
||||||
|
if 'music/song' in url:
|
||||||
|
# songs don't store any useful info in the 'context' variable
|
||||||
|
def search_data(name):
|
||||||
|
return self._search_regex(r'data-%s="(.*?)"' % name, webpage,
|
||||||
|
name)
|
||||||
|
streamUrl = search_data('stream-url')
|
||||||
|
info = {
|
||||||
|
'id': video_id,
|
||||||
|
'title': self._og_search_title(webpage),
|
||||||
|
'uploader_id': search_data('artist-username'),
|
||||||
|
'thumbnail': self._og_search_thumbnail(webpage),
|
||||||
|
}
|
||||||
|
else:
|
||||||
context = json.loads(self._search_regex(r'context = ({.*?});', webpage,
|
context = json.loads(self._search_regex(r'context = ({.*?});', webpage,
|
||||||
u'context'))
|
u'context'))
|
||||||
video = context['video']
|
video = context['video']
|
||||||
rtmp_url, play_path = video['streamUrl'].split(';', 1)
|
streamUrl = video['streamUrl']
|
||||||
|
info = {
|
||||||
return {
|
|
||||||
'id': compat_str(video['mediaId']),
|
'id': compat_str(video['mediaId']),
|
||||||
'title': video['title'],
|
'title': video['title'],
|
||||||
'url': rtmp_url,
|
|
||||||
'play_path': play_path,
|
|
||||||
'ext': 'flv',
|
|
||||||
'description': video['description'],
|
'description': video['description'],
|
||||||
'thumbnail': video['imageUrl'],
|
'thumbnail': video['imageUrl'],
|
||||||
'uploader': video['artistName'],
|
'uploader': video['artistName'],
|
||||||
'uploader_id': video['artistUsername'],
|
'uploader_id': video['artistUsername'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtmp_url, play_path = streamUrl.split(';', 1)
|
||||||
|
info.update({
|
||||||
|
'url': rtmp_url,
|
||||||
|
'play_path': play_path,
|
||||||
|
'ext': 'flv',
|
||||||
|
})
|
||||||
|
return info
|
||||||
|
|
Loading…
Reference in New Issue