鱼C论坛

 找回密码
 立即注册
查看: 594|回复: 5

[已解决]yt-dlp的match-filter怎么用?

[复制链接]
发表于 2024-4-2 08:08:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
--match-filter "!is_live & title~=(?i)Green|Blue" --match-filter "!is_live & description~=(?i)Green|Blue" 中 !is_live,~=,(?i) 分别是啥意思?
最佳答案
2024-4-2 08:08:39
yt-dlp 的 `--match-filter` 选项是用于筛选想要下载的视频或音频的工具。其中包含的表达式 `!is_live`、`~=` 和 `(?i)` 分别有以下含义:

1. `!is_live`: 这个条件表示视频或音频文件不是直播(live)类型的。`!` 表示逻辑非,即取反的意思,`is_live` 是一个内置变量,用于判断视频是否为直播。
2. `~=`: 这是一个正则表达式匹配操作符。正则表达式是一种用于模式匹配的工具,`~=` 表示进行正则表达式匹配。
3. `(?i)`: 这是一个正则表达式的标志,`(?i)` 表示忽略匹配时的大小写差异。

举个例子来理解这个 `--match-filter` 的用法。假设我们希望下载标题中包含 "Green" 或 "Blue",并且不是直播的视频或音频文件。那么可以使用以下命令:
yt-dlp --match-filter "!is_live & title~=(?i)Green|Blue" <视频链接>

这样,`--match-filter` 就会根据条件进行筛选,只下载符合要求的视频或音频文件。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-2 08:08:39 | 显示全部楼层    本楼为最佳答案   
yt-dlp 的 `--match-filter` 选项是用于筛选想要下载的视频或音频的工具。其中包含的表达式 `!is_live`、`~=` 和 `(?i)` 分别有以下含义:

1. `!is_live`: 这个条件表示视频或音频文件不是直播(live)类型的。`!` 表示逻辑非,即取反的意思,`is_live` 是一个内置变量,用于判断视频是否为直播。
2. `~=`: 这是一个正则表达式匹配操作符。正则表达式是一种用于模式匹配的工具,`~=` 表示进行正则表达式匹配。
3. `(?i)`: 这是一个正则表达式的标志,`(?i)` 表示忽略匹配时的大小写差异。

举个例子来理解这个 `--match-filter` 的用法。假设我们希望下载标题中包含 "Green" 或 "Blue",并且不是直播的视频或音频文件。那么可以使用以下命令:
yt-dlp --match-filter "!is_live & title~=(?i)Green|Blue" <视频链接>

这样,`--match-filter` 就会根据条件进行筛选,只下载符合要求的视频或音频文件。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-2 08:17:17 | 显示全部楼层
有没有 cartoon 分类呢?  如果要找到 不是直播的,包含dog的动画。参数该咋写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-2 08:17:29 | 显示全部楼层
blackantt 发表于 2024-04-02 08:17
有没有 cartoon 分类呢?  如果要找到 不是直播的,包 ...


对于yt-dlp,没有直接的`cartoon`分类,但你可以使用其他参数来筛选动画类视频。要找到不是直播的,标题或描述中包含 "dog" 的动画视频,可以使用以下命令:
yt-dlp --match-filter "!is_live & (title~=(?i)dog|description~=(?i)dog) & category~=(?i)animation"

这个命令使用了三个条件来进行筛选:

- `!is_live`: 视频不是直播类型
- `title~=(?i)dog|description~=(?i)dog`: 标题或描述中包含 "dog"
- `category~=(?i)animation`: 分类中包含 "animation"(忽略大小写)

通过这样的参数组合,yt-dlp会筛选出不是直播、包含 "dog" ,并且分类为 "动画" 的视频。你可以根据自己的需求适当修改参数来获得更准确的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-2 08:45:37 | 显示全部楼层
--match-filter "!is_live & title~=(?i)dog & category~=(?i)animation" --match-filter "!is_live & description~=(?i)dog & category~=(?i)animation" , & 是 and,2个match-filter 是 或
但是 分类仍然不对,好像没有分类这个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-2 08:45:49 | 显示全部楼层
blackantt 发表于 2024-04-02 08:45
--match-filter "!is_live & title~=(?i)dog & catego ...


非常抱歉,我给出的答案有误。你是正确的,yt-dlp 并没有直接支持分类筛选的参数。对不起给你带来了困惑。

如果你想要筛选动画类视频,并且标题或描述中包含 "dog" 的话,可以尝试以下方式:
yt-dlp --match-title "(?i)dog" --match-filter "!is_live" --dump-json | jq 'select(.categories[] | contains("Animation"))'

这个命令会首先使用 `--match-title` 来匹配标题中包含 "dog" 的视频,然后使用 `--match-filter` 排除直播类型的视频。最后,使用 `--dump-json` 将结果以 JSON 格式输出,并使用 `jq` 工具进行过滤。

需要注意的是,你需要事先安装 `jq` 工具,它是一个用于处理和查询 JSON 数据的强大工具。你可以通过 `apt-get` 等方式进行安装。

希望这次给出的解答能够满足你的需求。再次对之前的错误答案表示歉意。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表