Skip to content

支持传递参数给yt-dlp #184

@hhsw2015

Description

@hhsw2015

⭐️ Feature description

go-ytdlp支持传递参数给yt-dlp, 希望在配置文件中提供编辑参数的选项

https://github.com/lrstanley/go-ytdlp?tab=readme-ov-file#flagconfig-json-tofrom-flags-conversion--usage

Bidirectional Conversion: Easily marshal and unmarshal yt-dlp flags to and from JSON. Use Command.SetFlagConfig and Command.GetFlagConfig to set/get the flag config.


	// 4. Use the values to construct and run a yt-dlp command, by calling `Command.SetFlagConfig`,
	//    `Command.SetEnvVar`, and then `Command.Run`.
	cmd := ytdlp.New().
		SetFlagConfig(&body.Flags)


1. FlagConfig 是什么?

FlagConfigyt-dlp 命令行参数(flags)和 JSON 之间的“中间表示”

  • yt-dlp 本来是用命令行参数控制的(如 --format, --proxy 等)

  • FlagConfig 允许你:

    • 把一组 yt-dlp 参数转成 JSON
    • 再从 JSON 还原成 yt-dlp 参数

这在 HTTP API、Web UI、配置持久化 等场景中非常有用。


2. 双向转换(Bidirectional Conversion)

支持 双向 转换:

  • Flags → JSON

    • Command.GetFlagConfig()
  • JSON → Flags

    • Command.SetFlagConfig()

这意味着:

  • 后端可以把当前 yt-dlp 参数返回给前端(JSON)
  • 前端修改后再传回来
  • 后端再转换回 yt-dlp 的 flags 执行

3. 校验(Validation)很重要

⚠️ JSON 本身是不安全的,必须校验

原因:

  • JSON 里可能出现重复 flag
  • 可能是无效 flag
  • 可能是 yt-dlp 已经删除/修改的参数

go-ytdlp 提供了:

  • 校验函数
  • 专门的错误类型

关键建议:

在真正使用 FlagConfig 之前,一定要 validate

🌈 Your view

No response

🧐 Code example

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions