bilibili-rename/main.go

62 lines
1.6 KiB
Go

package main
import (
"fmt"
"os"
"path"
"github.com/yinhui87/go-component/language"
)
func main() {
dataSource := new(mockSource)
episodeProvider := NewEpisodeDataProvider(dataSource)
epdatas, err := episodeProvider.GetEpisodeData("av1742161", 143, 147)
// epdatas, err := getEPData(episodeProvider, "ep173262")
if err != nil {
panic(err)
}
for i, epdata := range epdatas {
fmt.Printf("%dep %d Cid: %v, Title: %s\n", i, epdata.Index, epdata.Cid, epdata.Title)
}
// 获取到所有集信息,开始准备文件
filenames, err := getFileList()
if err != nil {
panic(err)
}
if len(filenames) != len(epdatas) {
panic(fmt.Errorf("file count[%d] diff with epdata count[%d]", len(filenames), len(epdatas)))
}
for i := 0; i < len(filenames); i++ {
epdata := epdatas[i]
fmt.Printf("file %s cid[%d] title is %s\n", filenames[i], epdata.Cid, epdata.Title)
newName := fmt.Sprintf("%s%s", epdata.Title, path.Ext(filenames[i]))
fmt.Println("rename ", filenames[i], " to ", newName)
os.Rename(filenames[i], newName)
}
}
func getFileList() (filenames []string, err error) {
pwd, err := os.Open(".")
if err != nil {
return
}
files, err := pwd.Readdir(0)
if err != nil {
return
}
fileTimeMap := make(map[int]string)
var fileTimes []int
for _, fileInfo := range files {
if !fileInfo.IsDir() {
fileTimeMap[int(fileInfo.ModTime().Unix())] = fileInfo.Name()
fileTimes = append(fileTimes, int(fileInfo.ModTime().Unix()))
}
}
fileTimes = language.ArraySort(fileTimes).([]int)
for _, t := range fileTimes {
filenames = append(filenames, fileTimeMap[t])
}
return
}