diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4ec98f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +rename diff --git a/main.go b/main.go index d0aa171..4be9656 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package main import ( "fmt" + "os" + "path" "strconv" "github.com/yinhui87/go-component/language" @@ -15,7 +17,7 @@ type episode struct { func main() { episodeProvider := new(mockProvider) - epdatas, err := getEPData(episodeProvider, "av1742161") + epdatas, err := getEPData(episodeProvider, "av1742161", 143, 147) // epdatas, err := getEPData(episodeProvider, "ep173262") if err != nil { panic(err) @@ -23,6 +25,21 @@ func main() { 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 getEPData(provider EpisodeDataProvider, videoNo string, skipIndex ...int64) (episodes []episode, err error) { @@ -66,3 +83,27 @@ func getEPData(provider EpisodeDataProvider, videoNo string, skipIndex ...int64) } return } + +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 +}