go

使用 golang 解析腾讯视频真实链接

。_饼干妹妹 提交于 2020-10-24 10:27:36
package main import ( "fmt" "io/ioutil" "net/http" "regexp" "strings" ) func main() { // 仅对非会员视频链接有效 url := "https://v.qq.com/x/page/b0945ug7vzo.html" // 先确定 .html 的最早出现的位置,以排除之后 callback 的链接中可能携带的 .html b := strings.Index(url, ".html") // 从确定的 .html 向前找最后一个 / 出现的位置 a := strings.LastIndex(url[:b], "/") // 获取视频 id vid := url[a+1 : b] // 获取视频 json 信息 url = "https://vv.video.qq.com/getinfo?vids=" + vid + "&platform=101001&charge=0&otype=json" resp, err := http.Get(url) if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt

代理模式

青春壹個敷衍的年華 提交于 2020-10-24 07:56:43
1. 介绍 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 2. 应用场景 日志记录,在一个方法处理前后增加自己的功能 3. 代码实现 3.1 静态代理 3.1.1 代理接口 public interface Moveable { void go(); } 3.1.2 接口实现类 public class Bike implements Moveable { @Override public void go() { System.out.println(" bike 蹬蹬蹬"); } } public class Car implements Moveable { @Override public void go() { System.out.println("car 咻咻咻......"); } } 3.1.3 代理类 public class LogProxy implements Moveable { private Moveable m; public LogProxy(Moveable m) { this.m = m; } @Override public void go() { System.out.println("开始记录日志"); m.go(); System.out.println(