Better handle multiple tags respecting US format (#878)
* Better handle multiple tags respecting US format Based on unversioned, V1 & V2 of US formats : https://github.com/UltraStar-Deluxe/format Should address #623 Creator now takes multiple values Maintain backward compatibility * Update file path properties to match US formats
This commit is contained in:
1 parent
cae67eb4ab
commit
1bba340cf8
10 files changed
+97
-160
No files matched your search
@@ -16,6 +16,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using VocaluxeLib.Log;
|
||||
@@ -180,11 +181,6 @@ namespace VocaluxeLib.Songs
|
||||
case "ARTIST-ON-SORTING":
|
||||
_Song.ArtistSorting = value;
|
||||
break;
|
||||
case "CREATOR":
|
||||
case "AUTHOR":
|
||||
case "AUTOR":
|
||||
_Song.Creator = value;
|
||||
break;
|
||||
case "VERSION":
|
||||
_Song.Version = value;
|
||||
break;
|
||||
@@ -200,7 +196,7 @@ namespace VocaluxeLib.Songs
|
||||
case "AUDIO":
|
||||
if (File.Exists(Path.Combine(_Song.Folder, value)))
|
||||
{
|
||||
_Song.MP3FileName = value;
|
||||
_Song.Audio = value;
|
||||
headerFlags |= EHeaderFlags.MP3;
|
||||
}
|
||||
else
|
||||
@@ -213,7 +209,7 @@ namespace VocaluxeLib.Songs
|
||||
case "INSTRUMENTAL":
|
||||
if (File.Exists(Path.Combine(_Song.Folder, value)))
|
||||
{
|
||||
_Song.InstrumentalFileName = value;
|
||||
_Song.Instrumental = value;
|
||||
headerFlags |= EHeaderFlags.Instrumental;
|
||||
}
|
||||
else
|
||||
@@ -227,7 +223,7 @@ namespace VocaluxeLib.Songs
|
||||
case "VOCALS":
|
||||
if (File.Exists(Path.Combine(_Song.Folder, value)))
|
||||
{
|
||||
_Song.VocalsFileName = value;
|
||||
_Song.Vocals = value;
|
||||
headerFlags |= EHeaderFlags.Vocals;
|
||||
}
|
||||
else
|
||||
@@ -249,39 +245,23 @@ namespace VocaluxeLib.Songs
|
||||
CLog.CSongLog.Warning("[{SongFileName}] Invalid BPM value: {Value}", CLog.Params(_Song.FileName, value));
|
||||
}
|
||||
|
||||
break;
|
||||
case "CREATOR":
|
||||
case "AUTHOR":
|
||||
case "AUTOR":
|
||||
_Song.Creators.AddRange(_GetMultipleHeaderValues(value));
|
||||
break;
|
||||
case "EDITION":
|
||||
if (value.Length > 1)
|
||||
{
|
||||
_Song.Editions.Add(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLog.CSongLog.Warning("[{SongFileName}] Invalid edition: {Value}", CLog.Params(_Song.FileName, value));
|
||||
}
|
||||
|
||||
_Song.Editions.AddRange(_GetMultipleHeaderValues(value));
|
||||
break;
|
||||
case "GENRE":
|
||||
if (value.Length > 1)
|
||||
{
|
||||
_Song.Genres.Add(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLog.CSongLog.Warning("[{SongFileName}] Invalid genre: {Value}", CLog.Params(_Song.FileName, value));
|
||||
}
|
||||
|
||||
_Song.Genres.AddRange(_GetMultipleHeaderValues(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));
|
||||
}
|
||||
|
||||
_Song.Tags.AddRange(_GetMultipleHeaderValues(value));
|
||||
break;
|
||||
case "LANGUAGE":
|
||||
_Song.Languages.AddRange(_GetMultipleHeaderValues(value).Select(_UnifyLanguage));
|
||||
break;
|
||||
case "ALBUM":
|
||||
_Song.Album = value;
|
||||
@@ -297,17 +277,6 @@ namespace VocaluxeLib.Songs
|
||||
CLog.CSongLog.Warning("[{SongFileName}] Invalid year: {Value}", CLog.Params(_Song.FileName, value));
|
||||
}
|
||||
|
||||
break;
|
||||
case "LANGUAGE":
|
||||
if (value.Length > 1)
|
||||
{
|
||||
_Song.Languages.Add(_UnifyLanguage(value));
|
||||
}
|
||||
else
|
||||
{
|
||||
CLog.CSongLog.Warning("[{SongFileName}] Invalid language: {Value}", CLog.Params(_Song.FileName, value));
|
||||
}
|
||||
|
||||
break;
|
||||
case "COMMENT":
|
||||
if (!string.IsNullOrEmpty(_Song._Comment))
|
||||
@@ -331,7 +300,7 @@ namespace VocaluxeLib.Songs
|
||||
case "COVER":
|
||||
if (File.Exists(Path.Combine(_Song.Folder, value)))
|
||||
{
|
||||
_Song.CoverFileName = value;
|
||||
_Song.Cover = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -354,7 +323,7 @@ namespace VocaluxeLib.Songs
|
||||
case "VIDEO":
|
||||
if (File.Exists(Path.Combine(_Song.Folder, value)))
|
||||
{
|
||||
_Song.VideoFileName = value;
|
||||
_Song.Video = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -597,6 +566,11 @@ namespace VocaluxeLib.Songs
|
||||
return true;
|
||||
}
|
||||
|
||||
private IEnumerable<string> _GetMultipleHeaderValues(string value)
|
||||
{
|
||||
return value.Split(',').Select(v => v.Trim()).Where(v => !string.IsNullOrEmpty(v));
|
||||
}
|
||||
|
||||
private static string _UnifyLanguage(string lang)
|
||||
{
|
||||
if (lang != "")
|
||||
|
||||
Reference in new issue
Block a user