whitehack 发表于 2018-12-18 10:42

分享一个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

OKxiaobaby 发表于 2018-12-18 10:49

无私分享,必须给赞

LeoSky 发表于 2018-12-18 11:09

楼主无私,虽然只是简单的异或,还是要支持楼主。{:1_893:}

HQD 发表于 2018-12-18 11:11

zhangwei690 发表于 2018-12-18 11:16

感谢楼主的分享

ytdzjun 发表于 2018-12-18 11:37

Go 语言对于高性能分布式系统领域而言,无疑比大多数其它语言有着更高的开发效率。

rsgdxp 发表于 2018-12-18 11:51

我也做过 https://www.52pojie.cn/thread-738056-1-1.html

情书谈什么恋爱 发表于 2018-12-18 12:22

楼主无私,虽然只是简单的异或,还是要支持楼主。

wangkai558 发表于 2018-12-18 12:45


无私分享,必须给赞

wall 发表于 2018-12-18 16:20

这个之前也有相似的软件,就是不知道这么久了,网易云音乐有没有改过
页: [1] 2
查看完整版本: 分享一个go写的转换网易云音乐缓存文件为mp3的小工具