BGmi

BGmi

命令行动漫追番工具 自动下载管理观看

BGmi是一个命令行动漫追番工具,支持多个数据源和下载方式。它可自动下载管理番剧,提供Web界面观看,支持弹幕。BGmi具有番剧过滤、自定义脚本、RSS订阅等功能,适用于Windows、Linux等平台。BGmi为喜欢使用命令行管理动漫的用户提供了便捷选择。

BGmi追番命令行下载工具番剧管理Github开源项目

BGmi

BGmi 是一个用于追番的命令行程序。

测试

待办事项

更新日志

v4

  • 命令自动补全,使用 bgmi completion zsh/bash 生成
  • 添加 mikan_url 配置,用于配置蜜柑计划镜像站
  • 添加 proxy 设置
  • 新的 WEB 用户界面
  • 将配置项 transmission.rpc_url 重命名为 transmission.rpc_host
  • 修复 Transmission 配置的默认值

v3

  • 新增配置项 global_include_keywords,用于设置全局包含关键词
  • 新增配置项 save_path_map,用于设置不同动画的下载路径
  • 使用 TOML 作为配置文件格式
  • 不再支持 Python 3.7
  • 不再支持 Python 3.6
  • 支持扩展下载方式
  • 移除迅雷离线
  • 支持 qbittorrent-webapi
  • 停止支持 Python 2、3.4 和 3.5
  • Transmission RPC 认证设置
  • 支持 deluge-rpc
  • 使用最大和最小集数筛选搜索结果

特性

  • 多个数据源可选:bangumi_moemikan_projectdmhy
  • 使用 aria2、transmission、qbittorrent 或 deluge 下载番剧
  • 提供管理和观看订阅番剧的前端界面
  • 弹幕支持
  • 提供 uTorrent 支持的 RSS Feed 和移动设备支持的 ICS 格式日历
  • Bangumi Script:添加自己的番剧解析器
  • 番剧放送列表和剧集信息
  • 下载番剧时的过滤器(支持关键词、字幕组和正则表达式)
  • 多平台支持:Windows、*nux 以及路由器系统

安装

使用 pipx 安装(推荐):

pipx install bgmi

使用 pip 安装稳定版本:

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 安装)

pipx upgrade bgmi bgmi upgrade

升级(仅 pip 安装)

pip install bgmi -U bgmi upgrade

升级后请确保运行 bgmi upgrade

使用 Docker

参见 BGmi/bgmi-docker-all-in-one

使用

查看可用的命令

bgmi --help

--help 选项同样适用于所有的子命令,本文档仅介绍了一些基础用法。

命令自动补全

bash

bgmi completion bash > ~/.bash_completion.d/bgmi

zsh

oh-my-zsh

bgmi completion zsh > .oh-my-zsh/completions/_bgmi

我不使用其他的 zsh 插件管理器,具体的安装方法请查询你使用的插件管理器文档

配置 BGmi

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_USERNAMEMIKAN_PASSWORD,其它源不受影响

bgmi source mikan_project

切换数据源必须使用bgmi source命令,不能手动修改配置文件。手动修改配置文件会导致bgmi报错

设置下载方式

修改配置文件和对应的配置项

download_delegate = "aria2-rpc" # 下载代理

内置可用的选项包括aria2-rpctransmission-rpcqbittorrent-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

在 Windows 上使用bgmi_http

参照上述步骤启动服务器,然后访问http://localhost:8888/

在*nux 上使用 bgmi_http

可以让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自行设置

me.ricterz.bgmi.plist

弹幕支持

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'

如果你对Python有一些了解,并且觉得还不够的话,下面是为你准备的内容。

Bangumi脚本

你可以编写一个BGmi脚本来解析你自己想看的番剧或美剧。BGmi会加载你的脚本,将其视为一个番剧来处理。你所需要做的只是继承ScriptBase类,然后实现特定的方法,再将你的脚本文件放到BGMI_PATH/script文件夹内。

示例:./tests/script_example.py

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数据源

通过扩展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)

许可证

MIT许可证

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多