内容简介:开始下载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入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。