分享一个go写的转换网易云音乐缓存文件为mp3的小工具
公司网突然断了。没有音乐听了。就整了个这个。。。package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"strings"
"time"
)
// 转换网易云 缓存到mp3
func main() {
cachePath := "C:\\\\Users\\Administrator\\AppData\\Local\\Netease\\CloudMusic\\Cache\\Cache"
args := os.Args
if len(args) != 2 {
log.Fatal("没有传目录参数 \n第一个参数为网易云音乐缓存文件夹 例如:" + cachePath + "\n第二个参数为保存转换过的mp3文件的文件夹")
}
cachePath = args
targetPath := args //"F:\\\\CloudMusic"
fmt.Printf("cachepath:%stargetPath:%s\n", cachePath, targetPath)
if err := os.MkdirAll(targetPath, 0777); err != nil {
log.Fatal(err)
}
files, _ := ioutil.ReadDir(cachePath)
// 启动多少个 goroutine
ch := make(chan string, 20)
startTime := time.Now()
count := 0
for _, file := range files {
if !file.IsDir() && strings.HasSuffix(file.Name(), ".uc") {
ch <- file.Name()
go func(fileName string) {
fmt.Println("parse :", fileName)
err := decodeFile(cachePath, fileName, targetPath, fileName+".mp3")
//err := decodeFileStream(cachePath, fileName, targetPath, fileName+".mp3")
count++
defer func() {
fmt.Println("parse end:", <-ch, " err:", err)
}()
}(file.Name())
}
}
fmt.Println("all end", time.Since(startTime), "count:", count)
}
func decodeFile(dirName, fileName, newDirName, newName string) error {
bytes, err := ioutil.ReadFile(dirName + "\\" + fileName)
if err != nil {
return err
}
for i := 0; i < len(bytes); i++ {
bytes ^= 0xa3
}
return ioutil.WriteFile(newDirName+"\\"+newName, bytes, 0777)
}
编译好的小程序。
链接:https://share.weiyun.com/5fRjDJt 密码:j6xd6x
使用方法
main.exe网易云缓存目录 要保存到的目录
缓存目录一般是C:\\Users\Administrator\AppData\Local\Netease\CloudMusic\Cache\Cache
无私分享,必须给赞 楼主无私,虽然只是简单的异或,还是要支持楼主。{:1_893:} 感谢楼主的分享 Go 语言对于高性能分布式系统领域而言,无疑比大多数其它语言有着更高的开发效率。 我也做过 https://www.52pojie.cn/thread-738056-1-1.html 楼主无私,虽然只是简单的异或,还是要支持楼主。
无私分享,必须给赞 这个之前也有相似的软件,就是不知道这么久了,网易云音乐有没有改过
页:
[1]
2