projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ustream] Try to extract uploader from JSON data (#5128)
[youtube-dl]
/
youtube_dl
/
extractor
/
dailymotion.py
diff --git
a/youtube_dl/extractor/dailymotion.py
b/youtube_dl/extractor/dailymotion.py
index cf5841a7c6e92e115d7f685d8f7ce337a51cb92a..7615ecd4ba3a9d55720f697cb792ca01e92bd1df 100644
(file)
--- a/
youtube_dl/extractor/dailymotion.py
+++ b/
youtube_dl/extractor/dailymotion.py
@@
-6,7
+6,6
@@
import json
import itertools
from .common import InfoExtractor
import itertools
from .common import InfoExtractor
-from .subtitles import SubtitlesInfoExtractor
from ..compat import (
compat_str,
from ..compat import (
compat_str,
@@
-26,12
+25,11
@@
class DailymotionBaseInfoExtractor(InfoExtractor):
def _build_request(url):
"""Build a request with the family filter disabled"""
request = compat_urllib_request.Request(url)
def _build_request(url):
"""Build a request with the family filter disabled"""
request = compat_urllib_request.Request(url)
- request.add_header('Cookie', 'family_filter=off')
- request.add_header('Cookie', 'ff=off')
+ request.add_header('Cookie', 'family_filter=off; ff=off')
return request
return request
-class DailymotionIE(DailymotionBaseInfoExtractor
, SubtitlesInfoExtractor
):
+class DailymotionIE(DailymotionBaseInfoExtractor):
"""Information Extractor for Dailymotion"""
_VALID_URL = r'(?i)(?:https?://)?(?:(www|touch)\.)?dailymotion\.[a-z]{2,3}/(?:(embed|#)/)?video/(?P<id>[^/?_]+)'
"""Information Extractor for Dailymotion"""
_VALID_URL = r'(?i)(?:https?://)?(?:(www|touch)\.)?dailymotion\.[a-z]{2,3}/(?:(embed|#)/)?video/(?P<id>[^/?_]+)'
@@
-47,13
+45,13
@@
class DailymotionIE(DailymotionBaseInfoExtractor, SubtitlesInfoExtractor):
_TESTS = [
{
_TESTS = [
{
- 'url': 'http
://www.dailymotion.com/video/x33vw9_tutoriel-de-youtubeur-dl-des-video_tech
',
- 'md5': '
392c4b85a60a90dc4792da41ce3144eb
',
+ 'url': 'http
s://www.dailymotion.com/video/x2iuewm_steam-machine-models-pricing-listed-on-steam-store-ign-news_videogames
',
+ 'md5': '
2137c41a8e78554bb09225b8eb322406
',
'info_dict': {
'info_dict': {
- 'id': 'x
33vw9
',
+ 'id': 'x
2iuewm
',
'ext': 'mp4',
'ext': 'mp4',
- 'uploader': '
Amphora Alex and Van .
',
- 'title': '
Tutoriel de Youtubeur"DL DES VIDEO DE YOUTUBE"
',
+ 'uploader': '
IGN
',
+ 'title': '
Steam Machine Models, Pricing Listed on Steam Store - IGN News
',
}
},
# Vevo video
}
},
# Vevo video
@@
-113,8
+111,9
@@
class DailymotionIE(DailymotionBaseInfoExtractor, SubtitlesInfoExtractor):
video_upload_date = mobj.group(3) + mobj.group(2) + mobj.group(1)
embed_url = 'http://www.dailymotion.com/embed/video/%s' % video_id
video_upload_date = mobj.group(3) + mobj.group(2) + mobj.group(1)
embed_url = 'http://www.dailymotion.com/embed/video/%s' % video_id
- embed_page = self._download_webpage(embed_url, video_id,
- 'Downloading embed page')
+ embed_request = self._build_request(embed_url)
+ embed_page = self._download_webpage(
+ embed_request, video_id, 'Downloading embed page')
info = self._search_regex(r'var info = ({.*?}),$', embed_page,
'video info', flags=re.MULTILINE)
info = json.loads(info)
info = self._search_regex(r'var info = ({.*?}),$', embed_page,
'video info', flags=re.MULTILINE)
info = json.loads(info)
@@
-143,9
+142,6
@@
class DailymotionIE(DailymotionBaseInfoExtractor, SubtitlesInfoExtractor):
# subtitles
video_subtitles = self.extract_subtitles(video_id, webpage)
# subtitles
video_subtitles = self.extract_subtitles(video_id, webpage)
- if self._downloader.params.get('listsubtitles', False):
- self._list_available_subtitles(video_id, webpage)
- return
view_count = str_to_int(self._search_regex(
r'video_views_count[^>]+>\s+([\d\.,]+)',
view_count = str_to_int(self._search_regex(
r'video_views_count[^>]+>\s+([\d\.,]+)',
@@
-169,7
+165,7
@@
class DailymotionIE(DailymotionBaseInfoExtractor, SubtitlesInfoExtractor):
'view_count': view_count,
}
'view_count': view_count,
}
- def _get_
available_
subtitles(self, video_id, webpage):
+ def _get_subtitles(self, video_id, webpage):
try:
sub_list = self._download_webpage(
'https://api.dailymotion.com/video/%s/subtitles?fields=id,language,url' % video_id,
try:
sub_list = self._download_webpage(
'https://api.dailymotion.com/video/%s/subtitles?fields=id,language,url' % video_id,
@@
-179,7
+175,7
@@
class DailymotionIE(DailymotionBaseInfoExtractor, SubtitlesInfoExtractor):
return {}
info = json.loads(sub_list)
if (info['total'] > 0):
return {}
info = json.loads(sub_list)
if (info['total'] > 0):
- sub_lang_list = dict((l['language'],
l['url'
]) for l in info['list'])
+ sub_lang_list = dict((l['language'],
[{'url': l['url'], 'ext': 'srt'}
]) for l in info['list'])
return sub_lang_list
self._downloader.report_warning('video doesn\'t have subtitles')
return {}
return sub_lang_list
self._downloader.report_warning('video doesn\'t have subtitles')
return {}
@@
-194,6
+190,7
@@
class DailymotionPlaylistIE(DailymotionBaseInfoExtractor):
'url': 'http://www.dailymotion.com/playlist/xv4bw_nqtv_sport/1#video=xl8v3q',
'info_dict': {
'title': 'SPORT',
'url': 'http://www.dailymotion.com/playlist/xv4bw_nqtv_sport/1#video=xl8v3q',
'info_dict': {
'title': 'SPORT',
+ 'id': 'xv4bw_nqtv_sport',
},
'playlist_mincount': 20,
}]
},
'playlist_mincount': 20,
}]
@@
-227,7
+224,7
@@
class DailymotionPlaylistIE(DailymotionBaseInfoExtractor):
class DailymotionUserIE(DailymotionPlaylistIE):
IE_NAME = 'dailymotion:user'
class DailymotionUserIE(DailymotionPlaylistIE):
IE_NAME = 'dailymotion:user'
- _VALID_URL = r'https?://(?:www\.)?dailymotion\.[a-z]{2,3}/user/(?P<user>[^/]+)'
+ _VALID_URL = r'https?://(?:www\.)?dailymotion\.[a-z]{2,3}/
(?:old/)?
user/(?P<user>[^/]+)'
_PAGE_TEMPLATE = 'http://www.dailymotion.com/user/%s/%s'
_TESTS = [{
'url': 'https://www.dailymotion.com/user/nqtv',
_PAGE_TEMPLATE = 'http://www.dailymotion.com/user/%s/%s'
_TESTS = [{
'url': 'https://www.dailymotion.com/user/nqtv',