fix playlist dl

pull/22/head
zhaarey 4 months ago
parent 2373452bf2
commit 85629866b6
  1. 2
      config.yaml
  2. 23
      main.go
  3. 26
      main_atmos.go
  4. 23
      main_select.go

@ -14,6 +14,8 @@ atmos-max: 2768 #2768 2448
#{AlbumId} {AlbumName} {ArtistName} {ReleaseDate} {ReleaseYear} {UPC} {Copyright} {Quality} #{AlbumId} {AlbumName} {ArtistName} {ReleaseDate} {ReleaseYear} {UPC} {Copyright} {Quality}
#example: {ReleaseYear} - {ArtistName} - {AlbumName}({AlbumId})({UPC})({Copyright}) #example: {ReleaseYear} - {ArtistName} - {AlbumName}({AlbumId})({UPC})({Copyright})
album-folder-format: "{AlbumName}" album-folder-format: "{AlbumName}"
#{PlaylistId} {PlaylistName} {ArtistName} {Quality}
playlist-folder-format: "{PlaylistName}"
#{SongId} {SongNumer} {SongName} {DiscNumber} {TrackNumber} {Quality} #{SongId} {SongNumer} {SongName} {DiscNumber} {TrackNumber} {Quality}
#example: Disk {DiscNumber} - Track {TrackNumber} {SongName} [{Quality}]" #example: Disk {DiscNumber} - Track {TrackNumber} {SongName} [{Quality}]"
song-file-format: "{SongNumer}. {SongName}" song-file-format: "{SongNumer}. {SongName}"

@ -46,6 +46,7 @@ type Config struct {
AlacSaveFolder string `yaml:"alac-save-folder"` AlacSaveFolder string `yaml:"alac-save-folder"`
AtmosSaveFolder string `yaml:"atmos-save-folder"` AtmosSaveFolder string `yaml:"atmos-save-folder"`
AlbumFolderFormat string `yaml:"album-folder-format"` AlbumFolderFormat string `yaml:"album-folder-format"`
PlaylistFolderFormat string `yaml:"playlist-folder-format"`
ArtistFolderFormat string `yaml:"artist-folder-format"` ArtistFolderFormat string `yaml:"artist-folder-format"`
SongFileFormat string `yaml:"song-file-format"` SongFileFormat string `yaml:"song-file-format"`
ExplicitChoice string `yaml:"explicit-choice"` ExplicitChoice string `yaml:"explicit-choice"`
@ -1163,10 +1164,18 @@ func rip(albumId string, token string, storefront string, userToken string) erro
} }
singerFolder:="" singerFolder:=""
if config.ArtistFolderFormat != ""{ if config.ArtistFolderFormat != ""{
singerFoldername := strings.NewReplacer( var singerFoldername string
if strings.Contains(albumId, "pl.") {
singerFoldername = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{ArtistId}", "",
).Replace(config.ArtistFolderFormat)
}else{
singerFoldername = strings.NewReplacer(
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
"{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID, "{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID,
).Replace(config.ArtistFolderFormat) ).Replace(config.ArtistFolderFormat)
}
if strings.HasSuffix(singerFoldername, ".") { if strings.HasSuffix(singerFoldername, ".") {
singerFoldername = strings.ReplaceAll(singerFoldername, ".", "") singerFoldername = strings.ReplaceAll(singerFoldername, ".", "")
} }
@ -1192,7 +1201,16 @@ func rip(albumId string, token string, storefront string, userToken string) erro
fmt.Println("Failed to extract quality from manifest.\n", err) fmt.Println("Failed to extract quality from manifest.\n", err)
} }
} }
albumFolder := strings.NewReplacer( var albumFolder string
if strings.Contains(albumId, "pl.") {
albumFolder = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{PlaylistName}", meta.Data[0].Attributes.Name,
"{PlaylistId}", albumId,
"{Quality}",Quality,
).Replace(config.PlaylistFolderFormat)
}else{
albumFolder = strings.NewReplacer(
"{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate, "{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate,
"{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4], "{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4],
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
@ -1202,6 +1220,7 @@ func rip(albumId string, token string, storefront string, userToken string) erro
"{AlbumId}", albumId, "{AlbumId}", albumId,
"{Quality}", Quality, "{Quality}", Quality,
).Replace(config.AlbumFolderFormat) ).Replace(config.AlbumFolderFormat)
}
if meta.Data[0].Attributes.IsMasteredForItunes{ if meta.Data[0].Attributes.IsMasteredForItunes{
if config.AppleMasterChoice != ""{ if config.AppleMasterChoice != ""{
albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice) albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice)

@ -45,6 +45,7 @@ type Config struct {
AlacSaveFolder string `yaml:"alac-save-folder"` AlacSaveFolder string `yaml:"alac-save-folder"`
AtmosSaveFolder string `yaml:"atmos-save-folder"` AtmosSaveFolder string `yaml:"atmos-save-folder"`
AlbumFolderFormat string `yaml:"album-folder-format"` AlbumFolderFormat string `yaml:"album-folder-format"`
PlaylistFolderFormat string `yaml:"playlist-folder-format"`
ArtistFolderFormat string `yaml:"artist-folder-format"` ArtistFolderFormat string `yaml:"artist-folder-format"`
SongFileFormat string `yaml:"song-file-format"` SongFileFormat string `yaml:"song-file-format"`
ExplicitChoice string `yaml:"explicit-choice"` ExplicitChoice string `yaml:"explicit-choice"`
@ -1123,10 +1124,18 @@ func rip(albumId string, token string, storefront string, userToken string) erro
} }
singerFolder:="" singerFolder:=""
if config.ArtistFolderFormat != ""{ if config.ArtistFolderFormat != ""{
singerFoldername := strings.NewReplacer( var singerFoldername string
if strings.Contains(albumId, "pl.") {
singerFoldername = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{ArtistId}", "",
).Replace(config.ArtistFolderFormat)
}else{
singerFoldername = strings.NewReplacer(
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
"{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID, "{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID,
).Replace(config.ArtistFolderFormat) ).Replace(config.ArtistFolderFormat)
}
if strings.HasSuffix(singerFoldername, ".") { if strings.HasSuffix(singerFoldername, ".") {
singerFoldername = strings.ReplaceAll(singerFoldername, ".", "") singerFoldername = strings.ReplaceAll(singerFoldername, ".", "")
} }
@ -1134,7 +1143,16 @@ func rip(albumId string, token string, storefront string, userToken string) erro
fmt.Println(singerFoldername) fmt.Println(singerFoldername)
singerFolder = filepath.Join(config.AlacSaveFolder, forbiddenNames.ReplaceAllString(singerFoldername, "_")) singerFolder = filepath.Join(config.AlacSaveFolder, forbiddenNames.ReplaceAllString(singerFoldername, "_"))
} }
albumFolder := strings.NewReplacer( var albumFolder string
if strings.Contains(albumId, "pl.") {
albumFolder = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{PlaylistName}", meta.Data[0].Attributes.Name,
"{PlaylistId}", albumId,
"{Quality}","Atmos",
).Replace(config.PlaylistFolderFormat)
}else{
albumFolder = strings.NewReplacer(
"{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate, "{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate,
"{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4], "{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4],
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
@ -1142,8 +1160,9 @@ func rip(albumId string, token string, storefront string, userToken string) erro
"{UPC}", meta.Data[0].Attributes.Upc, "{UPC}", meta.Data[0].Attributes.Upc,
"{Copyright}", meta.Data[0].Attributes.Copyright, "{Copyright}", meta.Data[0].Attributes.Copyright,
"{AlbumId}", albumId, "{AlbumId}", albumId,
"{Quality}","", "{Quality}","Atmos",
).Replace(config.AlbumFolderFormat) ).Replace(config.AlbumFolderFormat)
}
if meta.Data[0].Attributes.IsMasteredForItunes{ if meta.Data[0].Attributes.IsMasteredForItunes{
if config.AppleMasterChoice != ""{ if config.AppleMasterChoice != ""{
albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice) albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice)
@ -1159,7 +1178,6 @@ func rip(albumId string, token string, storefront string, userToken string) erro
albumFolder = fmt.Sprintf("%s %s", albumFolder,config.CleanChoice) albumFolder = fmt.Sprintf("%s %s", albumFolder,config.CleanChoice)
} }
} }
albumFolder = fmt.Sprintf("%s [Atmos]", albumFolder)
if strings.HasSuffix(albumFolder, ".") { if strings.HasSuffix(albumFolder, ".") {
albumFolder = strings.ReplaceAll(albumFolder, ".", "") albumFolder = strings.ReplaceAll(albumFolder, ".", "")
} }

@ -46,6 +46,7 @@ type Config struct {
AlacSaveFolder string `yaml:"alac-save-folder"` AlacSaveFolder string `yaml:"alac-save-folder"`
AtmosSaveFolder string `yaml:"atmos-save-folder"` AtmosSaveFolder string `yaml:"atmos-save-folder"`
AlbumFolderFormat string `yaml:"album-folder-format"` AlbumFolderFormat string `yaml:"album-folder-format"`
PlaylistFolderFormat string `yaml:"playlist-folder-format"`
ArtistFolderFormat string `yaml:"artist-folder-format"` ArtistFolderFormat string `yaml:"artist-folder-format"`
SongFileFormat string `yaml:"song-file-format"` SongFileFormat string `yaml:"song-file-format"`
ExplicitChoice string `yaml:"explicit-choice"` ExplicitChoice string `yaml:"explicit-choice"`
@ -1126,10 +1127,18 @@ func rip(albumId string, token string, storefront string, userToken string) erro
} }
singerFolder:="" singerFolder:=""
if config.ArtistFolderFormat != ""{ if config.ArtistFolderFormat != ""{
singerFoldername := strings.NewReplacer( var singerFoldername string
if strings.Contains(albumId, "pl.") {
singerFoldername = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{ArtistId}", "",
).Replace(config.ArtistFolderFormat)
}else{
singerFoldername = strings.NewReplacer(
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
"{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID, "{ArtistId}", meta.Data[0].Relationships.Artists.Data[0].ID,
).Replace(config.ArtistFolderFormat) ).Replace(config.ArtistFolderFormat)
}
if strings.HasSuffix(singerFoldername, ".") { if strings.HasSuffix(singerFoldername, ".") {
singerFoldername = strings.ReplaceAll(singerFoldername, ".", "") singerFoldername = strings.ReplaceAll(singerFoldername, ".", "")
} }
@ -1137,7 +1146,16 @@ func rip(albumId string, token string, storefront string, userToken string) erro
fmt.Println(singerFoldername) fmt.Println(singerFoldername)
singerFolder = filepath.Join(config.AlacSaveFolder, forbiddenNames.ReplaceAllString(singerFoldername, "_")) singerFolder = filepath.Join(config.AlacSaveFolder, forbiddenNames.ReplaceAllString(singerFoldername, "_"))
} }
albumFolder := strings.NewReplacer( var albumFolder string
if strings.Contains(albumId, "pl.") {
albumFolder = strings.NewReplacer(
"{ArtistName}", "Apple Music",
"{PlaylistName}", meta.Data[0].Attributes.Name,
"{PlaylistId}", albumId,
"{Quality}","",
).Replace(config.PlaylistFolderFormat)
}else{
albumFolder = strings.NewReplacer(
"{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate, "{ReleaseDate}", meta.Data[0].Attributes.ReleaseDate,
"{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4], "{ReleaseYear}", meta.Data[0].Attributes.ReleaseDate[:4],
"{ArtistName}", meta.Data[0].Attributes.ArtistName, "{ArtistName}", meta.Data[0].Attributes.ArtistName,
@ -1147,6 +1165,7 @@ func rip(albumId string, token string, storefront string, userToken string) erro
"{AlbumId}", albumId, "{AlbumId}", albumId,
"{Quality}", "", "{Quality}", "",
).Replace(config.AlbumFolderFormat) ).Replace(config.AlbumFolderFormat)
}
if meta.Data[0].Attributes.IsMasteredForItunes{ if meta.Data[0].Attributes.IsMasteredForItunes{
if config.AppleMasterChoice != ""{ if config.AppleMasterChoice != ""{
albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice) albumFolder = fmt.Sprintf("%s %s", albumFolder,config.AppleMasterChoice)

Loading…
Cancel
Save