Project Icon

lux

Go语言开发的开源视频下载工具

Lux是一个Go语言开发的开源视频下载工具,支持从YouTube、哔哩哔哩等网站下载视频。它具备多线程下载、断点续传和代理支持等功能,可下载单个视频或整个播放列表。Lux通过命令行操作,支持自定义输出路径和文件名,并提供调试模式。作为一个轻量级工具,Lux为用户提供了强大而灵活的视频下载功能。

Lux

让 Lux 照耀世界!

👾 Lux 是一个使用 Go 语言编写的快速简单的视频下载器。

安装

前置条件

以下依赖项是必需的,必须单独安装。

注意:FFmpeg 不影响下载,只影响最终文件的合并。

通过 go install 安装

要安装 Lux,请使用 go install,或从 Releases 页面下载二进制文件。

$ go install github.com/iawia002/lux@latest

Homebrew(仅限 macOS)

对于 macOS 用户,您可以通过以下方式安装 lux

$ brew install lux

Arch Linux

对于 Arch 用户,可以使用 AUR 包。

Void Linux

对于 Void Linux 用户,您可以通过以下方式安装 lux

$ xbps-install -S lux

Windows 上的 Scoop

$ scoop install lux

Windows 上的 Chocolatey

$ choco install lux

Windows/macOS/Linux 上的 Cask

$ cask install github.com/iawia002/lux

入门指南

用法:

lux [选项] URL [URL...]

下载视频

$ lux "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

 网站:      YouTube youtube.com
 标题:     Rick Astley - Never Gonna Give You Up (Video)
 类型:      视频
 流:
     [248]  -------------------
     质量:         1080p video/webm; codecs="vp9"
     大小:            63.93 MiB (67038963 字节)
     # 使用以下命令下载: lux -f 248 ...

 41.88 MiB / 63.93 MiB [=================>-------------]  65.51% 4.22 MiB/s 00m05s

-i 选项显示所有可用的视频质量而不下载。

$ lux -i "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

 网站:      YouTube youtube.com
 标题:     Rick Astley - Never Gonna Give You Up (Video)
 类型:      视频
 流:   # 所有可用质量
     [248]  -------------------
     质量:         1080p video/webm; codecs="vp9"
     大小:            49.29 MiB (51687554 字节)
     # 使用以下命令下载: lux -f 248 ...

     [137]  -------------------
     质量:         1080p video/mp4; codecs="avc1.640028"
     大小:            43.45 MiB (45564306 字节)
     # 使用以下命令下载: lux -f 137 ...

     [398]  -------------------
     质量:         720p video/mp4; codecs="av01.0.05M.08"
     大小:            37.12 MiB (38926432 字节)
     # 使用以下命令下载: lux -f 398 ...

     [136]  -------------------
     质量:         720p video/mp4; codecs="avc1.4d401f"
     大小:            31.34 MiB (32867324 字节)
     # 使用以下命令下载: lux -f 136 ...

     [247]  -------------------
     质量:         720p video/webm; codecs="vp9"
     大小:            31.03 MiB (32536181 字节)
     # 使用以下命令下载: lux -f 247 ...

使用 lux -f 流 "URL" 下载 -i 选项输出中列出的特定流。

下载其他内容

如果向 Lux 提供特定资源的 URL,它将直接下载:

$ lux "https://img9.bcyimg.com/drawer/15294/post/1799t/1f5a87801a0711e898b12b640777720f.jpg"

Lux 目前不支持此 URL,但它会尝试直接下载

 网站:      通用
 标题:     1f5a87801a0711e898b12b640777720f
 类型:      image/jpeg
 流:
     [default]  -------------------
     大小:            1.00 MiB (1051042 字节)
     # 使用以下命令下载: lux -f default "URL"

 1.00 MiB / 1.00 MiB [===================================] 100.00% 1.21 MiB/s 0s

下载播放列表

-p 选项下载整个播放列表而不是单个视频。

$ lux -i -p "https://www.bilibili.com/bangumi/play/ep198061"
网站:      哔哩哔哩 bilibili.com
标题:     Doctor X 第四季:第一集
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         845.66 MiB (886738354 字节)
    # 下载命令: lux -f default "URL"


网站:      哔哩哔哩 bilibili.com
标题:     Doctor X 第四季:第二集
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         930.71 MiB (975919195 字节)
    # 下载命令: lux -f default "URL"

......

你可以使用 `-start`、`-end` 或 `-items` 选项来指定列表的下载范围:

-start 从播放列表中的第几个视频开始下载(默认为1) -end 下载到播放列表中的第几个视频结束 -items 指定要下载的播放列表视频项。用逗号分隔,如:1,5,6,8-10


仅适用于哔哩哔哩播放列表:

-eto 每个哔哩哔哩分集的文件名不包含播放列表标题


### 多个输入

你也可以一次下载多个URL:

```console
$ lux -i "https://www.bilibili.com/video/av21877586" "https://www.bilibili.com/video/av21990740"

网站:      哔哩哔哩 bilibili.com
标题:     【莓机会了】甜到虐哭的13集单集MAD「我现在什么都不想干,更不想看14集」
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         51.88 MiB (54403767 字节)
    # 下载命令: lux -f default "URL"


网站:      哔哩哔哩 bilibili.com
标题:     【莓救了】甜到虐哭!!!国家队单集MAD-当熟悉的bgm响起,眼泪从脸颊滑下
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         77.63 MiB (81404093 字节)
    # 下载命令: lux -f default "URL"

这些URL将会被逐一下载。

你也可以使用 -F 选项从文件中读取URL:

$ lux -F ~/Desktop/u.txt

网站:      微博 weibo.com
标题:     在Google,我们设计什么? via@阑夕
类型:     视频
流:
    [默认]  -------------------
    大小:         19.19 MiB (20118196 字节)
    # 下载命令: lux -f default "URL"

19.19 MiB / 19.19 MiB [=================================] 100.00% 9.69 MiB/s 1秒

......

你可以使用 -start-end-items 选项来指定文件中的下载范围:

-start
    	从文件的第几行开始下载(默认为1)
-end
    	下载到文件的第几行结束
-items
    	指定要下载的文件行。用逗号分隔,如:1,5,6,8-10

恢复下载

Ctrl+C 可以中断下载。

输出目录中会保留一个临时的 .download 文件。如果使用相同的参数再次运行 lux,下载将从上次的会话继续。

自动重试

当下载失败时,lux 会自动重试,你可以通过 -retry 选项指定重试次数(默认为100次)。

Cookies

如果访问视频需要 cookies,可以使用 -c 选项向 lux 提供 cookies。

Cookies 可以是以下格式或 Netscape Cookie 格式:

name=value; name2=value2; ...

Cookies 可以是字符串或文本文件,通过以下两种方式之一提供 cookies。

作为字符串:

$ lux -c "name=value; name2=value2" "https://www.bilibili.com/video/av20203945"

作为文本文件:

$ lux -c cookies.txt "https://www.bilibili.com/video/av20203945"

代理

你可以通过环境变量设置 HTTP/SOCKS5 代理:

$ HTTP_PROXY="http://127.0.0.1:1087/" lux -i "https://www.youtube.com/watch?v=Gnbch2osEeo"
$ HTTP_PROXY="socks5://127.0.0.1:1080/" lux -i "https://www.youtube.com/watch?v=Gnbch2osEeo"

多线程

使用 --multi-thread-m 选项启用多线程下载单个视频。

使用 --thread-n 选项设置下载线程数(默认为10)。

注意:如果视频有多个片段,实际的下载线程数会增加。

例如:

  • 如果 -n 设置为 10,视频有 2 个片段,那么实际会使用 20 个线程。
  • 如果视频有 20 个片段,同时只下载 10 个片段,实际线程数为 100。

特别提示: 在下载 mgtv 时使用过多线程会导致 HTTP 403 错误,我们建议将线程数设置为 1

短链接

哔哩哔哩

你可以只使用 avep 号码来下载哔哩哔哩的视频:

$ lux -i ep198381 av21877586

网站:      哔哩哔哩 bilibili.com
标题:     狐妖小红娘:第79话 南国公主的吃货本色
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         485.23 MiB (508798478 字节)
    # 下载命令: lux -f default "URL"


网站:      哔哩哔哩 bilibili.com
标题:     【莓机会了】甜到虐哭的13集单集MAD「我现在什么都不想干,更不想看14集」
类型:     视频
可用流:   # 所有可用画质
    [默认]  -------------------
    画质:         高清 1080P
    大小:         51.88 MiB (54403767 字节)
    # 下载命令: lux -f default "URL"

使用指定的 Referrer

可以使用 -r 选项为请求指定 Referrer:

$ lux -r "https://www.bilibili.com/video/av20383055/" "http://cn-scnc1-dx.acgvideo.com/"

指定输出路径和名称

-o 选项设置路径,-O 选项设置下载文件的名称:

$ lux -o ../ -O "hello" "https://example.com"

调试模式

-d 选项输出网络请求信息:

$ lux -i -d "http://www.bilibili.com/video/av20088587"

URL:         http://www.bilibili.com/video/av20088587
方法:      GET
请求头:     http.Header{
    "Referer":         {"http://www.bilibili.com/video/av20088587"},
    "Accept":          {"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"},
    "Accept-Charset":  {"UTF-8,*;q=0.5"},
    "Accept-Encoding": {"gzip,deflate,sdch"},
    "Accept-Language": {"en-US,en;q=0.8"},
    "User-Agent":      {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"},
}
状态码: 200
URL:         https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&cid=32782944&otype=json&qn=116&quality=116&type=&sign=fb2e3f261fec398652f96d358517e535
方法:      GET
头部:     http.Header{
    "Accept-Charset":  {"UTF-8,*;q=0.5"},
    "Accept-Encoding": {"gzip,deflate,sdch"},
    "Accept-Language": {"en-US,en;q=0.8"},
    "User-Agent":      {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"},
    "Referer":         {"https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&cid=32782944&otype=json&qn=116&quality=116&type=&sign=fb2e3f261fec398652f96d358517e535"},
    "Accept":          {"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"},
}
状态码: 200

 网站:      哔哩哔哩 bilibili.com
 标题:     燃油动力的遥控奥迪R8跑赛道
 类型:      视频
 流:   # 所有可用质量
     [默认]  -------------------
     质量:         高清 1080P
     大小:            64.38 MiB (67504795 字节)
     # 下载命令: lux -f default "URL"

### 重复使用提取的数据

-j 选项将以 JSON 格式打印提取的数据。

```控制台
$ lux -j "https://www.bilibili.com/video/av20203945"

{
    "site": "哔哩哔哩 bilibili.com",
    "title": "【2018拜年祭单品】相遇day by day",
    "type": "视频",
    "streams": {
        "15": {
            "urls": [
                {
                    "url": "...",
                    "size": 18355205,
                    "ext": "flv"
                }
            ],
            "quality": "流畅 360P",
            "size": 18355205
        },
        "32": {
            "urls": [
                {
                    "url": "...",
                    "size": 40058632,
                    "ext": "flv"
                }
            ],
            "quality": "清晰 480P",
            "size": 40058632
        },
        "64": {
            "urls": [
                {
                    "url": "...",
                    "size": 82691087,
                    "ext": "flv"
                }
            ],
            "quality": "高清 720P",
            "size": 82691087
        },
        "80": {
            "urls": [
                {
                    "url": "...",
                    "size": 121735559,
                    "ext": "flv"
                }
            ],
            "quality": "高清 1080P",
            "size": 121735559
        }
    }
}

选项

  -i	仅显示信息
  -F string
    	URL文件路径
  -d	调试模式
  -j	打印提取的数据
  -s	最小输出
  -v	显示版本

下载:

  -f string
    	选择特定流下载
  -p	下载播放列表
  -n int
    	下载线程数(仅适用于多部分视频)(默认10)
  -c string
    	Cookie
  -r string
    	使用指定的引用页
  -cs int
    	下载的HTTP块大小(MB)(默认1)

网络:

  -retry int
    	下载失败时重试次数(默认10)

播放列表:

  -start int
    	播放列表开始视频(默认1)
  -end int
    	播放列表结束视频
  -items string
    	要下载的播放列表视频项。用逗号分隔,如:1,5,6,8-10

文件系统:

  -o string
    	指定输出路径
  -O string
    	指定输出文件名

字幕:

  -C	下载字幕

优酷:

  -ccode string
    	优酷ccode(默认"0502")
  -ckey string
    	优酷ckey(默认"7B19C0AB12633B22E7FE81271162026020570708D6CC189E4924503C49D243A0DE6CD84A766832C2C99898FC5ED31F3709BB3CDD82C96492E721BDD381735026")
  -password string
    	优酷密码

aria2:

注意:如果使用aria2下载,您需要自行合并多部分视频。

  -aria2
    	使用Aria2 RPC下载
  -aria2addr string
    	Aria2地址(默认"localhost:6800")
  -aria2method string
    	Aria2方法(默认"http")
  -aria2token string
    	Aria2 RPC令牌

支持的网站

网站网址🎬 视频🌁 图片🔊 音频📚 播放列表🍪 VIP适配构建状态
抖音https://www.douyin.comdouyin
哔哩哔哩https://www.bilibili.combilibili
半次元https://bcy.netbcy
pixivisionhttps://www.pixivision.netpixivision
优酷https://www.youku.comyouku
YouTubehttps://www.youtube.comyoutube
西瓜视频(头条)https://m.toutiao.com, https://v.ixigua.com, https://www.ixigua.comixigua
爱奇艺https://www.iqiyi.comiqiyi
新片场https://www.xinpianchang.comxinpianchang
芒果TVhttps://www.mgtv.commgtv
糖豆广场舞https://www.tangdou.comtangdou
Tumblrhttps://www.tumblr.comtumblr
Vimeohttps://vimeo.comvimeo
Facebookhttps://facebook.comfacebook
斗鱼视频https://v.douyu.comdouyu
秒拍https://www.miaopai.commiaopai
微博https://weibo.comweibo
Instagramhttps://www.instagram.cominstagram
Threadshttps://www.threads.netthreads
Twitterhttps://twitter.comtwitter
腾讯视频https://v.qq.comqq
网易云音乐https://music.163.comnetease
音悦台https://yinyuetai.comyinyuetai
极客时间https://time.geekbang.orggeekbang
Pornhubhttps://pornhub.compornhub
XVIDEOShttps://xvideos.comxvideos
联合新闻网https://udn.comudn
TikTokhttps://www.tiktok.comtiktok
Pinteresthttps://www.pinterest.compinterest
好看视频https://haokan.baidu.comhaokan
AcFunhttps://www.acfun.cnacfun
Epornerhttps://eporner.comeporner
StreamTapehttps://streamtape.comstreamtape
虎扑https://hupu.comhupu
虎牙视频https://v.huya.comhuya
喜马拉雅https://www.ximalaya.comximalaya
快手https://www.kuaishou.comkuaishou
Reddithttps://www.reddit.comreddit
VKontaktehttps://vk.comvk
知乎https://zhihu.comzhihu
Rumblehttps://rumble.comrumble
小红书https://xiaohongshu.com小红书
Zing MP3https://zingmp3.vnzingmp3
Bitchutehttps://www.bitchute.combitchute
Odyseehttps://odysee.comodysee

已知问题

优酷

优酷的 ccode 经常变化导致 lux 不可用,如果你知道有新的可用的 ccode,可以直接使用 lux -ccode ... 而不用等待 lux 更新(当然,也欢迎你给我们提一个 Pull request 来更新默认的 ccode

最好是每次下载都附带登录过的 Cookie 以避免部分 ccode 的问题

西瓜/头条视频

西瓜/头条视频必须带 Cookie 才能下载成功,西瓜和头条可共用西瓜视频的 Cookie,Cookie 的有效期可能较短,下载失败就更新 Cookie 尝试:

$ lux -c "msToken=yoEh0-qLUq4obZ8Sfxsem_CxCo9R3NM6ViTrWaRcM1...; ttwid=1%7C..." "https://m.toutiao.com/is/iYbTfJ79/"

贡献

Lux 是一个开源项目,建立在开源项目之上。查看贡献指南以开始。

作者

代码由 iawia002 和可爱的贡献者们用❤️编写

类似项目

许可证

MIT

版权所有 (c) 2018-至今,iawia002

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号