内容简介:开始下载mp4hd 格式,大小560M然后用annie 看看 ,注意先把bin 加入环境变量go生成的可执行文件就一个annie.exe,没有其他依赖,只要把这个文件下载就能用,太方便了,于是开始学习下 golang
缘起
之前下载视频用的you-get,但是b站一直下不了,优酷也经常出问题,所以接触到lulu https://github.com/iawia002/Lulu 这个也是基于you-get 直接 pip install lulu,但是作者不维护了,新出了个 https://github.com/iawia002/a... 这个不是 python 开发的 ,而是 go ,通过 go get github.com/iawia002/annie 来安装 ,比如之前用lulu下载电影优酷的《大话西游》,这里推荐下优酷的2个播主,上传了几百个经典香港电影 :
经典香港电影 东方不败影院$ lulu -i https://v.youku.com/v_show/id_XMzY4OTMxMTYyMA==.html? It seems that your ffmpeg is a nightly build. Please switch to the latest stable if merging failed. site: 优酷 (Youku) title: 大话西游之大圣娶亲【周星驰】【1080p】【国语中字】 streams: # Available quality and codecs [ DEFAULT ] _________________________________ - format: mp4hd3v2 container: mp4 video-profile: 1080P size: 1777.4 MiB (1863787718 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=mp4hd3v3&ups_client_netip=756495b7&utid=31o%2FFP58k0kCAXVklbeqyp8h&ccode=0502&psid=f9aac3a8a0c035a6baa3a745a49c2487&duration=5983&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813154&onOff=0&encr=0&ups_key=5310a4e7d0e7795209d27a8b117c8a04 # download-with: lulu --format=mp4hd3v2 [URL] - format: mp4hd2v2 container: mp4 video-profile: 超清 size: 906.9 MiB (950999892 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=mp4hd2v3&ups_client_netip=756495b7&utid=31o%2FFP58k0kCAXVklbeqyp8h&ccode=0502&psid=f9aac3a8a0c035a6baa3a745a49c2487&duration=5983&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813154&onOff=0&encr=0&ups_key=5310a4e7d0e7795209d27a8b117c8a04 # download-with: lulu --format=mp4hd2v2 [URL] - format: mp4hd container: mp4 video-profile: 高清 size: 560.3 MiB (587487098 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=mp4hdv3&ups_client_netip=756495b7&utid=31o%2FFP58k0kCAXVklbeqyp8h&ccode=0502&psid=f9aac3a8a0c035a6baa3a745a49c2487&duration=5983&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813154&onOff=0&encr=0&ups_key=5310a4e7d0e7795209d27a8b117c8a04 # download-with: lulu --format=mp4hd [URL] - format: 3gphd container: mp4 video-profile: 渣清 size: 184.1 MiB (193030164 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=3gphdv3&ups_client_netip=756495b7&utid=31o%2FFP58k0kCAXVklbeqyp8h&ccode=0502&psid=f9aac3a8a0c035a6baa3a745a49c2487&duration=5984&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813154&onOff=0&encr=0&ups_key=e8361d25bb6ea3bb70a8a81a94ed5b50 # download-with: lulu --format=3gphd [URL] - format: mp4sd container: mp4 video-profile: 标清 size: 279.0 MiB (292555710 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=flvhdv3&ups_client_netip=756495b7&utid=31o%2FFP58k0kCAXVklbeqyp8h&ccode=0502&psid=f9aac3a8a0c035a6baa3a745a49c2487&duration=5984&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813154&onOff=0&encr=0&ups_key=e8361d25bb6ea3bb70a8a81a94ed5b50 # download-with: lulu --format=mp4sd [URL]
开始下载mp4hd 格式,大小560M
$ lulu --format=mp4hd https://v.youku.com/v_show/id_XMzY4OTMxMTYyMA==.html? It seems that your ffmpeg is a nightly build. Please switch to the latest stable if merging failed. site: 优酷 (Youku) title: 大话西游之大圣娶亲【周星驰】【1080p】【国语中字】 stream: - format: mp4hd container: mp4 video-profile: 高清 size: 560.3 MiB (587487098 bytes) m3u8_url: http://pl-ali.youku.com/playlist/m3u8?vid=XMzY4OTMxMTYyMA&type=mp4hdv3&ups_client_netip=756495b7&utid=OVs%2FFCNJrjgCAXVklbfwfTTy&ccode=0502&psid=d311f534cb94393bef9139f8653f6a20&duration=5983&expire=18000&drm_type=1&drm_device=7&ups_ts=1538813244&onOff=0&encr=0&ups_key=328b76a03e2f827a1465b0428813b011 # download-with: lulu --format=mp4hd [URL] Downloading 大话西游之大圣娶亲【周星驰】【1080p】【国语中字】.mp4 ... 0.2% ( 1.4/560.3MB) ├──────────────────────────────────────┤[ 1/16] 0 B/sl 100% (560.3/560.3MB) ├██████████████████████████████████████┤[16/16] 372 kB/s Merging video parts... 其实就是用ffmpeg下载m3u8文件,但是也经常出问题 $ lulu -i https://v.youku.com/v_show/id_XMzY4OTMxMTYyMA==.html lulu: ▒ͻ▒▒▒▒▒Ȩ▒▒▒▒,201 It seems that your ffmpeg is a nightly build. Please switch to the latest stable if merging failed.
然后用annie 看看 ,注意先把bin 加入环境变量
λ annie -i https://v.youku.com/v_show/id_XMzY4OTMxMTYyMA==.html Site: 优酷 youku.com Title: 大话西游之大圣娶亲【周星驰】【1080p】【国语中字】 Type: video Streams: # All available quality [mp4hd3] ------------------- Quality: mp4hd3 1920x1080 Size: 1777.45 MiB (1863787718 Bytes) # download with: annie -f mp4hd3 ... [mp4hd2] ------------------- Quality: mp4hd2 1280x720 Size: 906.94 MiB (950999892 Bytes) # download with: annie -f mp4hd2 ... [mp4hd] ------------------- Quality: mp4hd 960x540 Size: 560.27 MiB (587487098 Bytes) # download with: annie -f mp4hd ... [flvhd] ------------------- Quality: flvhd 640x360 Size: 279.00 MiB (292555710 Bytes) # download with: annie -f flvhd ... [3gphd] ------------------- Quality: 3gphd 480x270 Size: 184.09 MiB (193030164 Bytes) # download with: annie -f 3gphd ...
go生成的可执行文件就一个annie.exe,没有其他依赖,只要把这个文件下载就能用,太方便了,于是开始学习下 golang
然后熟悉语法,说到这个,简直奇葩,跟PHP py完全不是一个套路,一个单引号 双引号混了就失败,先定义package ,如果不是需要执行的编译文件,不能为main ,比如learn/study/test.php package study
run.go import learn/study import导入的是目录 ,导入的包如果不用还不行,定义变量需要指定类型 ,比如var a int =3 const b string = "abc" type long float64
var c byte='a'
这里要说下字符和字符串类型 ,字符是单个字符,用单引号,字符串是多个字符组成,用双引号,不能混用, 这的奇葩语法。
main 函数是main包才定义的,而且不能手动调用,在init后执行,相当 PHP 的构造函数 ,但是没有参数和返回值,一个简单的demo
package main import fm "fmt" var d =1 const ( // 常量组 a, b = 10, 100 c bool = false ) func main() { power := getPower()//函数内才能不用var声明变量 name:="test"//下面没有用到还会失败!!!,但是全局变量a不会 fm.Printf(" power is over %d\n",power) } func getPower() int { return 9001 }
go run test.go
程序正常退出的代码为 0 即 Program exited with code 0;如果程序因为异常而被终止,则会返回非零值,如:1。这个数值可以用来测试是否成功执行一个程序。
一些常用的命令
go build 编译并安装自身包和依赖包,比如window生成EXE文件
go install 安装自身包和依赖包,安装到pkg目录
gofmt –w program.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容, 有了这个不用担心PHP一样的带风格混乱
go doc package 获取包的文档注释
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )。
go居然这样实现面向对象!!!!
break 只是退出当前的循环体,而 return 语句提前对函数进行返回,不会执行后续的代码。
package表示源码所属的代码包 * 要生成 GO 语言 可执行程序 ,必须要有main的package包,且必须在该包下有 main() 函数
同一路径下只能存在一个package**,一个package可以拆分成多个源文件组成
操作符 "&" 取变量地址,"*" 透过指针访问目标对象,关键字 defer 用于注册延迟调用。这些调用直到 return 前才被执行,还有数组,slice 没来得及学,真的有点难,下次再说了。
实践
go get github.com/skip2/go-qrcode 下载源码
vi qrcode.go package main import "github.com/skip2/go-qrcode" func main() { qrcode.WriteFile("http://www.flysnow.org/",qrcode.Medium,256,"./blog_qrcode.png") }
go run qrcode.go
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- TiDB入门(四):从入门到“跑路”
- MyBatis从入门到精通(一):MyBatis入门
- MyBatis从入门到精通(一):MyBatis入门
- Docker入门(一)用hello world入门docker
- 赵童鞋带你入门PHP(六) ThinkPHP框架入门
- 初学者入门 Golang 的学习型项目,go入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning ASP.NET 4 in C# and Vb
Imar Spaanjaars / Wrox / 2010-3-19 / GBP 29.99
This book is for anyone who wants to learn how to build rich and interactive web sites that run on the Microsoft platform. With the knowledge you gain from this book, you create a great foundation to ......一起来看看 《Beginning ASP.NET 4 in C# and Vb》 这本书的介绍吧!
正则表达式在线测试
正则表达式在线测试
HSV CMYK 转换工具
HSV CMYK互换工具