golang 入门

栏目: Go · 发布时间: 6年前

内容简介:开始下载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语言生成二维码是如此简单

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软技能

软技能

John Sonmez / 王小刚 / 人民邮电出版社 / 2016-7 / 59.00元

这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。本......一起来看看 《软技能》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码