mirror of
https://github.com/fiso64/slsk-batchdl.git
synced 2024-12-22 14:32:40 +00:00
csv parse bug
This commit is contained in:
parent
ae2b330891
commit
9d1c0de2fd
1 changed files with 8 additions and 9 deletions
|
@ -186,7 +186,7 @@ static class Program
|
||||||
"\n -n --number <maxtracks> Download the first n tracks of a playlist" +
|
"\n -n --number <maxtracks> Download the first n tracks of a playlist" +
|
||||||
"\n -o --offset <offset> Skip a specified number of tracks" +
|
"\n -o --offset <offset> Skip a specified number of tracks" +
|
||||||
"\n --reverse Download tracks in reverse order" +
|
"\n --reverse Download tracks in reverse order" +
|
||||||
"\n --remove-from-playlist Remove downloaded tracks from playlist (for spotify only)" +
|
"\n --remove-from-playlist Remove downloaded tracks from playlist (spotify only)" +
|
||||||
"\n --name-format <format> Name format for downloaded tracks, e.g \"{artist} - {title}\"" +
|
"\n --name-format <format> Name format for downloaded tracks, e.g \"{artist} - {title}\"" +
|
||||||
"\n --m3u Create an m3u8 playlist file" +
|
"\n --m3u Create an m3u8 playlist file" +
|
||||||
"\n" +
|
"\n" +
|
||||||
|
@ -210,7 +210,7 @@ static class Program
|
||||||
"\n --pref-banned-users <list> Comma-separated list of users to deprioritize" +
|
"\n --pref-banned-users <list> Comma-separated list of users to deprioritize" +
|
||||||
"\n --pref-danger-words <list> Comma-separated list of words that should appear in either" +
|
"\n --pref-danger-words <list> Comma-separated list of words that should appear in either" +
|
||||||
"\n both search result and track title or in neither of the" +
|
"\n both search result and track title or in neither of the" +
|
||||||
"\n two. (default: see github)" +
|
"\n two. (default: \"mix,dj , edit,cover\")" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"\n -s --skip-existing Skip if a track matching file conditions is found in the" +
|
"\n -s --skip-existing Skip if a track matching file conditions is found in the" +
|
||||||
"\n output folder or your music library (if provided)" +
|
"\n output folder or your music library (if provided)" +
|
||||||
|
@ -224,7 +224,7 @@ static class Program
|
||||||
"\n during the last run." +
|
"\n during the last run." +
|
||||||
"\n --remove-ft Remove \"ft.\" or \"feat.\" and everything after from the" +
|
"\n --remove-ft Remove \"ft.\" or \"feat.\" and everything after from the" +
|
||||||
"\n track names before searching" +
|
"\n track names before searching" +
|
||||||
"\n --remove-regex <regex> Remove a regex from all track names and artist names " +
|
"\n --remove-regex <regex> Remove a regex from all track titles and artist names" +
|
||||||
"\n --no-artist-search Perform a search without artist name if nothing was" +
|
"\n --no-artist-search Perform a search without artist name if nothing was" +
|
||||||
"\n found. Only use for sources such as youtube or soundcloud" +
|
"\n found. Only use for sources such as youtube or soundcloud" +
|
||||||
"\n where the \"artist\" could just be an uploader." +
|
"\n where the \"artist\" could just be an uploader." +
|
||||||
|
@ -234,7 +234,7 @@ static class Program
|
||||||
"\n --yt-dlp Use yt-dlp to download tracks that weren't found on" +
|
"\n --yt-dlp Use yt-dlp to download tracks that weren't found on" +
|
||||||
"\n Soulseek. yt-dlp must be available from the command line." +
|
"\n Soulseek. yt-dlp must be available from the command line." +
|
||||||
"\n" +
|
"\n" +
|
||||||
"\n --config <path> Specify config file location" +
|
"\n --config <path> Manually specify config file location" +
|
||||||
"\n --search-timeout <ms> Max search time in ms (default: 6000)" +
|
"\n --search-timeout <ms> Max search time in ms (default: 6000)" +
|
||||||
"\n --max-stale-time <ms> Max download time without progress in ms (default: 50000)" +
|
"\n --max-stale-time <ms> Max download time without progress in ms (default: 50000)" +
|
||||||
"\n --concurrent-downloads <num> Max concurrent searches & downloads (default: 2)" +
|
"\n --concurrent-downloads <num> Max concurrent searches & downloads (default: 2)" +
|
||||||
|
@ -786,7 +786,7 @@ static class Program
|
||||||
var d = RemoveTracksIfExist(tracks, musicDir, necessaryCond, useTagsCheckExisting, preciseSkip);
|
var d = RemoveTracksIfExist(tracks, musicDir, necessaryCond, useTagsCheckExisting, preciseSkip);
|
||||||
d.ToList().ForEach(x => existing.TryAdd(x.Key, x.Value));
|
d.ToList().ForEach(x => existing.TryAdd(x.Key, x.Value));
|
||||||
}
|
}
|
||||||
else if (!System.IO.Directory.Exists(musicDir))
|
else if (musicDir != "" && !System.IO.Directory.Exists(musicDir))
|
||||||
Console.WriteLine($"Path does not exist: {musicDir}");
|
Console.WriteLine($"Path does not exist: {musicDir}");
|
||||||
|
|
||||||
foreach (var x in existing)
|
foreach (var x in existing)
|
||||||
|
@ -1932,9 +1932,8 @@ static class Program
|
||||||
|
|
||||||
|
|
||||||
static async Task<List<Track>> ParseCsvIntoTrackInfo(string path, string? artistCol = "", string? trackCol = "",
|
static async Task<List<Track>> ParseCsvIntoTrackInfo(string path, string? artistCol = "", string? trackCol = "",
|
||||||
string? lengthCol = "", string? albumCol = "", string? descCol = "", string? ytIdCol = "", string timeUnit = "", bool ytParse = false)
|
string? lengthCol = "", string? albumCol = "", string? descCol = "", string? ytIdCol = "", string timeUnit = "s", bool ytParse = false)
|
||||||
{
|
{
|
||||||
if (timeUnit == "") timeUnit = "s";
|
|
||||||
var tracks = new List<Track>();
|
var tracks = new List<Track>();
|
||||||
|
|
||||||
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
@ -1993,7 +1992,7 @@ static class Program
|
||||||
var descIndex = string.IsNullOrEmpty(cols[4]) ? -1 : Array.IndexOf(header, cols[4]);
|
var descIndex = string.IsNullOrEmpty(cols[4]) ? -1 : Array.IndexOf(header, cols[4]);
|
||||||
var ytIdIndex = string.IsNullOrEmpty(cols[5]) ? -1 : Array.IndexOf(header, cols[5]);
|
var ytIdIndex = string.IsNullOrEmpty(cols[5]) ? -1 : Array.IndexOf(header, cols[5]);
|
||||||
|
|
||||||
var regex = new Regex($"{Regex.Escape(d)}(?=(?:[^\"']*\"[^\"']*\")*[^\"']*$)"); // thank you, ChatGPT.
|
var regex = new Regex($"{Regex.Escape(d)}(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
|
||||||
|
|
||||||
while (!reader.EndOfStream)
|
while (!reader.EndOfStream)
|
||||||
{
|
{
|
||||||
|
@ -2005,7 +2004,7 @@ static class Program
|
||||||
var desc = "";
|
var desc = "";
|
||||||
|
|
||||||
var track = new Track();
|
var track = new Track();
|
||||||
if (artistIndex >= 0) track.ArtistName = values[artistIndex].Trim('"').Split(',').First().Trim(' ');
|
if (artistIndex >= 0) track.ArtistName = values[artistIndex].Trim('"');
|
||||||
if (trackIndex >= 0) track.TrackTitle = values[trackIndex].Trim('"');
|
if (trackIndex >= 0) track.TrackTitle = values[trackIndex].Trim('"');
|
||||||
if (albumIndex >= 0) track.Album = values[albumIndex].Trim('"');
|
if (albumIndex >= 0) track.Album = values[albumIndex].Trim('"');
|
||||||
if (descIndex >= 0) desc = values[descIndex].Trim('"');
|
if (descIndex >= 0) desc = values[descIndex].Trim('"');
|
||||||
|
|
Loading…
Reference in a new issue