Update track existence checks in ripTrack function

This commit is contained in:
York
2025-09-22 12:54:07 +08:00
committed by GitHub
parent 90f97e0d14
commit da62f1772e

29
main.go
View File

@@ -754,10 +754,12 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
var err error var err error
counter.Total++ counter.Total++
fmt.Printf("Track %d of %d: %s\n", track.TaskNum, track.TaskTotal, track.Type) fmt.Printf("Track %d of %d: %s\n", track.TaskNum, track.TaskTotal, track.Type)
//提前获取到的播放列表下track所在的专辑信息 //提前获取到的播放列表下track所在的专辑信息
if track.PreType == "playlists" && Config.UseSongInfoForPlaylist { if track.PreType == "playlists" && Config.UseSongInfoForPlaylist {
track.GetAlbumData(token) track.GetAlbumData(token)
} }
//mv dl dev //mv dl dev
if track.Type == "music-videos" { if track.Type == "music-videos" {
if len(mediaUserToken) <= 50 { if len(mediaUserToken) <= 50 {
@@ -779,6 +781,7 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
counter.Success++ counter.Success++
return return
} }
needDlAacLc := false needDlAacLc := false
if dl_aac && Config.AacType == "aac-lc" { if dl_aac && Config.AacType == "aac-lc" {
needDlAacLc = true needDlAacLc = true
@@ -858,6 +861,17 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
trackPath := filepath.Join(track.SaveDir, track.SaveName) trackPath := filepath.Join(track.SaveDir, track.SaveName)
lrcFilename := fmt.Sprintf("%s.%s", forbiddenNames.ReplaceAllString(songName, "_"), Config.LrcFormat) lrcFilename := fmt.Sprintf("%s.%s", forbiddenNames.ReplaceAllString(songName, "_"), Config.LrcFormat)
// Determine possible post-conversion target file (so we can skip re-download)
var convertedPath string
considerConverted := false
if Config.ConvertAfterDownload &&
Config.ConvertFormat != "" &&
strings.ToLower(Config.ConvertFormat) != "copy" &&
!Config.ConvertKeepOriginal {
convertedPath = strings.TrimSuffix(trackPath, filepath.Ext(trackPath)) + "." + strings.ToLower(Config.ConvertFormat)
considerConverted = true
}
//get lrc //get lrc
var lrc string = "" var lrc string = ""
if Config.EmbedLrc || Config.SaveLrcFile { if Config.EmbedLrc || Config.SaveLrcFile {
@@ -877,16 +891,27 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
} }
} }
exists, err := fileExists(trackPath) // Existence check now considers converted output (if original was deleted)
existsOriginal, err := fileExists(trackPath)
if err != nil { if err != nil {
fmt.Println("Failed to check if track exists.") fmt.Println("Failed to check if track exists.")
} }
if exists { if existsOriginal {
fmt.Println("Track already exists locally.") fmt.Println("Track already exists locally.")
counter.Success++ counter.Success++
okDict[track.PreID] = append(okDict[track.PreID], track.TaskNum) okDict[track.PreID] = append(okDict[track.PreID], track.TaskNum)
return return
} }
if considerConverted {
existsConverted, err2 := fileExists(convertedPath)
if err2 == nil && existsConverted {
fmt.Println("Converted track already exists locally.")
counter.Success++
okDict[track.PreID] = append(okDict[track.PreID], track.TaskNum)
return
}
}
if needDlAacLc { if needDlAacLc {
if len(mediaUserToken) <= 50 { if len(mediaUserToken) <= 50 {
fmt.Println("Invalid media-user-token") fmt.Println("Invalid media-user-token")