Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XianxinMao
Yt Dlp
提交
1e79316e
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,发现更多精彩内容 >>
未验证
提交
1e79316e
编写于
6月 26, 2021
作者:
L
LE
提交者:
GitHub
6月 26, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TBS] Support livestreams (#448)
Authored by: llacb47
上级
45261e06
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
5 deletion
+9
-5
yt_dlp/extractor/tbs.py
yt_dlp/extractor/tbs.py
+6
-3
yt_dlp/extractor/turner.py
yt_dlp/extractor/turner.py
+3
-2
未找到文件。
yt_dlp/extractor/tbs.py
浏览文件 @
1e79316e
...
...
@@ -16,7 +16,7 @@
class
TBSIE
(
TurnerBaseIE
):
_VALID_URL
=
r
'https?://(?:www\.)?(?P<site>tbs|tntdrama)\.com(?P<path>/(?:movies|shows/[^/]+/(?:clips|season-\d+/episode-\d+))/(?P<id>[^/?#]+))'
_VALID_URL
=
r
'https?://(?:www\.)?(?P<site>tbs|tntdrama)\.com(?P<path>/(?:movies|
watchtnt|
shows/[^/]+/(?:clips|season-\d+/episode-\d+))/(?P<id>[^/?#]+))'
_TESTS
=
[{
'url'
:
'http://www.tntdrama.com/shows/the-alienist/clips/monster'
,
'info_dict'
:
{
...
...
@@ -45,7 +45,8 @@ def _real_extract(self, url):
drupal_settings
=
self
.
_parse_json
(
self
.
_search_regex
(
r
'<script[^>]+?data-drupal-selector="drupal-settings-json"[^>]*?>({.+?})</script>'
,
webpage
,
'drupal setting'
),
display_id
)
video_data
=
next
(
v
for
v
in
drupal_settings
[
'turner_playlist'
]
if
v
.
get
(
'url'
)
==
path
)
isLive
=
'watchtnt'
in
path
video_data
=
next
(
v
for
v
in
drupal_settings
[
'turner_playlist'
]
if
isLive
or
v
.
get
(
'url'
)
==
path
)
media_id
=
video_data
[
'mediaID'
]
title
=
video_data
[
'title'
]
...
...
@@ -56,7 +57,8 @@ def _real_extract(self, url):
media_id
,
tokenizer_query
,
{
'url'
:
url
,
'site_name'
:
site
[:
3
].
upper
(),
'auth_required'
:
video_data
.
get
(
'authRequired'
)
==
'1'
,
'auth_required'
:
video_data
.
get
(
'authRequired'
)
==
'1'
or
isLive
,
'is_live'
:
isLive
})
thumbnails
=
[]
...
...
@@ -85,5 +87,6 @@ def _real_extract(self, url):
'season_number'
:
int_or_none
(
video_data
.
get
(
'season'
)),
'episode_number'
:
int_or_none
(
video_data
.
get
(
'episode'
)),
'thumbnails'
:
thumbnails
,
'is_live'
:
isLive
})
return
info
yt_dlp/extractor/turner.py
浏览文件 @
1e79316e
...
...
@@ -221,6 +221,7 @@ def _extract_cvp_info(self, data_src, video_id, path_data={}, ap_data={}, fatal=
}
def
_extract_ngtv_info
(
self
,
media_id
,
tokenizer_query
,
ap_data
=
None
):
is_live
=
ap_data
.
get
(
'is_live'
)
streams_data
=
self
.
_download_json
(
'http://medium.ngtv.io/media/%s/tv'
%
media_id
,
media_id
)[
'media'
][
'tv'
]
...
...
@@ -237,11 +238,11 @@ def _extract_ngtv_info(self, media_id, tokenizer_query, ap_data=None):
'http://token.ngtv.io/token/token_spe'
,
m3u8_url
,
media_id
,
ap_data
or
{},
tokenizer_query
)
formats
.
extend
(
self
.
_extract_m3u8_formats
(
m3u8_url
,
media_id
,
'mp4'
,
m3u8_id
=
'hls'
,
fatal
=
False
))
m3u8_url
,
media_id
,
'mp4'
,
m3u8_id
=
'hls'
,
live
=
is_live
,
fatal
=
False
))
duration
=
float_or_none
(
stream_data
.
get
(
'totalRuntime'
))
if
not
chapters
:
if
not
chapters
and
not
is_live
:
for
chapter
in
stream_data
.
get
(
'contentSegments'
,
[]):
start_time
=
float_or_none
(
chapter
.
get
(
'start'
))
chapter_duration
=
float_or_none
(
chapter
.
get
(
'duration'
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录