• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iawia002
V2EX  ›  程序员

我用 Go 语言写了一个类似 youtube-dl 和 you-get 的工具

  •  6
     
  •   iawia002 · Mar 19, 2018 · 21290 views
    This topic created in 3152 days ago, the information mentioned may be changed or developed.

    https://github.com/iawia002/annie

    程序运行速度比 Python 写的工具提升很多(这不废话吗哈哈哈哈哈哈),下载速度也有提升,针对那些分了片的视频,用了 goroutine,总体速度提升很多

    $ annie -c cookies.txt https://www.bilibili.com/video/av20203945/
    
       Site:    哔哩哔哩 bilibili.com
      Title:     [ 2018 拜年祭单品] 相遇 day by day
       Type:    video
    Quality:    高清 1080P60
       Size:    220.65 MiB (231363071 Bytes)
    
     2.06 MiB / 220.65 MiB [>-----------------------------]   0.93% 1.94 MiB/s 1m52s
    

    现在大视频网站只支持 B 站,优酷,YouTube,爱奇艺和芒果 TV

    最后,静态编译型语言真 TM 爽 ເ😎ว

    Supplement 1  ·  Mar 20, 2018
    如果大家有兴趣的话,欢迎 Pull requests ! make annie better!
    112 replies  •  2020-02-25 19:04:43 +08:00
    1  2  
    ❮ ❯
    AlwaysBehave
    AlwaysBehave
    Mar 19, 2018 via Android
    1
    正好在计划类似项目
    找时间看看 pr 一波
    iawia002
    iawia002
    OP
    Mar 19, 2018❤️1
    2
    @AlwaysBehave 欢迎 PR !
    fhefh
    fhefh
    Mar 19, 2018
    3
    谢谢楼主 学习了~
    iawia002
    iawia002
    OP
    Mar 19, 2018❤️2
    4
    现在基础的功能都有,断点续传,带 cookies 访问,支持 http 代理和 socks5 代理
    iawia002
    iawia002
    OP
    Mar 19, 2018
    5
    @fhefh 那不给我点个 Star,哈哈哈哈哈哈
    AlwaysBehave
    AlwaysBehave
    Mar 19, 2018 via Android
    6
    说个小建议:bilibili 的 key 做成动态获取的
    写死 build 很难受
    类似的都可以这样做一下🤔
    我记得类似的有 bilibili for mac
    justfortest
    justfortest
    Mar 19, 2018
    7
    学习了
    FrankAdler
    FrankAdler
    Mar 19, 2018
    8
    最近在写 go 项目, 参考下
    fhefh
    fhefh
    Mar 19, 2018
    9
    @iawia002 哈哈 已点
    frozenthrone
    frozenthrone
    Mar 19, 2018 via iPhone
    10
    求支持 avgle
    iawia002
    iawia002
    OP
    Mar 19, 2018
    11
    @AlwaysBehave 你是说那个 seckey 吗,那个不能动态获取的,那个是写死的,现在的都不知道是哪位大神从 Android 客户端逆向出来的
    hlwjia
    hlwjia
    Mar 19, 2018
    12
    为什么起名 annie,请说出你的故事
    hlwjia
    hlwjia
    Mar 19, 2018
    13
    iawia002
    iawia002
    OP
    Mar 19, 2018
    14
    大家如果还记得的话,我是 lulu 的维护者,就是那个 you-get 的 fork,https://www.v2ex.com/t/428150
    iawia002
    iawia002
    OP
    Mar 19, 2018
    15
    @hlwjia 哈哈哈哈哈哈这位朋友你找的很快嘛
    anyfc
    anyfc
    Mar 19, 2018
    16
    下载 youku 视频的时候,提示: 客户端无权播放,201
    怎么解决
    admirez
    admirez
    Mar 19, 2018
    17
    为什么起名 annie,请说出你的故事
    pathbox
    pathbox
    Mar 19, 2018 via iPhone
    18
    YouTube 要代理吗?
    expy
    expy
    Mar 19, 2018
    19
    用过 lulu,star 感谢一波!
    lixuda
    lixuda
    Mar 19, 2018
    20
    go 代替 python 节奏
    itfanr
    itfanr
    Mar 19, 2018 via Android
    21
    好东西
    moro
    moro
    Mar 19, 2018
    22
    学习
    iawia002
    iawia002
    OP
    Mar 19, 2018
    23
    哎,刚才回复太快了,被禁了好久啊(哇,很惨啊,我就连回了两条消息),大家的问题我慢慢回吧

    @frozenthrone avgle 这是什么网站啊,看名字难道是🌚?我不知道他们的网页或者 api 怎么样,不好评估难度。我知道 pornhub 和 91 的视频都不难🌚

    @anyfc 那是因为 ccode 不对优酷出的提示,我都用了多个 ccode 来一个个试了都还不行啊,我呆会儿看看(单元测试为证,昨天都还可以)

    @admirez 别闹,取名字真的很难

    @pathbox 肯定要呀
    bigtan
    bigtan
    Mar 19, 2018❤️1
    24
    提了个 issue youtube 的视频下载以后,rename 失败;
    支持楼主添加 91
    iawia002
    iawia002
    OP
    Mar 19, 2018❤️1
    25
    @anyfc 优酷那个问题是个 bug🌚我的锅,我用多个 ccode 尝试的代码有点小问题,现在已经改好了,更新一下,0.4.1

    @bigtan 咦,是你呀,我回你了,你看下回复,我复现不了哎,这个问题有点奇怪
    winglight2016
    winglight2016
    Mar 19, 2018
    26
    怎么控制视频质量呢?我用默认命令下载的视频分辨率是最小的
    mingyun
    mingyun
    Mar 19, 2018
    27
    为什么安装失败
    fatal: unable to access 'https://github.com/iawia002/annie/': error:1407742E:SSL
    routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
    package github.com/iawia002/annie: exit status 128
    iawia002
    iawia002
    OP
    Mar 19, 2018
    28
    @winglight2016 现在不支持选视频质量,但是 annie 都是下的最高清晰度的呀,你下载的哪个地址?
    iawia002
    iawia002
    OP
    Mar 19, 2018
    29
    @mingyun 咦,你是怎么安装的,go get?,你这个报错信息看起来是网络问题呀,不行就下 https://github.com/iawia002/annie/releases,这个应该是下下来就能跑的
    winglight2016
    winglight2016
    Mar 19, 2018
    30
    @iawia002 是我搞错了,一直以为 youtube 上最低都是 720p,谁知道这个是 360p
    就这个视频,网页上看是很清晰的:
    iawia002
    iawia002
    OP
    Mar 19, 2018
    31
    @winglight2016 不是我的问题就好哈哈哈哈哈哈
    winglight2016
    winglight2016
    Mar 19, 2018
    32
    @iawia002 我正在学 go,还要跟 lz 多学习
    wspsxing
    wspsxing
    Mar 19, 2018
    33
    start + 1
    楼主厉害啦,自从 fx 57+后 flash-get 不能用了,总想找个或搞个下载 b 站视频的。
    mashirozx
    mashirozx
    Mar 19, 2018
    34
    活捉!
    iawia002
    iawia002
    OP
    Mar 19, 2018
    35
    @mashirozx 哈哈哈哈哈哈没想到又在 V 站上遇到你了
    mashirozx
    mashirozx
    Mar 19, 2018
    36
    @iawia002 d=====( ̄▽ ̄*)b
    affyun
    affyun
    Mar 19, 2018
    37
    请问下载 youtube 的 playlist 时能跳过里面失效的视频吗?
    iawia002
    iawia002
    OP
    Mar 19, 2018
    38
    @affyun 现在 Youtube 还不支持 playlist 下载哦,现在只有 b 站支持 playlist
    以后要支持的话应该可以吧,你的意思就是只下载这个列表里面能下载的嘛?
    affyun
    affyun
    Mar 19, 2018
    39
    @iawia002 #38 视频被删除或者设置为私享后就不能访问了。如果 playlist 里有这类视频的话,用 youtube-dl 会到那个视频就停止下载
    cchange
    cchange
    Mar 19, 2018
    40
    请问是用什么软件开发的? 是 JetBrain 的 go 语言 IDE 吗? 实在是新手
    见谅
    iawia002
    iawia002
    OP
    Mar 19, 2018
    41
    @affyun 哦它应该是 youtube 返回错误它就退出整个程序了,annie 现在还不知道以后这种情况怎么处理哎,以后增加了播放列表功能我再看看能不能实现你的需求吧
    iawia002
    iawia002
    OP
    Mar 19, 2018
    42
    @cchange 我是用 Atom 写的,用什么编辑器不存在的吧,用你顺手的就行了
    zhongjidalao
    zhongjidalao
    Mar 19, 2018
    43
    you-get 最近不能用了,你这个很厉害,已经点 start
    cchange
    cchange
    Mar 19, 2018
    44
    @iawia002 谢谢
    看来调试过程是编译后看输出结果,我是想有没有办法打断点,方便调试。
    iawia002
    iawia002
    OP
    Mar 20, 2018
    45
    @zhongjidalao 你知道 lulu 吗,一个 you-get 的 fork,lulu 应该还是能用的,只是没有 annie 快哈哈哈哈哈哈
    wweir
    wweir
    Mar 20, 2018 via Android
    46
    Go 替代 python 是波大节奏了,支持一下
    iawia002
    iawia002
    OP
    Mar 20, 2018
    47
    谈不上替代 python 吧,只是感觉这个场景适合 Go,需要速度,而且静态语言好维护
    liangzi
    liangzi
    Mar 20, 2018 via Android
    48
    mark 感谢分享
    iawia002
    iawia002
    OP
    Mar 20, 2018
    49
    但是 Go 调试起来确实比 python 差太远了啊,还是我 pdb 好用,毕竟解释型语言,可以各种折腾
    @cchange 想起来了,调试有个工具叫 Delve,我还没用过,应该比 gdb 好用
    seers
    seers
    Mar 20, 2018
    50
    感谢,前两天还用了 lulu
    yedashuai
    yedashuai
    Mar 20, 2018
    51
    火速 star,you-get 还在使用,就是从 you-get 开始入了 Python 的坑,看来又要从你这个 Annie 入 go 的坑了!!!
    iawia002
    iawia002
    OP
    Mar 20, 2018
    52
    Golang 欢迎你 😆
    shuianfendi6
    shuianfendi6
    Mar 20, 2018
    53
    @iawia002 大佬,annie 下 b 站经常下不完,下载 100%了去掉.download 也会提示权限失败,需要提 issue 么
    cozzz
    cozzz
    Mar 20, 2018 via iPhone
    54
    prpr
    iawia002
    iawia002
    OP
    Mar 20, 2018
    55
    @shuianfendi6 你是说报错了是吧,net/http: request canceled (Client.Timeout exceeded while reading body),这样的报错吗,那是网络原因下载中断了,你再执行一次命令就好了,有断点记录的,会从断的地方开始下
    123s
    123s
    Mar 20, 2018
    56
    建议支持 tumblr
    stormwindcity
    stormwindcity
    Mar 20, 2018
    57
    star
    OMGZui
    OMGZui
    Mar 20, 2018
    58
    支持一波
    iawia002
    iawia002
    OP
    Mar 20, 2018
    59
    @shuianfendi6 问题没有解决或者这里不好说就给我提 issue 吧
    @123s feature-request 也给我提个 issue 备忘吧
    archknight
    archknight
    Mar 20, 2018
    60
    好厉害。
    missdeer
    missdeer
    Mar 20, 2018
    61
    终于有用 go 写的这种工具了,star 一个
    caoyufei
    caoyufei
    Mar 20, 2018
    62
    已 star,在多支持些站点更好
    iawia002
    iawia002
    OP
    Mar 20, 2018
    63
    谢谢大家的支持,受宠若惊受宠若惊

    @caoyufei annie 才刚刚开始嘛,慢慢来

    如果大家有兴趣的话,欢迎 Pull requests ! make annie better!
    AlwaysBehave
    AlwaysBehave
    Mar 20, 2018 via Android
    64
    @iawia002 那个也会变啊… TYPCN 的 Bilibili for mac 就是这样做的啊
    iawia002
    iawia002
    OP
    Mar 20, 2018
    65
    @AlwaysBehave 那个 key 是算出来的?我一直觉得是 B 站写死的,他们好像定期会更新
    fork
    fork
    Mar 20, 2018
    66
    本来想干移植 youtube-dl 这件事, 果然已经有人干了,晚上回家试试,python 的 youtube-dl 确实做的不错的。
    orangeade
    orangeade
    Mar 20, 2018
    67
    python 版上 asyncio 的话下载速度是不是也有提升,我看 requests 作者已经开始为 requests 加入 asyncio 了
    hahasong
    hahasong
    Mar 20, 2018
    68
    youtube-dl 如何把 1080p 视频跟音频合在一起,直接给出的格式里只有 1080p 视频无音轨
    iawia002
    iawia002
    OP
    Mar 20, 2018
    69
    @orangeade 运行速度相比于 Go 还是硬伤啊

    @hahasong 你的意思是 youtube-dl 下载的视频是没有音频版本的?它应该是单独下载的视频音频最后用 ffmpeg 合在一起的
    ango
    ango
    Mar 20, 2018
    70
    厉害,学习一下。star~
    wyd2004
    wyd2004
    Mar 20, 2018
    71
    学习一下. 已 star.
    AlwaysBehave
    AlwaysBehave
    Mar 20, 2018 via Android
    72
    @iawia002 是解包出来的,TYPCN 虚拟机跑 apk 从内存 dump 出来 key 的,做了自动化
    不知道现在还是这个样子不
    iawia002
    iawia002
    OP
    Mar 20, 2018
    73
    @AlwaysBehave 卧槽这个方法可以啊,🤙🤙🤙
    JhZ7z587cYROBgVQ
    JhZ7z587cYROBgVQ
    Mar 20, 2018
    74
    速度大概提升了多少啊?一直以为下载工具的瓶颈在网络 io
    mxalbert1996
    mxalbert1996
    Mar 20, 2018 via Android
    75
    B 站支持大会员清晰度吗?支持的话还是相当优秀的
    iawia002
    iawia002
    OP
    Mar 20, 2018
    76
    @jason0916 具体的没有测试过哎,毕竟编译型语言,各种响应速度都比 Python 快

    @mxalbert1996 必须支持啊(前提是你有 B 站大会员的 cookies 啊),你看我上面主题介绍里面那个视频,就是我带我的大会员账号的 cookies 下载的,高清 1080P60,大会员专属。B 站大概是我支持最好的网站了哈哈哈哈哈哈,因为我,iawia002,住 B 站
    chturing184
    chturing184
    Mar 20, 2018
    77
    超棒
    lsls931011
    lsls931011
    Mar 20, 2018
    78
    我本来也想这么做的 @iawia002
    iawia002
    iawia002
    OP
    Mar 20, 2018
    79
    @lsls931011 那就一起搞啊
    lsls931011
    lsls931011
    Mar 20, 2018
    80
    @iawia002 找到组织了, 找时间开搞
    shuianfendi6
    shuianfendi6
    Mar 20, 2018
    81
    @iawia002 是的,那可能是网络问题,
    文件权限问题我复现下,提个 issue 看看

    多谢多谢~
    alittlewhitea
    alittlewhitea
    Mar 20, 2018
    82
    嗯..那个..tumblr 可以吗
    iawia002
    iawia002
    OP
    Mar 20, 2018❤️1
    83
    @alittlewhitea tumblr 的需求这么高的吗 @123s 也提了这个,现在已经支持图片下载了(不过还没发版本),视频的话还要等等,你们的主要需求是图片还是视频呀
    alittlewhitea
    alittlewhitea
    Mar 20, 2018
    84
    @iawia002 嗯..视频
    iawia002
    iawia002
    OP
    Mar 20, 2018
    85
    @alittlewhitea 我肤浅地问一句,是用来开..开车吗🌚
    123s
    123s
    Mar 20, 2018
    86
    @iawia002 哈哈,就是开车的
    iawia002
    iawia002
    OP
    Mar 20, 2018
    87
    那用 91 或者 pornhub 开不是更快吗哈哈哈哈哈哈

    tumblr 的很多视频都是 vimeo 或者其他网站上的,也就是说要支持 tumblr,我还得先支持 vimeo 那些

    有没有人能私聊我一辆车的地址啊,我看下页面的结构,看那种视频是存在 tumblr 上还是外站的
    cevincheung
    cevincheung
    Mar 20, 2018
    88
    要是能有个 chrome 插件,正在看哪个视频就点一下自动带 cookies 过去然后就开始下载……美滋滋
    iawia002
    iawia002
    OP
    Mar 20, 2018
    89
    @cevincheung 想法不错
    xuanyuanaosheng
    xuanyuanaosheng
    Mar 20, 2018 via Android
    90
    mark 一下,有空测试下
    unique
    unique
    Mar 20, 2018 via iPhone
    91
    感谢楼主分享,👏👏👏已 star
    iawia002
    iawia002
    OP
    Mar 20, 2018
    92
    @123s @alittlewhitea 发车了,0.5.0 支持 tumblr 下载图片,站内视频下载( tumblr 很多视频是外链的 vimeo,ins 等等,这些暂不支持)
    123s
    123s
    Mar 20, 2018
    93
    好快
    iawia002
    iawia002
    OP
    Mar 20, 2018
    94
    @123s 有问题的话提 issue 吧,把下不了的那个网址也带上
    solaro
    solaro
    Mar 21, 2018
    95
    膜拜大佬
    h4wklee
    h4wklee
    Mar 21, 2018 via Android
    96
    @hahasong 需要 ffmpeg 下载来之后合成,楼主的这个同样也需要
    wwqgtxx
    wwqgtxx
    Mar 21, 2018
    97
    个人感觉这一类下载解析软件对性能要求并不高,剩下就是网络库的优化了
    hahasong
    hahasong
    Mar 21, 2018
    98
    @h4wklee 用 youtube-dl 下下来的格式要怎么合成,方便给个命令的 demo 吗
    h4wklee
    h4wklee
    Mar 21, 2018
    99
    @hahasong 安装 ffmpeg 后 youtube-dl 会自己识别合成的,自己动动手谷歌一下吧
    lixuda
    lixuda
    Mar 21, 2018
    100
    有没有 exe 编译版本
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3686 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 105ms · UTC 00:47 · PVG 08:47 · LAX 16:47 · JFK 19:47
    ♥ Do have faith in what you're doing.