qBittorrent 分享率限制模式 share_limits_mode 怎么设置?

发布时间:2026/9/10 8:21:51

qBittorrent 分享率限制模式 share_limits_mode 怎么设置? qBittorrent 分享率限制模式 share_limits_mode 怎么设置【免费下载链接】qBittorrentqBittorrent BitTorrent client项目地址: https://gitcode.com/GitHub_Trending/qb/qBittorrentqBittorrent 的分享率限制支持三个独立的限制项最大分享率max ratio、种子时长seeding time、无活动种子时长inactive seeding time。当同时启用多项限制时share_limits_mode决定这些限制之间是任意一项达标就触发还是全部达标才触发后续动作停止、删除、超级做种等。这篇文章说明三种设置入口GUI 选项对话框、单个种子的属性对话框以及 Web API2.15.3 起支持。share_limits_mode 的取值与含义模式定义在 sharelimits.h 中enum class ShareLimitsMode { Default -1, // special value MatchAny 0, MatchAll 1 };Default-1特殊值表示跟随上一层设置主要用于单个种子的覆盖值。MatchAny0任一已启用的限制条件达成即触发动作。MatchAll1所有已启用的限制条件都达成才触发动作。这个语义可以从种子剩余时间ETA的计算逻辑得到印证见 torrentimpl.cppif (etaList.isEmpty()) return MAX_ETA; return (shareLimits.mode ShareLimitsMode::MatchAny) ? std::ranges::min(etaList) : std::ranges::max(etaList);即MatchAny取各限制 ETA 的最小值最先达标的那项决定触发时间MatchAll取最大值所有项都达标才触发。限制项的具体数值约定同样来自 sharelimits.h常量值含义DEFAULT_RATIO_LIMIT-2分享率未单独设置跟随默认值NO_RATIO_LIMIT-1不启用分享率限制DEFAULT_SEEDING_TIME_LIMIT-2种子时长未单独设置NO_SEEDING_TIME_LIMIT-1不启用种子时长限制种子时长以分钟为单位GUI 输入框后缀为minETA 计算中用seedingTimeLimit * 60换算为秒。触发的动作由另一个字段max_ratio_act指定见 appcontroller.cpp0停止、1删除、2启用超级做种、3删除并删除内容。在 GUI 选项对话框中设置全局模式全局的分享率限制在选项对话框的BitTorrent页的Share Ratio Limiting区块设置界面定义见 optionsdialog.ui勾选要启用的限制项最大分享率、种子时长达到分钟、无活动种子时长达到分钟。在区块底部选择匹配模式两个单选按钮Any of the above对应MatchAny默认选中上述任一限制达成即触发动作All the above对应MatchAll上述所有限制都达成才触发动作。保存设置。保存逻辑见 optionsdialog.cpp.mode (m_ui-radioButtonShareLimitsModeAll-isChecked() ? BitTorrent::ShareLimitsMode::MatchAll : BitTorrent::ShareLimitsMode::MatchAny),即选中 All 单选框就是MatchAll否则一律按MatchAny处理。在单个种子上覆盖模式每个种子可以在自己的选项对话框分享限制部件见 torrentsharelimitswidget.cpp中单独设置分享率、种子时长和无活动种子时长并选择该种子的匹配模式下拉框两项文案为 Match any limit / Match all the limits。种子的取值可以显式指定也可以继承上层设置界面上显示为 Default默认模式名 和 From category跟随分类 两种继承选项见 torrentsharelimitswidget.cpp。单个种子设置的模式会写入恢复数据重启后保留见 dbresumedatastorage.cpp 对share_limits_mode的持久化处理。通过 Web API 设置qBittorrent 2.15.3 及以上WebAPI_Changelog.md 的 2.15.3 一节记录了三个与share_limits_mode相关的端点变更PR #24043sync/maindata端点包含种子的share_limits_mode字段app/preferences端点包含share_limits_mode选项app/setPreferences端点允许设置share_limits_mode选项。读取当前模式请求GET /api/v2/app/preferences响应中的share_limits_mode是枚举键名字符串序列化方式见 appcontroller.cppconst BitTorrent::ShareLimits shareLimits session-shareLimits(); data[umax_ratio_enabled_s] (shareLimits.ratioLimit 0.); data[umax_ratio_s] shareLimits.ratioLimit; data[umax_seeding_time_enabled_s] (shareLimits.seedingTimeLimit 0); data[umax_seeding_time_s] shareLimits.seedingTimeLimit; data[umax_inactive_seeding_time_enabled_s] (shareLimits.inactiveSeedingTimeLimit 0); data[umax_inactive_seeding_time_s] shareLimits.inactiveSeedingTimeLimit; data[ushare_limits_mode_s] Utils::String::fromEnum(shareLimits.mode); data[umax_ratio_act_s] static_castint(shareLimits.action);fromEnum通过QMetaEnum输出键名见 string.h所以取值是Default、MatchAny或MatchAll。设置模式POST /api/v2/app/setPreferences请求体是 JSON 对象可以只传share_limits_modecurl -X POST http://WebUI地址/api/v2/app/setPreferences \ --cookie SID登录后的会话 \ -H Content-Type: application/json \ -d {share_limits_mode:MatchAll}将WebUI地址替换为你实际的 Web UI 地址会话凭证来自 Web UI 的登录认证。服务端处理见 appcontroller.cppBitTorrent::ShareLimits shareLimits session-shareLimits(); if (hasKey(umax_ratio_enabled_s) !it.value().toBool()) shareLimits.ratioLimit BitTorrent::NO_RATIO_LIMIT; else if (hasKey(umax_ratio_s)) shareLimits.ratioLimit it.value().toReal(); // ... seeding time 项同理 if (hasKey(ushare_limits_mode_s)) shareLimits.mode Utils::String::toEnum(it.value().toString(), BitTorrent::ShareLimitsMode::MatchAny);两点需要注意模式值按字符串解析枚举键名传入无法识别的值时toEnum回退到默认参数MatchAny见 string.h不会报错但也不会按你写的值生效。setPreferences是增量设置只提交要改的键即可限制项的启用/禁用通过max_ratio_enabled、max_seeding_time_enabled、max_inactive_seeding_time_enabled控制取消启用时服务端会把对应限制置为-1不限制。单个种子的模式则用POST /api/v2/torrents/setShareLimits端点设置路由注册见 webapplication.h。设置后可通过sync/maindata响应中的种子share_limits_mode字段核对每个种子的当前模式。验证设置是否生效读回核对再请求一次GET /api/v2/app/preferences确认share_limits_mode返回MatchAll或MatchAnyGUI 中则检查选项对话框里对应单选按钮的选中状态。行为核对等待种子达到限制条件观察是否执行了max_ratio_act对应的动作停止/删除/超级做种/删除并删内容。用MatchAny时最先达标的那项限制就触发动作用MatchAll时必须所有已启用限制都达标才触发。边界与限制Default-1是特殊值表示继承上层设置不要把它当作第三种匹配模式传给setPreferences——全局设置只有MatchAny/MatchAll两种有效选择。枚举值注释明确说明新增枚举项时不允许改动已有数值以避免破坏现有用户设置见 sharelimits.h升级版本时已保存的模式值保持兼容。Web API 的share_limits_mode支持从 2.15.3 开始旧版本只能通过 GUI 设置。【免费下载链接】qBittorrentqBittorrent BitTorrent client项目地址: https://gitcode.com/GitHub_Trending/qb/qBittorrent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 8:21:51

企业第一批AI场景怎么选?FDE一线实战筛选框架与落地路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 9:12:01

旺季物流运力锁定实操指南:从成本测算到风险管控

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 9:12:01

如何用源码写规则做静态分析:Semgrep 代码扫描完整指南

如何用源码写规则做静态分析:Semgrep 代码扫描完整指南 【免费下载链接】semgrep Lightweight static analysis for many languages. Find bug variants with patterns that look like source code. 项目地址: https://gitcode.com/GitHub_Trending/se/semgrep …

2026/9/10 9:12:01

CANN/ge LLM分布式KV缓存推送API

PushKvBlocks 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前…

2026/9/10 9:07:01

深度神经网络的数学本质:函数逼近、流形学习与梯度几何

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码