Package: bgmi
BGmiBGmi 是一个用来追番的命令行程序.TODO更新日志v4命令自动补全，使用bgmi completion zsh/bash生成添加mikan_url配置，用于配置蜜柑计划镜像站。添加proxy设置新 WEB UI将配置项transmission.rpc_url重命名为transmission.rpc_host.修复 Transmission 配置的默认值.v3新增配置项global_include_keywords，用于设置全局包含关键词。新增配置项save_path_map，用于设置不同动画的下载路径。使用TOML作为配置文件不再支持 python3.7不再支持 python3.6支持扩展下载方式移除迅雷离线支持qbittorrent-webapi停止支持 python2，3.4 和 3.5Transmission rpc 认证设置支持deluge-rpc使用最大和最小集数筛选搜索结果特性多个数据源可选:bangumi_moe,mikan_project或者dmhy使用 aria2, transmission, qbittorrent 或者 deluge 来下载你的番剧.提供一个管理和观看订阅番剧的前端.弹幕支持提供 uTorrent 支持的 RSS Feed 和移动设备支持的 ICS 格式日历.Bangumi Script: 添加自己的番剧解析器番剧放松列表和剧集信息下载番剧时的过滤器(支持关键词,字幕组和正则)多平台支持: Windows, *nux 以及 Router system安装使用pipx安装(推荐):pipxinstallbgmi使用 pip 安装稳定版本:pipinstallbgmi或者从源码安装（不推荐）gitclonehttps://github.com/BGmi/BGmicdBGmi
gitcheckoutmaster
python-mpipinstall-Upip
pipinstall.初始化BGmibgmiinstall升级（仅 pipx 安装）pipxupgradebgmi
bgmiupgrade升级（仅 pip 安装）pipinstallbgmi-U
bgmiupgrade在升级后请确保运行bgmi upgrade使用 Docker见BGmi/bgmi-docker-all-in-one使用查看可用的命令bgmi--help--help选项同样适用于所有的子命令，readme 仅介绍了一些基础用法。命令自动补全bashbgmicompletionbash>~/.bash_completion.d/bgmizshoh-my-zshbgmicompletionzsh>.oh-my-zsh/completions/_bgmi我不使用其他的 zsh 插件管理器，具体的安装方法请查询你使用的插件管理器文档配置 BGmiBGmi 提供两种方式配置BGmi的各项运行参数，分别为配置文件与环境变量。配置文件bgmi 的配置文件位于${BGMI_PATH}/config.toml, 在未设置BGMI_PATH环境变量时，${BGMI_PATH}默认为~/.bgmi/。查看当前BGmi设置:bgmiconfig# 查看当前各项设置默认值.data_source="bangumi_moe"# bangumi sourcedownload_delegate="aria2-rpc"# 番剧下载工具 (aria2-rpc, transmission-rpc, deluge-rpc, qbittorrent-webapi)tmp_path="tmp/tmp"# tmp dirsave_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=trueglobal_filters=["Leopard-Raws","hevc","x265","c-a Raws","U3-Web",]proxy=''# http proxy example: 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=9091rpc_username="your_username"rpc_password="your_password"rpc_path="/transmission/rpc"# transmission http rpc 的请求路径[qbittorrent]rpc_host="127.0.0.1"rpc_port=8080rpc_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 '...'命令可以修改配置。如：bgmiconfigsethttpadmin_token--value'my super secret token'或者bgmiconfigsetmax_path--value'3'不能用来修改复杂配置，如global_filters，请手动修改配置文件。支持的数据源bangumi_moe(default)mikan_projectdmhy更换换数据源更换数据源会清空番剧数据库, 但是 bgmi script 不受影响.之前下载的视频文件不会删除, 但是不会在前端显示如果更换的源为mikan_project, 请先配置MIKAN_USERNAME和MIKAN_PASSWORD, 其它源不受影响bgmisourcemikan_project设置下载方式修改配置文件和对应的配置项download_delegate="aria2-rpc"# download delegate内置可用的选项包括aria2-rpc,transmission-rpc,qbittorrent-webapi以及deluge-rpc。查看目前正在更新的新番bgmical订阅番剧:bgmiadd"进击的巨人 第三季""刃牙""哆啦A梦"bgmiadd"高分少女"--episode0添加番剧的同时设置下载路径:bgmiadd"高分少女"--episode0--save-path'./高分少女/S1/'退订:bgmidelete"Re:CREATORS"更新番剧列表并且下载番剧:bgmiupdate--download# update allbgmiupdate"从零开始的魔法书"--download设置筛选条件:bgmilist# 列出目前订阅的番剧bgmifetch"Re:CREATORS"# include和exclude会忽略大小写。`720p`和`720P`的效果是相同的bgmifilter"Re:CREATORS"--subtitle"DHR動研字幕組,豌豆字幕组"--include720P--excludeBIG5
bgmifetch"Re:CREATORS"# 删除subtitle，include和exclude，添加正则匹配bgmifilter"Re:CREATORS"--subtitle""--include""--exclude""--regex"..."bgmifilter"Re:CREATORS"--regex"(DHR動研字幕組|豌豆字幕组).*(720P)"bgmifetch"Re:CREATORS"设置全局过滤关键词包含默认不启用全局包含关键词，你可以设置enable_global_include_keywords = true启动此功能。enable_global_include_keywords=trueglobal_include_keywords=['1080']排除有一些默认定义的全局过滤关键词，默认会排除标题包含以下关键词的种子。
可以使用enable_global_filters = false禁止过滤全局关键词，enable_global_filters=trueglobal_filters=["Leopard-Raws","hevc","x265","c-a Raws","U3-Web",]最后使用bgmi fetch来看看筛选的结果.搜索番剧并下载:bgmisearch'为美好的世界献上祝福！'--regex-filter'.*动漫国字幕组.*为美好的世界献上祝福！].*720P.*'使用--min-episode和--max-episode来根据集数筛选下载结果bgmisearch海贼王--min-episode800--max-episode820# 下载bgmisearch海贼王--min-episode800--max-episode820--downloadbgmi search命令默认不会显示重复的集数, 如果要显示重复的集数来方便过滤, 在命令后加上--dupe来显示全部的搜索结果手动修改最近下载的剧集bgmilist
bgmimark"Re:CREATORS"1使用bgmi_http1.先下载所有更新中番剧的封面bgmical--download-cover2.根据你是否使用 nginx, 设置serve_static_files(使用 nginx 的情况下使用默认设置false, 不使用的情况下设置为true)3.下载前端的静态文件(你可能在安装的时候已经下载过了):bgmiinstall4.在8888端口启动 BGmi HTTP 服务器:bgmi_http--port=8888--address=0.0.0.0在 Windows 上使用bgmi_http参照上面启动服务器, 然后访问http://localhost:8888/.在*nux 上使用 bgmi_http可以让BGmi帮助你生成对应的 nginx 配置文件bgmigennginx.conf--server-namebgmi.whatever.com你也可以手动写一份 nginx 配置, 来满足你的更多需求(比如启用 https), 这是一份例子server{listen80;server_namebgmi;autoindexon;charsetutf-8;location/bangumi{# ~/.bgmi/bangumi# alias到你的`SAVE_PATH` 注意以/结尾alias/path/to/bangumi/;}location/api{proxy_passhttp://127.0.0.1:8888;}location/resource{proxy_passhttp://127.0.0.1:8888;}location/{# alias到你的`BGMI_PATH/front_static/`注意以/结尾alias/path/to/front_static/;}}或者添加一个 aria2c 前端之类的, 具体办法百度上有很多,不在此赘述.macOS launchctl service controller参照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/"# This api is provided by dplayer official设置你的bgmi_http, 享受弹幕支援吧.调试log 文件位于{BGMI_PATH}/tmp/卸载由于 pip 的限制, 你需要手动清理BGmi产生的位于~/.bgmi的文件同样,BMmi添加到你系统的定时任务也不会被自动删除, 请手动删除.*nix:请手动清理crontabwindows:schtasks/Delete/TN'bgmi updater'如果你对 python 有一点了解, 并且觉得还不够的话, 下面是为你准备的.Bangumi Script你可以写一个BGmi Script来解析你自己的想看的番剧或者美剧. BGmi 会加载你的 script, 视作一个番剧来对待. 而你所需要做的只是继承ScriptBase类, 然后实现特定的方法, 再把你的 script 文件放到BGMI_PATH/script文件夹内.Example:./tests/script_example.pyget_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 数据源通过扩展bgmi.website.base.BaseWebsite类并且实现对应的三个方法,你也可以简单的添加一个数据源每个方法具体的意义和返回值格式请参照每个方法对应的注释fromtypingimportList,Optionalfrombgmi.website.baseimportBaseWebsitefrombgmi.website.modelimportEpisode,WebsiteBangumiclassDataSource(BaseWebsite):defsearch_by_keyword(self,keyword:str,count:int)->List[Episode]:# pragma: no cover""":param keyword: search key word:param count: how many page to fetch from website:return: list of episode search result"""raiseNotImplementedErrordeffetch_bangumi_calendar(self,)->List[WebsiteBangumi]:# pragma: no cover"""return a list of all bangumi and a list of all subtitle grouplist of bangumi dict:update time should be one of ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Unknown']"""raiseNotImplementedErrordeffetch_episode_of_bangumi(self,bangumi_id:str,max_page:int,subtitle_list:Optional[List[str]]=None)->List[Episode]:# pragma: no cover"""get all episode by bangumi id:param bangumi_id: bangumi_id:param subtitle_list: list of subtitle group:type subtitle_list: list:param max_page: how many page you want to crawl if there is no subtitle list:type max_page: int:return: list of bangumi"""raiseNotImplementedErrordeffetch_single_bangumi(self,bangumi_id:str)->WebsiteBangumi:"""fetch bangumi info when updating:param bangumi_id: bangumi_id, or bangumi['keyword']:type bangumi_id: str:rtype: WebsiteBangumi"""# return WebsiteBangumi(keyword=bangumi_id) if website don't has a page contains episodes and infoLicenseMIT License