async Task<string> FolderCrawler(StorageFolder sf, string folderpath, bool crawl = true, bool addpath = true)
{
var files = await sf.GetFilesAsync();
var folders = await sf.GetFoldersAsync();
string outs = string.Empty;
if (string.IsNullOrEmpty(folderpath)) outs += "directory: \n";
else outs += "directory: " + folderpath + "\n";
foreach (StorageFile file in files)
{
if (file.FileType.ToLower().Equals(".mp3") ||
file.FileType.ToLower().Equals(".wav") ||
file.FileType.ToLower().Equals(".wma"))
{
SongTag songTag = await SongTag.GetSongTagFromFile(file);
if (addpath)
{
if (string.IsNullOrEmpty(folderpath)) songTag.file = sf.Name + "/" + file.Name; // + "\n";
else songTag.file = folderpath + "/" + file.Name; // +"\n";
}
else {
songTag.file = file.Name; // +"\n";
}
outs += songTag.ToString();
}
}
foreach(StorageFolder folder in folders)
{
string fpath = string.Empty;
if (string.IsNullOrEmpty(folderpath)) fpath = folder.Name;
else fpath = folderpath + "/" + folder.Name;
if(crawl) outs += await FolderCrawler(folder, fpath);
}
return outs;
}