BGmi 是一个用于追番的命令行程序。
bgmi completion zsh/bash
生成mikan_url
配置,用于配置蜜柑计划镜像站proxy
设置transmission.rpc_url
重命名为 transmission.rpc_host
global_include_keywords
,用于设置全局包含关键词save_path_map
,用于设置不同动画的下载路径
使用 pipx 安装(推荐):
pipx install bgmi
pip install bgmi
git clone https://github.com/BGmi/BGmi cd BGmi git checkout master python -m pip install -U pip pip install .
BGmi
bgmi install
pipx upgrade bgmi bgmi upgrade
pip install bgmi -U bgmi upgrade
升级后请确保运行 bgmi upgrade
参见 BGmi/bgmi-docker-all-in-one
查看可用的命令
bgmi --help
--help
选项同样适用于所有的子命令,本文档仅介绍了一些基础用法。
bgmi completion bash > ~/.bash_completion.d/bgmi
bgmi completion zsh > .oh-my-zsh/completions/_bgmi
我不使用其他的 zsh 插件管理器,具体的安装方法请查询你使用的插件管理器文档
BGmi提供两种方式配置BGmi的各项运行参数,分别为配置文件与环境变量。
bgmi的配置文件位于${BGMI_PATH}/config.toml
,在未设置BGMI_PATH
环境变量时,${BGMI_PATH}
默认为~/.bgmi/
。
查看当前BGmi
设置:
bgmi config # 查看当前各项设置默认值。
data_source = "bangumi_moe" # 番剧数据源,!!! 请不要手动修改此选项 !!! download_delegate = "aria2-rpc" # 番剧下载工具 (aria2-rpc, transmission-rpc, deluge-rpc, qbittorrent-webapi) tmp_path = "tmp/tmp" # 临时目录 save_path = "tmp/bangumi" # 下载番剧保存地址 max_path = 3 # 抓取数据时每个番剧最大抓取页数 bangumi_moe_url = "https://bangumi.moe" share_dmhy_url = "https://share.dmhy.org" mikan_url = "https://mikanani.me" mikan_username = "" # 蜜柑计划的用户名 mikan_password = "" # 蜜柑计划的密码 enable_global_filters = true global_filters = [ "Leopard-Raws", "hevc", "x265", "c-a Raws", "U3-Web", ] proxy = '' # http代理示例: http://127.0.0.1:1080 [save_path_map] # 针对每部番剧设置下载路径 '致不灭的你 第二季' = '/home/trim21/downloads/bangumi/致不灭的你/s2/' # 如果使用绝对路径,可能导致web-ui无法正确显示视频文件。 '致不灭的你 第三季' = './致不灭的你/s3/' # 以save_path为基础路径的相对路径 [http] admin_token = "dYMj-Z4bDRoQfd3x" # web ui的密码 danmaku_api_url = "" serve_static_files = false [aria2] rpc_url = "http://localhost:6800/rpc" # aria2c RPC URL (不是jsonrpc URL, 如果你的aria2c运行在localhost:6800, 对应的链接为`http://localhost:6800/rpc`) rpc_token = "token:" # aria2c RPC token (如果没有设置token, 留空或者设置为`token:`) [transmission] rpc_host = "127.0.0.1" rpc_port = 9091 rpc_username = "your_username" rpc_password = "your_password" rpc_path = "/transmission/rpc" # transmission http rpc的请求路径 [qbittorrent] rpc_host = "127.0.0.1" rpc_port = 8080 rpc_username = "admin" rpc_password = "adminadmin" category = "" [deluge] rpc_url = "http://127.0.0.1:8112/json" rpc_password = "deluge"
当BGmi的配置文件还未初始化时,各项运行参数可由环境变量进行配置
环境变量以BGMI_
开头,全大写命名,且各级配置以_
进行分割,如:
BGMI_DATA_SOURCE=bangumi_moe # 对应配置文件中的data_source = "bangumi_moe"
BGMI_HTTP_ADMIN_TOKEN=dYMj-Z4bDRoQfd3x # 对应配置文件[http]分段中的admin_token = "dYMj-Z4bDRoQfd3x"
...
环境变量暂不支持配置以下项目
enable_global_include_keywords
enable_global_filters
global_include_keywords
global_filters
[save_path_map]
注: 当配置文件生成完毕后,运行配置将会以配置文件为准,环境变量仅用于生成第一份配置文件。
使用bgmi config set ...keys --value '...'
命令可以修改配置。
如:
bgmi config set http admin_token --value 'my super secret token'
或者
bgmi config set max_path --value '3'
不能用来修改复杂配置,如global_filters
,请手动修改配置文件。
**更换数据源会清空番剧数据库,但是bgmi script不受影响。**之前下载的视频文件不会删除,但是不会在前端显示
如果更换的源为mikan_project
,请先配置MIKAN_USERNAME
和MIKAN_PASSWORD
,其它源不受影响
bgmi source mikan_project
切 换数据源必须使用bgmi source命令,不能手动修改配置文件。手动修改配置文件会导致bgmi报错
修改配置文件和对应的配置项
download_delegate = "aria2-rpc" # 下载代理
内置可用的选项包括aria2-rpc
、transmission-rpc
、qbittorrent-webapi
以及deluge-rpc
。
bgmi cal
订阅番剧:
bgmi add "进击的巨人 第三季" "刃牙" "哆啦A梦" bgmi add "高分少女" --episode 0
添加番剧的同时设置下载路径:
bgmi add "高分少女" --episode 0 --save-path './高分少女/S1/'
取消订阅:
bgmi delete "Re:CREATORS"
更新番剧列表并下载番剧:
bgmi update --download # 更新全部 bgmi update "从零开始的魔法书" --download
设置筛选条件:
bgmi list # 列出当前订阅的番剧 bgmi fetch "Re:CREATORS" # include和exclude会忽略大小写。`720p`和`720P`效果相同 bgmi filter "Re:CREATORS" --subtitle "DHR動研字幕組,豌豆字幕组" --include 720P --exclude BIG5 bgmi fetch "Re:CREATORS" # 删除subtitle,include和exclude,添加正则匹配 bgmi filter "Re:CREATORS" --subtitle "" --include "" --exclude "" --regex "..." bgmi filter "Re:CREATORS" --regex "(DHR動研字幕組|豌豆字幕组).*(720P)" bgmi fetch "Re:CREATORS"
默认不启用全局包含关键词,可以设置 enable_global_include_keywords = true
启用此功能。
enable_global_include_keywords = true global_include_keywords = ['1080']
有一些预定义的全局过滤关键词,默认会排除标题包含以下关键词的种子。
可以使用 enable_global_filters = false
禁用全局关键词过滤,
enable_global_filters = true global_filters = [ "Leopard-Raws", "hevc", "x265", "c-a Raws", "U3-Web", ]
最后使用bgmi fetch
查看筛选结果。
搜索番剧并下载:
bgmi search '为美好的世界献上祝福!' --regex-filter '.*动漫国字幕组.*为美好的世界献上祝福!].*720P.*'
使用--min-episode
和--max-episode
根据集数筛选下载结果
bgmi search 海贼王 --min-episode 800 --max-episode 820 # 下载 bgmi search 海贼王 --min-episode 800 --max-episode 820 --download
bgmi search
命令默认不显示重复集数,如需显示重复集数以便筛选,在命令后添加--dupe
显示所有搜索结果
手动修改最近下载的剧集
bgmi list bgmi mark "Re:CREATORS" 1
bgmi_http
1.首先下载所有更新中番剧的封面
bgmi cal --download-cover
2.根据是否使用 nginx,设置serve_static_files
(使用 nginx 时保持默认设置false
,不使用时设为true
)
3.下载前端静态文件(可能在安装时已经下载过):
bgmi install
4.在8888
端口启动 BGmi HTTP 服务器:
bgmi_http --port=8888 --address=0.0.0.0
bgmi_http
参照上述步骤启动服务器,然后访问http://localhost:8888/。
可以让BGmi
帮助生成相应的 nginx 配置文件
bgmi gen nginx.conf --server-name bgmi.whatever.com
也可以手动编写 nginx 配置,以满足更多需求(如启用 https),以下是一个示例
server { listen 80; server_name bgmi; autoindex on; charset utf-8; location /bangumi { # ~/.bgmi/bangumi # alias到你的`SAVE_PATH` 注意以/结尾 alias /path/to/bangumi/; } location /api { proxy_pass http://127.0.0.1:8888; } location /resource { proxy_pass http://127.0.0.1:8888; } location / { # alias到你的`BGMI_PATH/front_static/`注意以/结尾 alias /path/to/front_static/; } }
也可以添加 aria2c 前端等,具体方法网上有很多,此处不再赘述。
macOS launchctl 服务控制器
参考 issue #77自行设置
BGmi 使用DPlayer
作为前端播放器
如需添加弹幕支持,可在DPlayer#related-projects中选择一个后端自行搭建,或使用DPlayer
提供的现成接口https://api.prprpr.me/dplayer/
然后修改配置文件:
[bgmi_http] danmaku_api_url = "https://api.prprpr.me/dplayer/" # 此API由dplayer官方提供
设置你的bgmi_http
,享受弹幕支持吧。
日志文件位于{BGMI_PATH}/tmp/
由于pip的限制,你需要手动清理BGmi
在~/.bgmi
生成的文件
同样,BGmi
添加到你系统的定时任务也不会被自动删除,请手动删除。
*nix:
请手动清理crontab
Windows:
schtasks /Delete /TN 'bgmi updater'
你可以编写一个BGmi脚本
来解析你自己想看的番剧或美剧。BGmi会加载你的脚本,将其视为一个番剧来处理。你所需要做的只 是继承ScriptBase
类,然后实现特定的方法,再将你的脚本文件放到BGMI_PATH/script
文件夹内。
get_download_url()
返回一个dict
,以对应集数为键,对应的下载链接为值
{ 1: 'http://example.com/Bangumi/1/1.mp4', 2: 'http://example.com/Bangumi/1/2.torrent', 3: 'http://example.com/Bangumi/1/3.mp4' }
你可以在下载完成前或下载完成后执行一些操作,比如移动文件、重命名文件等。将你的钩子文件放到BGMI_PATH/hooks
文件夹内即可。
from loguru import logger from bgmi.script import HookBase # 只需要继承HookBase类,实现里面的方法即可,类名可任意设置 class Hook(HookBase): # 在添加了下载任务之后执行 def post_add_download(self) -> None: logger.info('post add download') # 在更新了状态,下载之前执行 def pre_add_download(self) -> None: logger.info('pre add download')
通过扩展bgmi.website.base.BaseWebsite
类并实现对应的三个方法,你也可以简单地添加一个数据源
每个方法具体的含义和返回值格式请参照每个方法对应的注释
from typing import List, Optional from bgmi.website.base import BaseWebsite from bgmi.website.model import Episode, WebsiteBangumi class DataSource(BaseWebsite): def search_by_keyword( self, keyword: str, count: int ) -> List[Episode]: # pragma: no cover """ :param keyword: 搜索关键词 :param count: 从网站获取多少页 :return: 集数搜索结果列表 """ raise NotImplementedError def fetch_bangumi_calendar(self,) -> List[WebsiteBangumi]: # pragma: no cover """ 返回所有番剧列表和所有字幕组列表 番剧字典列表: 更新时间应为['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Unknown']中的一个 """ raise NotImplementedError def fetch_episode_of_bangumi( self, bangumi_id: str, max_page: int, subtitle_list: Optional[List[str]] = None ) -> List[Episode]: # pragma: no cover """ 通过番剧ID获取所有集数 :param bangumi_id: 番剧ID :param subtitle_list: 字幕组列表 :type subtitle_list: list :param max_page: 如果没有字幕组列表,你想爬取多少页 :type max_page: int :return: 番剧列表 """ raise NotImplementedError def fetch_single_bangumi(self, bangumi_id: str) -> WebsiteBangumi: """ 在更新时获取番剧信息 :param bangumi_id: 番剧ID,或bangumi['keyword'] :type bangumi_id: str :rtype: WebsiteBangumi """ # 如果网站没有包含集数和信息的页面,则返回WebsiteBangumi(keyword=bangumi_id)
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和 语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号