Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XianxinMao
Yt Dlp
提交
5dcfd250
Y
Yt Dlp
项目概览
XianxinMao
/
Yt Dlp
12 个月 前同步成功
通知
27
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
Yt Dlp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5dcfd250
编写于
11月 01, 2020
作者:
E
exwm
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[vlive] add: support video post urls
上级
0536e60b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
11 deletion
+30
-11
youtube_dlc/extractor/vlive.py
youtube_dlc/extractor/vlive.py
+30
-11
未找到文件。
youtube_dlc/extractor/vlive.py
浏览文件 @
5dcfd250
...
...
@@ -18,10 +18,10 @@
class
VLiveIE
(
NaverBaseIE
):
IE_NAME
=
'vlive'
_VALID_URL
=
r
'https?://(?:(?:www|m)\.)?vlive\.tv/
video/(?P<id>
[0-9]+)'
_VALID_URL
=
r
'https?://(?:(?:www|m)\.)?vlive\.tv/
(?:video|post)/(?P<id>(?:\d-)?
[0-9]+)'
_NETRC_MACHINE
=
'vlive'
_TESTS
=
[{
'url'
:
'http://www.vlive.tv/video/1326'
,
'url'
:
'http
s
://www.vlive.tv/video/1326'
,
'md5'
:
'cc7314812855ce56de70a06a27314983'
,
'info_dict'
:
{
'id'
:
'1326'
,
...
...
@@ -31,8 +31,21 @@ class VLiveIE(NaverBaseIE):
'view_count'
:
int
,
'uploader_id'
:
'muploader_a'
,
},
},
{
'url'
:
'http://www.vlive.tv/video/16937'
,
},
{
'url'
:
'https://vlive.tv/post/1-18244258'
,
'md5'
:
'cc7314812855ce56de70a06a27314983'
,
'info_dict'
:
{
'id'
:
'1326'
,
'ext'
:
'mp4'
,
'title'
:
"[V LIVE] Girl's Day's Broadcast"
,
'creator'
:
"Girl's Day"
,
'view_count'
:
int
,
'uploader_id'
:
'muploader_a'
,
},
},
{
'url'
:
'https://www.vlive.tv/video/16937'
,
'info_dict'
:
{
'id'
:
'16937'
,
'ext'
:
'mp4'
,
...
...
@@ -95,24 +108,30 @@ def is_logged_in():
raise
ExtractorError
(
'Unable to log in'
,
expected
=
True
)
def
_real_extract
(
self
,
url
):
video_id
=
self
.
_match_id
(
url
)
webpage
=
self
.
_download_webpage
(
url
,
video_id
)
# url may match on a post or a video url with a post_id potentially matching a video_id
working_id
=
self
.
_match_id
(
url
)
webpage
=
self
.
_download_webpage
(
url
,
working_id
)
PARAMS_RE
=
r
'window\.__PRELOADED_STATE__\s*=\s*({.*});?\s*</script>'
PARAMS_FIELD
=
'params'
params
=
self
.
_search_regex
(
PARAMS_RE
,
webpage
,
PARAMS_FIELD
,
default
=
''
,
flags
=
re
.
DOTALL
)
params
=
self
.
_parse_json
(
params
,
video
_id
,
fatal
=
False
)
params
=
self
.
_parse_json
(
params
,
working
_id
,
fatal
=
False
)
video_params
=
params
[
"postDetail"
][
"post"
].
get
(
"officialVideo"
)
video_params
=
try_get
(
params
,
lambda
x
:
x
[
"postDetail"
][
"post"
][
"officialVideo"
]
)
if
video_params
is
None
:
raise
ExtractorError
(
'Invalid key: Failed to extract video parameters.'
)
if
'post'
in
url
:
raise
ExtractorError
(
'Url does not appear to be a video post.'
)
else
:
raise
ExtractorError
(
'Failed to extract video parameters.'
)
video_id
=
working_id
if
'video'
in
url
else
str
(
video_params
[
"videoSeq"
])
long_video_id
=
video_params
[
"vodId"
]
video_type
=
video_params
[
"type"
]
KEY_ENDPOINT
=
'https://www.vlive.tv/globalv-web/vam-web/video/v1.0/vod/%s/inkey'
%
video_id
key_json
=
self
.
_download_json
(
KEY_ENDPOINT
,
video_id
,
VOD_KEY_ENDPOINT
=
'https://www.vlive.tv/globalv-web/vam-web/video/v1.0/vod/%s/inkey'
%
video_id
key_json
=
self
.
_download_json
(
VOD_KEY_ENDPOINT
,
video_id
,
headers
=
{
"referer"
:
"https://www.vlive.tv"
})
key
=
key_json
[
"inkey"
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录