fix: mv tag panic,artist cover miss

This commit is contained in:
itouakirai
2025-03-05 07:44:27 +08:00
parent 56d37ccce7
commit 8f284cadea
2 changed files with 26 additions and 20 deletions

36
main.go
View File

@@ -406,7 +406,10 @@ 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所在的专辑信息
if track.PreType == "playlists" && Config.UseSongInfoForPlaylist {
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 {
@@ -419,10 +422,6 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
counter.Success++ counter.Success++
return return
} }
//提前获取到的播放列表下track所在的专辑信息
if track.PreType == "playlists" && Config.UseSongInfoForPlaylist {
track.GetAlbumData(token)
}
err := mvDownloader(track.ID, track.SaveDir, token, track.Storefront, mediaUserToken, track) err := mvDownloader(track.ID, track.SaveDir, token, track.Storefront, mediaUserToken, track)
if err != nil { if err != nil {
fmt.Println("\u26A0 Failed to dl MV:", err) fmt.Println("\u26A0 Failed to dl MV:", err)
@@ -436,7 +435,7 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
if dl_aac && Config.AacType == "aac-lc" { if dl_aac && Config.AacType == "aac-lc" {
needDlAacLc = true needDlAacLc = true
} }
if track.WebM3u8 == "" { if track.WebM3u8 == "" && !needDlAacLc {
if dl_atmos { if dl_atmos {
fmt.Println("Unavailable") fmt.Println("Unavailable")
counter.Unavailable++ counter.Unavailable++
@@ -549,7 +548,7 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
_, err := runv3.Run(track.ID, trackPath, token, mediaUserToken, false) _, err := runv3.Run(track.ID, trackPath, token, mediaUserToken, false)
if err != nil { if err != nil {
fmt.Println("Failed to dl aac-lc:", err) fmt.Println("Failed to dl aac-lc:", err)
if err.Error() == "Unavailable"{ if err.Error() == "Unavailable" {
counter.Unavailable++ counter.Unavailable++
return return
} }
@@ -600,10 +599,6 @@ func ripTrack(track *task.Track, token string, mediaUserToken string) {
} }
} }
track.SavePath = trackPath track.SavePath = trackPath
//提前获取到的播放列表下track所在的专辑信息
if track.PreType == "playlists" && Config.UseSongInfoForPlaylist {
track.GetAlbumData(token)
}
err = writeMP4Tags(track, lrc) err = writeMP4Tags(track, lrc)
if err != nil { if err != nil {
fmt.Println("\u26A0 Failed to write tags in media:", err) fmt.Println("\u26A0 Failed to write tags in media:", err)
@@ -724,7 +719,7 @@ func ripStation(albumId string, token string, storefront string, mediaUserToken
"{SongNumer}", "01", "{SongNumer}", "01",
"{SongName}", LimitString(station.Name), "{SongName}", LimitString(station.Name),
"{DiscNumber}", "1", "{DiscNumber}", "1",
"{TrackNumber}", "01", "{TrackNumber}", "1",
"{Quality}", "256Kbps", "{Quality}", "256Kbps",
"{Tag}", "", "{Tag}", "",
"{Codec}", "AAC", "{Codec}", "AAC",
@@ -985,7 +980,15 @@ func ripAlbum(albumId string, token string, storefront string, mediaUserToken st
os.MkdirAll(albumFolderPath, os.ModePerm) // Create album folder os.MkdirAll(albumFolderPath, os.ModePerm) // Create album folder
album.SaveName = albumFolderName album.SaveName = albumFolderName
fmt.Println(albumFolderName) fmt.Println(albumFolderName)
//先省略封面相关的获取 //get artist cover
if Config.SaveArtistCover {
if len(meta.Data[0].Relationships.Artists.Data) > 0 {
_, err = writeCover(singerFolder, "folder", meta.Data[0].Relationships.Artists.Data[0].Attributes.Artwork.Url)
if err != nil {
fmt.Println("Failed to write artist cover.")
}
}
}
//get playlist cover //get playlist cover
covPath, err := writeCover(albumFolderPath, "cover", meta.Data[0].Attributes.Artwork.URL) covPath, err := writeCover(albumFolderPath, "cover", meta.Data[0].Attributes.Artwork.URL)
if err != nil { if err != nil {
@@ -1405,9 +1408,7 @@ func writeMP4Tags(track *task.Track, lrc string) error {
t.AlbumArtist = track.PlaylistData.Attributes.ArtistName t.AlbumArtist = track.PlaylistData.Attributes.ArtistName
t.AlbumArtistSort = track.PlaylistData.Attributes.ArtistName t.AlbumArtistSort = track.PlaylistData.Attributes.ArtistName
} else if (track.PreType == "playlists" || track.PreType == "stations") && Config.UseSongInfoForPlaylist { } else if (track.PreType == "playlists" || track.PreType == "stations") && Config.UseSongInfoForPlaylist {
//使用提前获取到的播放列表下track所在的专辑信息 t.DiscTotal = int16(track.DiscTotal)
len := len(track.AlbumData.Relationships.Tracks.Data)
t.DiscTotal = int16(track.AlbumData.Relationships.Tracks.Data[len-1].Attributes.DiscNumber)
t.TrackTotal = int16(track.AlbumData.Attributes.TrackCount) t.TrackTotal = int16(track.AlbumData.Attributes.TrackCount)
t.AlbumArtist = track.AlbumData.Attributes.ArtistName t.AlbumArtist = track.AlbumData.Attributes.ArtistName
t.AlbumArtistSort = track.AlbumData.Attributes.ArtistName t.AlbumArtistSort = track.AlbumData.Attributes.ArtistName
@@ -1693,8 +1694,7 @@ func mvDownloader(adamID string, saveDir string, token string, storefront string
//tags = append(tags, fmt.Sprintf("UPC=%s", track.PlaylistData.Attributes.Upc)) //tags = append(tags, fmt.Sprintf("UPC=%s", track.PlaylistData.Attributes.Upc))
} else if track.PreType == "playlists" && Config.UseSongInfoForPlaylist { } else if track.PreType == "playlists" && Config.UseSongInfoForPlaylist {
tags = append(tags, fmt.Sprintf("album=%s", track.AlbumData.Attributes.Name)) tags = append(tags, fmt.Sprintf("album=%s", track.AlbumData.Attributes.Name))
len := len(track.AlbumData.Relationships.Tracks.Data) tags = append(tags, fmt.Sprintf("disk=%d/%d", track.Resp.Attributes.DiscNumber, track.DiscTotal))
tags = append(tags, fmt.Sprintf("disk=%d/%d", track.Resp.Attributes.DiscNumber, track.AlbumData.Relationships.Tracks.Data[len-1].Attributes.DiscNumber))
tags = append(tags, fmt.Sprintf("track=%d", track.Resp.Attributes.TrackNumber)) tags = append(tags, fmt.Sprintf("track=%d", track.Resp.Attributes.TrackNumber))
tags = append(tags, fmt.Sprintf("tracknum=%d/%d", track.Resp.Attributes.TrackNumber, track.AlbumData.Attributes.TrackCount)) tags = append(tags, fmt.Sprintf("tracknum=%d/%d", track.Resp.Attributes.TrackNumber, track.AlbumData.Attributes.TrackCount))
tags = append(tags, fmt.Sprintf("album_artist=%s", track.AlbumData.Attributes.ArtistName)) tags = append(tags, fmt.Sprintf("album_artist=%s", track.AlbumData.Attributes.ArtistName))

View File

@@ -38,7 +38,13 @@ func (t *Track) GetAlbumData(token string) error {
return err return err
} }
t.AlbumData = resp.Data[0] t.AlbumData = resp.Data[0]
//len := len(resp.Data[0].Relationships.Tracks.Data) //尝试获取该track所在album的disk总数
//t.DiscTotal = resp.Data[0].Relationships.Tracks.Data[len-1].Attributes.DiscNumber if len(resp.Data) > 0 {
len := len(resp.Data[0].Relationships.Tracks.Data)
if len > 0 {
t.DiscTotal = resp.Data[0].Relationships.Tracks.Data[len-1].Attributes.DiscNumber
}
}
return nil return nil
} }