V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iawia002
V2EX  ›  程序员

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

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

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

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

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

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

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

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

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

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

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

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

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

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