完善说明,爱奇艺支持series命令,增加弹幕区间设定

This commit is contained in:
xhlove
2020-02-07 19:05:58 +08:00
parent 27de5ce4a3
commit 1c31057b9d
11 changed files with 115 additions and 36 deletions

View File

@@ -3,7 +3,7 @@
'''
# 作者: weimo
# 创建日期: 2020-01-04 19:17:44
# 上次编辑时间 : 2020-01-16 20:06:23
# 上次编辑时间 : 2020-02-07 18:17:48
# 一个人的命运啊,当然要靠自我奋斗,但是...
'''
import os
@@ -17,7 +17,7 @@ def write_one_video_subtitles(file_path, comments, args):
# 对于合集则每次都都得检查一次 也可以放在上一级 放在这里 考虑后面可能特殊指定字体的情况
font_path, font_style_name = check_font(args.font)
ass_head = get_ass_head(font_style_name, args.font_size)
get_xy_obj = SameHeight("那就写这一句作为初始化测试吧!", font_path=font_path, font_size=int(args.font_size))
get_xy_obj = SameHeight("那就写这一句作为初始化测试吧!", args.range, font_path=font_path, font_size=int(args.font_size))
subtitle = ASS(file_path, get_xy_obj, font=font_style_name)
comments = remove_same_danmu(comments)
for comment in comments:

View File

@@ -3,7 +3,7 @@
'''
# 作者: weimo
# 创建日期: 2020-01-04 19:14:43
# 上次编辑时间 : 2020-01-28 18:38:32
# 上次编辑时间 : 2020-02-07 17:36:24
# 一个人的命运啊,当然要靠自我奋斗,但是...
'''
import re
@@ -134,7 +134,7 @@ def get_year_range(aid, locale="zh_cn"):
year_end = int(data["latestVideo"]["period"][:4])
return list(range(year_start, year_end + 1))
def get_vinfo_by_tvid(tvid, locale="zh_cn"):
def get_vinfo_by_tvid(tvid, locale="zh_cn", isall=False):
api_url = "https://pcw-api.iqiyi.com/video/video/baseinfo/{}".format(tvid)
if locale != "zh_cn":
api_url += "?locale=" + locale
@@ -146,10 +146,33 @@ def get_vinfo_by_tvid(tvid, locale="zh_cn"):
data = json.loads(r)["data"]
if data.__class__ != dict:
return None
if isall:
aid = data.get("albumId")
if aid is None:
print("通过单集tvid获取合集aid失败将只下载单集的弹幕")
locale = check_video_area_by_tvid(tvid)
if locale is None:
locale = "zh_cn"
return get_vinfos(aid, locale=locale)
name = data["name"]
duration = data["durationSec"]
return [[name + "_" + str(duration), duration, tvid]]
def check_video_area_by_tvid(tvid):
api_url = "https://pcw-api.iqiyi.com/video/video/playervideoinfo?tvid={}".format(tvid)
try:
r = requests.get(api_url, headers=chrome, timeout=5).content.decode("utf-8")
except Exception as e:
print("check_video_area_by_tvid error info -->", e)
return None
data = json.loads(r)["data"]
intl_flag = data["operation_base"]["is_international"]
langs = [item["language"].lower() for item in data["operation_language_base"]]
locale = "zh_cn"
if intl_flag is False and "zh_tw" in langs:
locale = "zh_tw"
return locale
def get_vinfos_by_year(aid, years: list, cid=6, locale="zh_cn"):
api_url = "https://pcw-api.iqiyi.com/album/source/svlistinfo?cid={}&sourceid={}&timelist={}".format(cid, aid, ",".join([str(_) for _ in years.copy()]))
if locale != "zh_cn":
@@ -171,7 +194,7 @@ def get_vinfos_by_year(aid, years: list, cid=6, locale="zh_cn"):
vinfos.append([ep["shortTitle"] + "_" + str(sec), sec, ep["tvId"]])
return vinfos
def get_vinfos_by_url(url):
def get_vinfos_by_url(url, isall=False):
locale = check_url_locale(url)
patterns = [".+?/w_(\w+?).html", ".+?/v_(\w+?).html", ".+?/a_(\w+?).html", ".+?/lib/m_(\w+?).html"]
isw, isep, isas, isms = [re.match(pattern, url) for pattern in patterns]
@@ -204,7 +227,7 @@ def get_vinfos_by_url(url):
if isep or isw:
if tvid is None:
return
return get_vinfo_by_tvid(tvid, locale=locale)
return get_vinfo_by_tvid(tvid, locale=locale, isall=isall)
if isas or isms:
if aid is None: