代码拉取完成,页面将自动刷新
同步操作将从 全糖咖啡/B站缓存转视频工具-Golang 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package main
import (
"bytes"
"compress/zlib"
"io"
"net/http"
"os"
"strings"
)
//func main() {
// args := os.Args
// if len(args) == 3 && args[1] != "" && args[2] != "" {
// downloadFromUrl(args[1], args[2])
// fmt.Println("done")
// } else {
// fmt.Println("参数格式错误!应传入两个参数,第一个参数是弹幕文件的url,第二个参数是弹幕文件保存的路径")
// }
//}
// 从链接地址下载字幕文件,并保存到指定目录
func downloadFromUrl(url string, path string) {
// 从b站下载字幕
res, err := http.Get(url)
if err != nil {
return
}
defer res.Body.Close()
// 创建文件夹
filePath := ""
lIndex := strings.LastIndex(path, "\\")
if lIndex != -1 {
filePath = path[0:lIndex]
} else {
return
}
exists := pathExists(filePath)
if !exists {
err := os.MkdirAll(filePath, 0666)
if err != nil {
return
}
}
// 创建输出文件
create, _ := os.Create(path)
defer create.Close()
if create != nil {
// 对字幕进行zlib解压
buf := &bytes.Buffer{}
header := []byte{0x78, 0x9c}
_, _ = buf.Write(header)
_, _ = buf.ReadFrom(res.Body)
reader, err := zlib.NewReader(buf)
if err != nil {
return
} else {
out := &bytes.Buffer{}
io.Copy(out, reader)
_, _ = create.Write(out.Bytes())
}
}
}
// 判断文件是否存在
func pathExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。