fix backslash
This commit is contained in:
parent
dddc405e39
commit
475061381b
|
@ -8,7 +8,6 @@ using TagFile = TagLib.File;
|
||||||
|
|
||||||
namespace AutoTag.cli {
|
namespace AutoTag.cli {
|
||||||
internal static class AutoTag {
|
internal static class AutoTag {
|
||||||
|
|
||||||
private static void Main(string[] args) {
|
private static void Main(string[] args) {
|
||||||
if (args.Length != 3 || (args[0] != "albums" && args[0] != "playlists")) {
|
if (args.Length != 3 || (args[0] != "albums" && args[0] != "playlists")) {
|
||||||
Console.WriteLine("Usage: autotag <albums/playlists> <inputfolder> <outputfolder>");
|
Console.WriteLine("Usage: autotag <albums/playlists> <inputfolder> <outputfolder>");
|
||||||
|
@ -24,17 +23,21 @@ namespace AutoTag.cli {
|
||||||
|
|
||||||
switch (inputDir.Type) {
|
switch (inputDir.Type) {
|
||||||
case FolderType.Albums: {
|
case FolderType.Albums: {
|
||||||
foreach (var track in Directory.EnumerateFiles(inputDir.Path, "*.*", SearchOption.AllDirectories).Where(IsAllowed)) {
|
foreach (var track in Directory.EnumerateFiles(inputDir.Path, "*.*", SearchOption.AllDirectories)
|
||||||
|
.Where(IsAllowed)) {
|
||||||
Console.WriteLine("<- " + track);
|
Console.WriteLine("<- " + track);
|
||||||
var tagFile = TagFile.Create(track);
|
var tagFile = TagFile.Create(track);
|
||||||
if (tagFile.Tag.AlbumArtists.Length == 0)
|
if (tagFile.Tag.AlbumArtists.Length == 0)
|
||||||
tagFile.Tag.AlbumArtists = new[] {tagFile.Tag.Performers[0]};
|
tagFile.Tag.AlbumArtists = new[] {tagFile.Tag.Performers[0]};
|
||||||
var outputFileDirectory = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]), CleanFileName(tagFile.Tag.Album));
|
var outputFileDirectory = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]),
|
||||||
|
CleanFileName(tagFile.Tag.Album));
|
||||||
Directory.CreateDirectory(outputFileDirectory);
|
Directory.CreateDirectory(outputFileDirectory);
|
||||||
var outputFilePath = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]), CleanFileName(tagFile.Tag.Album),
|
var outputFilePath = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]),
|
||||||
|
CleanFileName(tagFile.Tag.Album),
|
||||||
CleanFileName($"{tagFile.Tag.Track}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}"));
|
CleanFileName($"{tagFile.Tag.Track}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}"));
|
||||||
if (tagFile.Tag.Disc != 0 && tagFile.Tag.Disc != 1) {
|
if (tagFile.Tag.Disc != 0 && tagFile.Tag.Disc != 1) {
|
||||||
outputFilePath = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]), CleanFileName(tagFile.Tag.Album),
|
outputFilePath = Path.Combine(outputDir, CleanFileName(tagFile.Tag.AlbumArtists[0]),
|
||||||
|
CleanFileName(tagFile.Tag.Album),
|
||||||
CleanFileName($"Disc{tagFile.Tag.Disc} - {tagFile.Tag.Track}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}"));
|
CleanFileName($"Disc{tagFile.Tag.Disc} - {tagFile.Tag.Track}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +54,9 @@ namespace AutoTag.cli {
|
||||||
}
|
}
|
||||||
case FolderType.Playlists: {
|
case FolderType.Playlists: {
|
||||||
foreach (var playlist in Directory.GetDirectories(inputDir.Path)) {
|
foreach (var playlist in Directory.GetDirectories(inputDir.Path)) {
|
||||||
var tracks = Directory.EnumerateFiles(playlist, "*.*", SearchOption.AllDirectories).Where(IsAllowed).OrderBy(s => s, new AlphanumComparator());
|
var tracks = Directory.EnumerateFiles(playlist, "*.*", SearchOption.AllDirectories)
|
||||||
|
.Where(IsAllowed)
|
||||||
|
.OrderBy(s => s, new AlphanumComparator());
|
||||||
|
|
||||||
uint i = 1;
|
uint i = 1;
|
||||||
var trackCount = tracks.Count();
|
var trackCount = tracks.Count();
|
||||||
|
@ -60,11 +65,15 @@ namespace AutoTag.cli {
|
||||||
foreach (var track in tracks) {
|
foreach (var track in tracks) {
|
||||||
Console.WriteLine("<- " + track);
|
Console.WriteLine("<- " + track);
|
||||||
var tagFile = TagFile.Create(track);
|
var tagFile = TagFile.Create(track);
|
||||||
var outputFileDirectory = Path.Combine(outputDir, "Various Artists", CleanFileName(playlistName));
|
var outputFileDirectory =
|
||||||
|
Path.Combine(outputDir, "Various Artists", CleanFileName(playlistName));
|
||||||
Directory.CreateDirectory(outputFileDirectory);
|
Directory.CreateDirectory(outputFileDirectory);
|
||||||
|
|
||||||
var outputFilePath = Path.Combine(outputDir, "Various Artists", CleanFileName(playlistName),
|
var outputFilePath = Path.Combine(outputDir, "Various Artists", CleanFileName(playlistName),
|
||||||
CleanFileName((tagFile.Tag.Performers.Length == 0 ? $"{i}. {tagFile.Tag.Title}{Path.GetExtension(track)}" : $"{i}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}")));
|
CleanFileName((tagFile.Tag.Performers.Length == 0
|
||||||
|
? $"{i}. {tagFile.Tag.Title}{Path.GetExtension(track)}"
|
||||||
|
: $"{i}. {tagFile.Tag.Performers[0]} - {tagFile.Tag.Title}{Path.GetExtension(track)}"
|
||||||
|
)));
|
||||||
File.Copy(track, outputFilePath, true);
|
File.Copy(track, outputFilePath, true);
|
||||||
var newTagFile = TagFile.Create(outputFilePath);
|
var newTagFile = TagFile.Create(outputFilePath);
|
||||||
newTagFile.Tag.Comment = null;
|
newTagFile.Tag.Comment = null;
|
||||||
|
@ -108,8 +117,11 @@ namespace AutoTag.cli {
|
||||||
internal static bool IsAllowed(string filename) => AllowedFileTypes.Any(filename.EndsWith);
|
internal static bool IsAllowed(string filename) => AllowedFileTypes.Any(filename.EndsWith);
|
||||||
|
|
||||||
internal static string CleanFileName(string fileName) {
|
internal static string CleanFileName(string fileName) {
|
||||||
return Path.GetInvalidFileNameChars().Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty))
|
return Path.GetInvalidFileNameChars()
|
||||||
.Replace(":", " -");
|
.Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty))
|
||||||
|
.Replace(":", " -")
|
||||||
|
.Replace("\\", " ");
|
||||||
|
|
||||||
//var tempBytes = Encoding.GetEncoding("ISO-8859-8").GetBytes(str);
|
//var tempBytes = Encoding.GetEncoding("ISO-8859-8").GetBytes(str);
|
||||||
//return Encoding.UTF8.GetString(tempBytes);
|
//return Encoding.UTF8.GetString(tempBytes);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue