diff --git a/CHANGELOG.md b/CHANGELOG.md index fbc454b..20ae3e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - 🔧同步yaml配置文件的更新到toml中。[@Kataick](https://github.com/Kataick) - 🔧NICO标题获取从BS4改为正则,开播后仍然重复请求的BUG的修复。[@KNaiFen](https://github.com/KNaiFen) - 🔧添加quickjs依赖。[@haha114514](https://github.com/haha114514) +- 💡新增NICO录播。[@KNaiFen](https://github.com/KNaiFen) - 💡增加NICO用户配置文件模板。[@KNaiFen](https://github.com/KNaiFen) - 💡增加Twitch的去广告开关(解决广告分段问题)[@KNaiFen](https://github.com/KNaiFen) - 💡增加Twitch弹幕录播、修复斗鱼、虎牙的弹幕录制BUG并增加报错提示,修改了XML文件的删除部分,修改了部分代码的协程的调用,优化断流时频繁重复请求。[@KNaiFen](https://github.com/KNaiFen) diff --git a/README.md b/README.md index 2d02431..e8a4be4 100644 --- a/README.md +++ b/README.md @@ -7,26 +7,31 @@ [discord-badge]: https://img.shields.io/discord/1015494098481852447.svg?logo=discord [discord-url]: https://discord.gg/shZmdxDFB7 -* 支持自动录制各大主流直播平台实时直播流,包括但不限于acfun,afreecaTV,哔哩哔哩,斗鱼,抖音,虎牙,网易CC,猫耳FM,Twitch,YY直播等,并于录制结束后上传到哔哩哔哩视频网站。 -* 支持YouTube,twitch直播回放列表自动搬运至b站,如链接https://www.twitch.tv/xxxx/videos?filter=archives&sort=time +* 支持自动录制各大主流直播平台实时直播流,包括但不限于AcFun,afreecaTV,哔哩哔哩,斗鱼,抖音,虎牙,网易CC,NICO,猫耳FM, +Twitch,YY直播等,并于录制结束后自动上传到哔哩哔哩视频网站。 +* 支持YouTube,twitch直播回放列表自动搬运至b站,如链接 https://www.twitch.tv/xxxx/videos?filter=archives&sort=time +* 支持录制哔哩哔哩,斗鱼,虎牙,Twitch平台的**直播弹幕**,生成B站标准格式的XML弹幕文件,可被常见的各种弹幕挂载程序使用处理 * 自动选择上传线路,保证国内外vps上传质量和速度 * 可分别控制下载与上传并发量 -* 支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速 +* ~~支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速~~ * 实验性功能: - - 防止录制花屏 + - 防止录制花屏(使用默认的stream-gears下载器就会有这个功能) - 启动时加入`--http`选项并访问localhost:19159可使用webUI (建议使用toml配置文件) -> 详细安装教程: -> * [快速上手视频](https://www.bilibili.com/video/BV1jB4y1p7TK/)教程 by [@milk](https://github.com/by123456by) -> * [Ubuntu](https://blog.waitsaber.org/archives/129) 、[CentOS](https://blog.waitsaber.org/archives/163) -、[Windows](https://blog.waitsaber.org/archives/169) 教程 -与 [常见问题](https://blog.waitsaber.org/archives/167) 解决方案 by [@waitsaber](https://github.com/waitsaber) - **更新日志**:[CHANGELOG.md](CHANGELOG.md) **文档地址**: + + +## 详细安装教程: +* [快速上手视频教程](https://www.bilibili.com/video/BV1jB4y1p7TK/) by [@milk](https://github.com/by123456by) +* [Ubuntu](https://blog.waitsaber.org/archives/129) 、[CentOS](https://blog.waitsaber.org/archives/163) +、[Windows](https://blog.waitsaber.org/archives/169) 教程 by [@waitsaber](https://github.com/waitsaber) +* [常见问题解决方案](https://blog.waitsaber.org/archives/167) by [@waitsaber](https://github.com/waitsaber) + + ## INSTALLATION -1. 创建配置文件 [**config.toml**](#最小配置文件示例) +1. 创建配置文件 **[config.toml](./public/config.toml)** (推荐从配置文件模板开始进行修改) ```toml # 以下为必填项 [streamers."1xx直播录像"] # 设置直播间1 @@ -56,38 +61,34 @@ $ biliup --http start # 指定配置文件路径 $ biliup --config ./config.yaml start ``` -从 v0.2.15 版本开始,配置文件支持 toml 格式,详见 [config.toml](https://github.com/biliup/biliup/blob/master/public/config.toml), -yaml配置文件完整内容可参照 [config.yaml](https://github.com/ForgQi/bilibiliupload/blob/master/public/config.yaml)。 +从 v0.2.15 版本开始,配置文件支持 toml 格式,详见 [config.toml](./public/config.toml), +yaml配置文件完整内容可参照 [config.yaml](./public/config.yaml)。 __FFmpeg__ 作为可选依赖。如果还有问题可以 [加群讨论](https://github.com/ForgQi/biliup/discussions/58#discussioncomment-2388776) 。 > 使用上传功能需要登录B站,通过 [命令行投稿工具](https://github.com/ForgQi/biliup-rs) 获取 cookies.json,并放入启动 biliup 的路径即可 > ARM平台用户,需要使用到stream-gears(默认下载器与上传器)进行下载和上传的,请参考此教程降级stream-gears版本。 https://github.com/biliup/biliup/discussions/407 +> Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。启动之后使用命令`ps -A | grep biliup` 查看进程biliup是否启动成功。 -Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。 -`ps -A | grep biliup` 查看进程是否启动成功。 ## Docker使用 🔨 ### 方式一 拉取镜像 -#### 从配置文件启动 +1. 从配置文件启动 ```bash vim /host/path/config.toml docker run -P --name biliup -v /host/path:/opt -d ghcr.io/biliup/caution:master ``` -#### 从配置文件启动,并启动web-ui +2. 从配置文件启动,并启动web-ui ```bash vim /host/path/config.toml docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution:latest --http --password yourpassword ``` -yourpassword为web-ui的密码,用户名为biliup - -#### 直接启动web-ui 自动生成配置文件 +> yourpassword为web-ui的密码,用户名为biliup +3. 直接启动web-ui 自动生成配置文件 ```bash docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution --http --password yourpassword ``` - - ### 方式二 手动构建镜像 ```bash cd biliup @@ -95,12 +96,17 @@ sudo docker build . -t biliup sudo docker run -P -d biliup ``` ### 进入容器 📦 +1. 查看容器列表,找到你要进入的容器的imageId +```bash +sudo docker ps +``` +2. 进入容器 ```bash -sudo docker ps (找到你的imageId) sudo docker exec -it imageId /bin/bash ``` -## 调试源码 + +## 从源码运行biliup * 下载源码: git clone https://github.com/ForgQi/bilibiliupload.git * 安装: `pip3 install -e .` * 启动: `python3 -m biliup` @@ -111,8 +117,10 @@ sudo docker exec -it imageId /bin/bash $ python3 -m build ``` * 调试 webUI: `python3 -m biliup --http --static-dir public` + + ## yaml配置文件示例 -可选项见完整配置文件, +可选项见[完整配置文件](./public/config.yaml), tid投稿分区见[Wiki](https://github.com/ForgQi/biliup/wiki) ```yaml streamers: @@ -121,6 +129,8 @@ streamers: - https://www.twitch.tv/xxx tags: biliup ``` + + ## EMBEDDING BILIUP 如果你不想使用完全自动托管的功能,而仅仅只是想嵌入biliup作为一个库来使用这里有两个例子可以作为参考 ### 上传 @@ -160,12 +170,16 @@ from biliup.downloader import download download('文件名', 'https://www.panda.tv/1150595', suffix='flv') ``` + + ## 使用建议 +### 1. VPS上传线路选择 国内VPS网络费用较高,建议使用国外VPS,根据机器的硬盘等资源设置合理并发量, 选择kodo线路较容易跑满带宽。 b站上传目前有两种模式,分别为bup和bupfetch模式。 ->* bup:国内常用模式,视频直接上传到b站投稿系统。 ->* bupfetch:目前见于国外网络环境,视频首先上传至第三方文件系统,上传结束后通知bilibili投稿系统,再由b站投稿系统从第三方系统拉取视频,以保证某些地区用户的上传体验。 +> bup:国内常用模式,视频直接上传到b站投稿系统。 +> +> bupfetch:目前见于国外网络环境,视频首先上传至第三方文件系统,上传结束后通知bilibili投稿系统,再由b站投稿系统从第三方系统拉取视频,以保证某些地区用户的上传体验。 bup模式支持的上传方式为upos,其线路有: * ws(网宿) @@ -178,19 +192,26 @@ bupfetch模式支持的上传方式及线路有: * ~~bos (百度)已失效~~ 国内基本选择upos模式的bda2线路。国外多为upos模式的ws和qn线路,也有bupfetch模式的kodo、gcs线路。bilibili采用客户端和服务器端线路探测相结合的方式,服务器会返回可选线路,客户端上传前会先发包测试选择一条延迟最低的线路,保证各个地区的上传质量。 -*** + +### 2. 登录方案 登录有两种方案: - * 操作浏览器模拟登录 - * 通过b站的OAuth2接口 +> 对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素,系统会上传分析你的拖动行为,模拟人操作轨迹,提供加速度、抖动等,如直接拖动到目标位置不能通过验证,提示:“拼图被怪物吃了”。滑动验证码系统会学习,需不断更新轨迹策略保证通过验证的成功率。\ +> OAuth2接口要提供key,需逆向分析各端 ->对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素,系统会上传分析你的拖动行为,模拟人操作轨迹,提供加速度、抖动等,如直接拖动到目标位置不能通过验证,提示:“拼图被怪物吃了”。滑动验证码系统会学习,需不断更新轨迹策略保证通过验证的成功率。\ ->OAuth2接口要提供key,需逆向分析各端 +### 3. 推荐biliup配置 +线程池限制并发数,减少磁盘占满的可能性。 +> 检测到下载情况卡死或者下载超时,biliup会重试三次保证可用性。代码更新后将在空闲时自动重启。 -线程池限制并发数,减少磁盘占满的可能性。检测下载情况卡死或者下载超时,重试三次保证可用性。代码更新后将在空闲时自动重启。 +### 4. 关于录制的XML弹幕文件如何使用 +使用方法有很多种: +- 使用 [DanmakuFactory](https://github.com/hihkm/DanmakuFactory) 将XML弹幕文件转化为ASS字幕文件,然后使用一般播放器外挂加载字幕 +- [AList](https://alist.nn.ci/zh/) 检测到同文件夹下的XML文件会自动挂载弹幕,实现带弹幕的录播效果 +- 使用 [弹弹play](https://www.dandanplay.com/) 可直接挂载XML弹幕文件观看 +## 自定义插件 下载整合了ykdl、youtube-dl、streamlink,不支持或者支持的不够好的网站可自行拓展。 下载和上传模块插件化,如果有上传或下载目前不支持平台的需求便于拓展。 @@ -211,10 +232,14 @@ def transcoding(data): python packages: PyChakra, quickjs applications: Gjs, CJS, QuickJS, JavaScriptCore, Node.js, etc.''' -开机自启可参照以下模板创建systemd unit: -创建service文件: -> $ nano ~/.config/systemd/user/biliupd.service +## LINUX下配置开机自启 +开机自启可参照以下模板创建systemd unit: +1. 创建service文件: +```shell +$ nano ~/.config/systemd/user/biliupd.service +``` +2. service文件的内容 ``` [Unit] Description=Biliup Startup @@ -232,23 +257,25 @@ ExecStop=/usr/bin/biliup stop [Install] WantedBy=default.target ``` -启用service并启动: +3. 启用service并启动: ```shell $ systemctl --user enable biliupd $ systemctl --user start biliupd ``` -## Deprecated -* ~~selenium操作浏览器上传两种方式~~(详见bili_chromeup.py) -* ~~Windows图形界面版在release中下载AutoTool.msi进行安装~~[AutoTool.msi](https://github.com/ForgQi/bilibiliupload/releases/tag/v0.1.0) -* 相关配置示例在config.yaml文件中,如直播间地址,b站账号密码\ -由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件, -且使用引号括起yaml中cookie的数字代表其为字符串 ->关于B站为什么不能多p上传\ +## Deprecated +* ~~selenium操作浏览器上传两种方式(详见bili_chromeup.py)~~ +* ~~Windows图形界面版在release中下载AutoTool.msi进行安装~~[~~AutoTool.msi~~](https://github.com/ForgQi/bilibiliupload/releases/tag/v0.1.0) +* 相关配置示例在[config.yaml](./public/config.yaml)、[config.toml](./public/config.toml)文件中,如直播间地址,b站账号密码等等 +* 由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件,且使用引号括起yaml中cookie的数字代表其为字符串 + +> 关于B站为什么不能多p上传\ 目前bilibili网页端是根据用户权重来限制分p数量的,权重不够的用户切换到客户端的提交接口即可解除这一限制。 ->用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量 +> 用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量 + ## Credits * Thanks `ykdl, youtube-dl, streamlink` provides downloader. ->GUI:[B站投稿客户端 biliup-app](https://github.com/ForgQi/Caution) +* Thanks `THMonster/danmaku`. +> GUI:[B站投稿客户端 biliup-app](https://github.com/ForgQi/Caution) diff --git a/biliup/engine/download.py b/biliup/engine/download.py index 19c9f12..e88a12f 100644 --- a/biliup/engine/download.py +++ b/biliup/engine/download.py @@ -47,7 +47,7 @@ class DownloadBase: ] if config.get('segment_time'): self.default_output_args += \ - ['-segment_time', f"{config.get('segment_time', '00:50:00')}"] + ['-to', f"{config.get('segment_time', '00:50:00')}"] else: self.default_output_args += \ ['-fs', f"{config.get('file_size', '2621440000')}"] @@ -131,12 +131,13 @@ class DownloadBase: args = ['ffmpeg', '-y', *default_input_args, '-i', self.raw_stream_url, *self.default_output_args, *self.opt_args, '-c', 'copy', '-f', self.suffix] - if config.get('segment_time'): - args += ['-f', 'segment', - f'{filename} part-%03d.{self.suffix}'] - else: - args += [ - f'{filename}.{self.suffix}.part'] + # if config.get('segment_time'): + # args += ['-f', 'segment', + # f'{filename} part-%03d.{self.suffix}'] + # else: + # args += [ + # f'{filename}.{self.suffix}.part'] + args += [f'{filename}.{self.suffix}.part'] proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) try: @@ -173,6 +174,13 @@ class DownloadBase: # delay = config.get('delay') if (config.get('delay') > 5) else 5 delay = 30 # 有人的delay会设置的过长,遂写死为30 while i < 30: + # 限制每次拉流的时间间隔必须大于delay,防止主播还没推流的时候疯狂重复请求 + thistime_download = time.time() + interval = thistime_download - lasttime_download + if interval < delay: + logger.info(f"频繁请求:等待{format(delay - interval, '.2f')}秒后再次请求直播流") + time.sleep(delay - interval) + try: thistime_download = time.time() ret = self.run() @@ -180,15 +188,8 @@ class DownloadBase: logger.exception("Uncaught exception:") continue finally: - self.close() - - # 限制每次拉流的时间间隔必须大于delay,防止主播还没推流的时候疯狂重复请求 - interval = thistime_download - lasttime_download - if interval < delay: - logger.info(f"频繁请求:等待{interval}秒后再次请求直播流") - time.sleep(delay - interval) lasttime_download = thistime_download - continue + self.close() if ret is False: if config.get('delay'): diff --git a/biliup/plugins/Danmaku/__init__.py b/biliup/plugins/Danmaku/__init__.py index 0116364..a7efef9 100644 --- a/biliup/plugins/Danmaku/__init__.py +++ b/biliup/plugins/Danmaku/__init__.py @@ -66,13 +66,13 @@ class DanmakuClient: else: await self.__ws.send_bytes(reg_data) except Exception as Error: - logger.debug(f"init_ws:捕获到异常:{Error}") + logger.debug(f"init_ws:{self.__filename}:捕获到异常:{Error}") if not os.path.exists(self.__filename): async with aiofiles.open(self.__filename, mode='w') as f: await f.write("\n" - "\n" - "" - ) + "\n" + "" + ) async def heartbeats(self): while not self.__stop and self.__site.heartbeat: @@ -83,12 +83,12 @@ class DanmakuClient: else: await self.__ws.send_bytes(self.__site.heartbeat) except Exception as Error: - logger.debug(f"heartbeats:捕获到异常:{Error}") + logger.debug(f"heartbeats:{self.__filename}:捕获到异常:{Error}") if not self.__stop: logger.info(f'触发弹幕重连') await self.init_ws() await asyncio.sleep(3) - + await self.__hs.close() async def fetch_danmaku(self): @@ -106,7 +106,7 @@ class DanmakuClient: for m in ms: await self.__dm_queue.put(m) except Exception as Error: - logger.debug(f"fetch_danmaku:弹幕处理异常:{Error}") + logger.debug(f"fetch_danmaku:{self.__filename}:弹幕处理异常:{Error}") await asyncio.sleep(10) async def print_danmaku(self): @@ -139,8 +139,8 @@ class DanmakuClient: d.set('p', f"{msg_time},1,25,{color},0,0,0,0") d.text = m["content"] except Exception as Error: - logger.debug(f"print_danmaku:弹幕处理异常:{Error}") - + logger.debug(f"print_danmaku:{self.__filename}:弹幕处理异常:{Error}") + try: if m['msg_type'] == 'danmaku' and msg_i >= 5: # loop = asyncio.get_running_loop() @@ -150,8 +150,7 @@ class DanmakuClient: else: msg_i = msg_i + 1 except Exception as Error: - logger.debug(f"print_danmaku:弹幕写入异常:{Error}") - + logger.debug(f"print_danmaku:{self.__filename}:弹幕写入异常:{Error}") async def start(self): self.__dm_queue = asyncio.Queue() @@ -173,4 +172,4 @@ class DanmakuClient: # 虎牙直播:https://www.huya.com/lpl -# 斗鱼直播:https://www.douyu.com/9999 \ No newline at end of file +# 斗鱼直播:https://www.douyu.com/9999 diff --git a/public/config.toml b/public/config.toml index 1bfc067..7e2ab7c 100644 --- a/public/config.toml +++ b/public/config.toml @@ -1,5 +1,4 @@ -#########全局录播与上传设置######### - +######### 全局录播与上传设置 ######### #------录制与下载------# ### 选择全局默认的下载插件,默认为stream-gears。可选: ### 1.streamlink(streamlink配合ffmpeg混合下载模式,适合用于下载hls_fmp4与hls_ts流,因为streamlink支持多线程拉取)。 @@ -13,7 +12,6 @@ file_size = 2621440000 #segment_time = "00:50:00" # 小于此大小的视频文件将会被过滤删除,单位MB filtering_threshold = 20 - # 自定义录播文件名模板, 支持变量 {streamer}:你在配置里设置的直播间名 %Y-%m-%d %H_%M_%S:创建文件的时间, {title}:当场直播间标题 # 如果上传文件,文件名必须包含设定的模板名。其次,如果没有定义时间,文件分片可能会互相覆盖,所以推荐设置时间来避免分段文件名重复。 #filename_prefix = "{streamer}%Y-%m-%d %H_%M_%S{title}" @@ -44,7 +42,7 @@ check_sourcecode = 15 -#########各平台录播设置######### +######### 各平台录播设置 ######### ### 使用直播间封面作为投稿封面。此封面优先级低于单个主播指定的自定义封面。(目前仅支持bilibili。直播封面将会保存于cover文件夹下,请自行定期删除) #use_live_cover = true @@ -111,7 +109,7 @@ check_sourcecode = 15 ### 限制单个视频的最大大小。 ### 注意:此参数优先级高于分辨率设置,并且不包括音频部分的大小,仅仅只是视频部分的大小。 ### 如果某个视频实在没有低于此大小的分辨率版本,将会选择最低画质的版本下载。 -#youtube_max_videosize = "5G" ###参考格式,例如100M,5G,10G。 +#youtube_max_videosize = "5G" ### 参考格式,例如100M,5G,10G。 ### YouTube转载视频自动获取视频封面并用于作投稿封面。获取webp封面之后自动转换格式为jpg,并保存在cover/youtube文件夹中,请注意定期清理。 #use_youtube_cover = true ### 仅下载该日期之后的视频 @@ -122,8 +120,7 @@ check_sourcecode = 15 ### 开启之后上面关于YOUTUBE的选项全部无效【我也不知道这个功能有什么屌用】 #use_new_ytb_downloader = false - -#------Twitch------# +#------Twitch直播录制------# ### 录制Twitch弹幕,默认关闭【只有下载器为FFMPEG时才有效】 #twitch_danmaku = false ### 去除Twitch广告功能,默认开启【只有下载器为FFMPEG时才有效】 @@ -133,8 +130,7 @@ check_sourcecode = 15 -#########录制主播设置######### - +######### 录制主播设置 ######### # 最小配置示例 [streamers."星际2Stats拔本神族天梯第一视角"] url = ["https://www.twitch.tv/kimdaeyeob3"] @@ -179,6 +175,8 @@ format = "mp4" # 视频保存格式。如需使用mp4格式,必须切换downlo #opt_args = [ "-ss", "00:00:16" # 跳过开始的16秒 ] + +################### 用户cookie ################### ### 在填了cookies的情况下优先使用cookies上传,如需使用用户名密码上传请注释掉cookies [user] #------哔哩哔哩------# @@ -187,18 +185,20 @@ format = "mp4" # 视频保存格式。如需使用mp4格式,必须切换downlo ### 也可使用biliup-rs来获取以下项目. #bili_cookie = 'SESSDATA=none;bili_jct=none;DedeUserID__ckMd5=none;DedeUserID=none;access_token=none;' ### 重要!!! -###是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。 -###在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效 +### 是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。 +### 在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效 #customAPI_use_cookie = false #------抖音------# # 如需要录制抖音请在此填入cookie需要__ac_nonce与__ac_signature的值 douyin_cookie = '__ac_nonce=123456; __ac_signature=123456;' -#------Twitch------# -# 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用),该cookie有过期风险,cookie过期后会导致无法获取到直播流 -# twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1] -# twitch_cookie需要在downloader= "ffmpeg"时候才会生效 +#------Twitch直播录制------# +### 只在录制twitch直播时才生效 +### 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用) +### 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期) +### twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1] +### twitch_cookie需要在downloader= "ffmpeg"时候才会生效 #twitch_cookie = 'asdiouo2h987r23hf2893fh923y7' #------YouTube------# @@ -222,7 +222,7 @@ douyin_cookie = '__ac_nonce=123456; __ac_signature=123456;' -# 日志输出配置 +########### 日志输出配置 ########### [LOGGING.formatters.verbose] format = "%(asctime)s %(filename)s[line:%(lineno)d](Pid:%(process)d Tname:%(threadName)s) %(levelname)s %(message)s" datefmt = "%Y-%m-%d %H:%M:%S" diff --git a/public/config.yaml b/public/config.yaml index 0a2933e..06ac952 100644 --- a/public/config.yaml +++ b/public/config.yaml @@ -1,5 +1,4 @@ -#########全局录播与上传设置######### - +######### 全局录播与上传设置 ######### #------录制与下载------# ### 选择全局默认的下载插件,默认为stream-gears。可选: ### 1.streamlink(streamlink配合ffmpeg混合下载模式,适合用于下载hls_fmp4与hls_ts流,因为streamlink支持多线程拉取)。 @@ -13,7 +12,6 @@ file_size: 2621440000 #segment_time: '00:50:00' ### 小于此大小的视频文件将会被过滤删除,单位MB filtering_threshold: 20 - ### 自定义录播文件名模板, 支持变量 {streamer}:你在配置里设置的直播间名 %Y-%m-%d %H_%M_%S:创建文件的时间, {title}:当场直播间标题 ### 如果上传文件,文件名必须包含设定的模板名。其次,如果没有定义时间,文件分片可能会互相覆盖,所以推荐设置时间来避免分段文件名重复。 #filename_prefix: '{streamer}%Y-%m-%d %H_%M_%S{title}' @@ -42,7 +40,9 @@ pool2_size: 5 ### 检测源码文件变化间隔,单位:秒,检测源码到变化后,程序会在空闲时自动重启 check_sourcecode: 15 -#########各平台录播设置######### + + +######### 各平台录播设置 ######### ### 使用直播间封面作为投稿封面。此封面优先级低于单个主播指定的自定义封面。(直播封面将会保存于cover文件夹下,请自行定期删除) #use_live_cover: true @@ -118,9 +118,9 @@ check_sourcecode: 15 #youtube_before_date: '20230501' ### YouTube的Streamlink下载器模式,开启之后会调用Streamlink获取直播流并且使用FFMPEG下载,默认关闭【仅当下载器是FFMPEG时才有效】 ### 开启之后上面关于YOUTUBE的选项全部无效【我也不知道这个功能有什么屌用】 -use_new_ytb_downloader: false +#use_new_ytb_downloader: false -#------Twitch------# +#------Twitch直播录制------# ### 录制Twitch弹幕,默认关闭【只有下载器为FFMPEG时才有效】 #twitch_danmaku: false ### 去除Twitch广告功能,默认开启【只有下载器为FFMPEG时才有效】 @@ -130,7 +130,7 @@ use_new_ytb_downloader: false -#########录制主播设置######### +######### 录制主播设置 ######### streamers: ### 最小配置示例 星际2Stats拔本神族天梯第一视角: @@ -172,6 +172,9 @@ streamers: # - '-ss' # - '00:00:16' # 跳过开始的16秒 + + +################### 用户cookie ################### ### 在填了cookies的情况下优先使用cookies上传,如需使用用户名密码上传请注释掉cookies #user: #------哔哩哔哩------# @@ -179,19 +182,20 @@ streamers: ### 参照https://github.com/BililiveRecorder/BililiveRecorder/issues/263. 请至少填入以下项目. #bili_cookie: 'SESSDATA=none; bili_jct=none;DedeUserID__ckMd5=none;DedeUserID=123;access_token=none;' ### 重要!!! - ###是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。 - ###在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效 + ### 是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。 + ### 在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效 #customAPI_use_cookie : False #------抖音------# ### 如需要录制抖音请在此填入cookie需要__ac_nonce与__ac_signature的值 #douyin_cookie: '__ac_nonce=123456; __ac_signature=123456;' - #------Twitch------# + #------Twitch直播录制------# + ### 只在录制twitch直播时才生效 ### 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用) - # 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期) - # twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1] - # twitch_cookie需要在downloader= "ffmpeg"时候才会生效 + ### 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期) + ### twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1] + ### twitch_cookie需要在downloader= "ffmpeg"时候才会生效 #twitch_cookie: 'aisjdoiuasdoihansdoh3ooi209' #------YouTube------# @@ -215,8 +219,7 @@ streamers: -#########日志输出配置######### - +######### 日志输出配置 ######### LOGGING: formatters: verbose: