Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Backups
youtube-dl
Commits
9d0c08a0
Unverified
Commit
9d0c08a0
authored
Feb 25, 2017
by
Yen Chi Hsuan
Browse files
[vevo] Fix videos with the new streams/streamsV3 format (closes #11719)
parent
e498758b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
5 deletions
+19
-5
ChangeLog
ChangeLog
+2
-0
youtube_dl/extractor/vevo.py
youtube_dl/extractor/vevo.py
+17
-5
No files found.
ChangeLog
View file @
9d0c08a0
version <unreleased>
Extractors
* [vevo] Fix extraction for videos with the new streams/streamsV3 format
(#11719)
+ [njpwworld] Add new extractor (#11561)
...
...
youtube_dl/extractor/vevo.py
View file @
9d0c08a0
...
...
@@ -17,12 +17,12 @@ from ..utils import (
class
VevoBaseIE
(
InfoExtractor
):
def
_extract_json
(
self
,
webpage
,
video_id
,
item
):
def
_extract_json
(
self
,
webpage
,
video_id
):
return
self
.
_parse_json
(
self
.
_search_regex
(
r
'window\.__INITIAL_STORE__\s*=\s*({.+?});\s*</script>'
,
webpage
,
'initial store'
),
video_id
)
[
'default'
][
item
]
video_id
)
class
VevoIE
(
VevoBaseIE
):
...
...
@@ -139,6 +139,11 @@ class VevoIE(VevoBaseIE):
# no genres available
'url'
:
'http://www.vevo.com/watch/INS171400764'
,
'only_matching'
:
True
,
},
{
# Another case available only via the webpage; using streams/streamsV3 formats
# Geo-restricted to Netherlands/Germany
'url'
:
'http://www.vevo.com/watch/boostee/pop-corn-clip-officiel/FR1A91600909'
,
'only_matching'
:
True
,
}]
_VERSIONS
=
{
0
:
'youtube'
,
# only in AuthenticateVideo videoVersions
...
...
@@ -193,7 +198,14 @@ class VevoIE(VevoBaseIE):
# https://github.com/rg3/youtube-dl/issues/9366)
if
not
video_versions
:
webpage
=
self
.
_download_webpage
(
url
,
video_id
)
video_versions
=
self
.
_extract_json
(
webpage
,
video_id
,
'streams'
)[
video_id
][
0
]
json_data
=
self
.
_extract_json
(
webpage
,
video_id
)
if
'streams'
in
json_data
.
get
(
'default'
,
{}):
video_versions
=
json_data
[
'default'
][
'streams'
][
video_id
][
0
]
else
:
video_versions
=
[
value
for
key
,
value
in
json_data
[
'apollo'
][
'data'
].
items
()
if
key
.
startswith
(
'%s.streams'
%
video_id
)]
uploader
=
None
artist
=
None
...
...
@@ -207,7 +219,7 @@ class VevoIE(VevoBaseIE):
formats
=
[]
for
video_version
in
video_versions
:
version
=
self
.
_VERSIONS
.
get
(
video_version
[
'version'
]
)
version
=
self
.
_VERSIONS
.
get
(
video_version
.
get
(
'version'
),
'generic'
)
version_url
=
video_version
.
get
(
'url'
)
if
not
version_url
:
continue
...
...
@@ -339,7 +351,7 @@ class VevoPlaylistIE(VevoBaseIE):
if
video_id
:
return
self
.
url_result
(
'vevo:%s'
%
video_id
,
VevoIE
.
ie_key
())
playlists
=
self
.
_extract_json
(
webpage
,
playlist_id
,
'%ss'
%
playlist_kind
)
playlists
=
self
.
_extract_json
(
webpage
,
playlist_id
)[
'default'
][
'%ss'
%
playlist_kind
]
playlist
=
(
list
(
playlists
.
values
())[
0
]
if
playlist_kind
==
'playlist'
else
playlists
[
playlist_id
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment