diff --git a/Output/Languages/de.xml b/Output/Languages/de.xml index 79e97df3..06ea7c6f 100644 --- a/Output/Languages/de.xml +++ b/Output/Languages/de.xml @@ -65,6 +65,7 @@ Artist-Buchstabe Titel-Buchstabe Edition + Tags Genre Jahr Dekade @@ -148,6 +149,7 @@ Ohne Jahr Ohne Genre Ohne Edition + Ohne Tags Alle Songs (%v Lieder) (%v Lied) diff --git a/Output/Languages/en.xml b/Output/Languages/en.xml index b315840e..8ada8fe4 100644 --- a/Output/Languages/en.xml +++ b/Output/Languages/en.xml @@ -65,6 +65,7 @@ Artist by letter Title by letter Edition + Tags Genre Year Decade @@ -148,6 +149,7 @@ No Year No Genre No Edition + No Tags All Songs (%v songs) (%v song) diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs index f464d6d9..152d378a 100644 --- a/Vocaluxe/Base/CCover.cs +++ b/Vocaluxe/Base/CCover.cs @@ -252,6 +252,8 @@ namespace Vocaluxe.Base return ECoverGeneratorType.Edition; case ESongSorting.TR_CONFIG_GENRE: return ECoverGeneratorType.Genre; + case ESongSorting.TR_CONFIG_TAGS: + return ECoverGeneratorType.Tags; case ESongSorting.TR_CONFIG_LANGUAGE: return ECoverGeneratorType.Language; case ESongSorting.TR_CONFIG_YEAR: diff --git a/Vocaluxe/Base/CSongCategorizer.cs b/Vocaluxe/Base/CSongCategorizer.cs index 05a9dba4..8354cd3f 100644 --- a/Vocaluxe/Base/CSongCategorizer.cs +++ b/Vocaluxe/Base/CSongCategorizer.cs @@ -142,6 +142,9 @@ namespace Vocaluxe.Base case ESongSorting.TR_CONFIG_GENRE: noCategoryName = CLanguage.Translate("TR_SCREENSONG_NOGENRE"); break; + case ESongSorting.TR_CONFIG_TAGS: + noCategoryName = CLanguage.Translate("TR_SCREENSONG_NOTAGS"); + break; case ESongSorting.TR_CONFIG_LANGUAGE: noCategoryName = CLanguage.Translate("TR_SCREENSONG_NOLANGUAGE"); break; @@ -186,4 +189,4 @@ namespace Vocaluxe.Base _Changed = false; } } -} \ No newline at end of file +} diff --git a/Vocaluxe/Base/CSongSorter.cs b/Vocaluxe/Base/CSongSorter.cs index d4b59f13..cc253c0b 100644 --- a/Vocaluxe/Base/CSongSorter.cs +++ b/Vocaluxe/Base/CSongSorter.cs @@ -154,6 +154,9 @@ namespace Vocaluxe.Base case ESongSorting.TR_CONFIG_GENRE: values = song.Genres; break; + case ESongSorting.TR_CONFIG_TAGS: + values = song.Tags; + break; case ESongSorting.TR_CONFIG_LANGUAGE: values = song.Languages; break; diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs index d73741e2..018b3d68 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -28,6 +28,7 @@ namespace VocaluxeLib Letter, Edition, Genre, + Tags, Language, Year, Decade, @@ -233,6 +234,7 @@ namespace VocaluxeLib TR_CONFIG_TITLE_LETTER, TR_CONFIG_EDITION, TR_CONFIG_GENRE, + TR_CONFIG_TAGS, TR_CONFIG_LANGUAGE, TR_CONFIG_YEAR, TR_CONFIG_DECADE, diff --git a/VocaluxeLib/Songs/CSong.cs b/VocaluxeLib/Songs/CSong.cs index dfef5a99..3dfacbc7 100644 --- a/VocaluxeLib/Songs/CSong.cs +++ b/VocaluxeLib/Songs/CSong.cs @@ -89,7 +89,7 @@ namespace VocaluxeLib.Songs public SShortEnd ShortEnd; - public Encoding Encoding = Encoding.Default; + public Encoding Encoding = new UTF8Encoding(); public bool ManualEncoding; public string Folder = String.Empty; public string FolderName = String.Empty; @@ -169,6 +169,7 @@ namespace VocaluxeLib.Songs public readonly List Editions = new List(); public readonly List Genres = new List(); + public readonly List Tags = new List(); public string Album = ""; public string Year = ""; @@ -263,6 +264,7 @@ namespace VocaluxeLib.Songs Editions = new List(song.Editions); Genres = new List(song.Genres); + Tags = new List(song.Tags); Album = song.Album; Year = song.Year; diff --git a/VocaluxeLib/Songs/CSongLoader.cs b/VocaluxeLib/Songs/CSongLoader.cs index beebe242..4542aec7 100644 --- a/VocaluxeLib/Songs/CSongLoader.cs +++ b/VocaluxeLib/Songs/CSongLoader.cs @@ -210,6 +210,12 @@ namespace VocaluxeLib.Songs else CLog.CSongLog.Warning("[{SongFileName}] Invalid genre: {Value}", CLog.Params(_Song.FileName, value)); break; + case "TAGS": + if (value.Length > 1) + _Song.Tags.AddRange(value.Split(',')); + else + CLog.CSongLog.Warning("[{SongFileName}] Invalid tags: {Value}", CLog.Params(_Song.FileName, value)); + break; case "ALBUM": _Song.Album = value; break; diff --git a/VocaluxeLib/Songs/CSongWriter.cs b/VocaluxeLib/Songs/CSongWriter.cs index 957905e3..f9a7591f 100644 --- a/VocaluxeLib/Songs/CSongWriter.cs +++ b/VocaluxeLib/Songs/CSongWriter.cs @@ -88,6 +88,7 @@ namespace VocaluxeLib.Songs _WriteHeaderEntry("ARTIST-ON-SORTING", _Song.ArtistSorting); _WriteHeaderEntrys("EDITION", _Song.Editions); _WriteHeaderEntrys("GENRE", _Song.Genres); + _WriteHeaderEntry("TAGS", String.Join(",", _Song.Tags.ToArray())); _WriteHeaderEntrys("LANGUAGE", _Song.Languages); _WriteHeaderEntry("ALBUM", _Song.Album); _WriteHeaderEntry("YEAR", _Song.Year); diff --git a/appveyor.yml b/appveyor.yml index 0a3fe02e..436c40d8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,13 +46,16 @@ before_build: Try { - Start-FileDownload 'https://github.com/lukeIam/VocaluxeDependencies/blob/master/zips/themes/vocaluxe.themes.genius.video.zip?raw=true' - & 7z x '-aoa' '-oOutput/' './vocaluxe.themes.genius.video.zip' - Remove-Item './vocaluxe.themes.genius.video.zip' + Start-FileDownload 'https://github.com/Vocaluxe/VocaluxeDependencies/raw/master/zips/themes/vocaluxe.themes.vocaluxe-2024.video-part1.zip' + & 7z x '-aoa' '-oOutput/' './vocaluxe.themes.vocaluxe-2024.video-part1.zip' + Start-FileDownload 'https://github.com/Vocaluxe/VocaluxeDependencies/raw/master/zips/themes/vocaluxe.themes.vocaluxe-2024.video-part2.zip' + & 7z x '-aoa' '-oOutput/' './vocaluxe.themes.vocaluxe-2024.video-part2.zip' + Remove-Item './vocaluxe.themes.vocaluxe-2024.video-part1.zip' + Remove-Item './vocaluxe.themes.vocaluxe-2024.video-part2.zip' } Catch { - Write-Warning "Genius-Video download failed" + Write-Warning "Theme-Video download failed" } nuget restore -DisableParallelProcessing @@ -156,4 +159,4 @@ deploy: on: APPVEYOR_REPO_TAG: true NIGHTLY_BUILD: true - MAIN_REPO: true \ No newline at end of file + MAIN_REPO: true