public async static Task <TagInformation> CreateTagInfoForCD(int drive, int track) { var title = CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"TITLE{track + 1}", "Unknown song"); var artist = CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"PERFORMER{track + 1}", "Unknown artist"); var album = CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"PERFORMER{0}", "Unknown"); album += " - " + CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"TITLE{0}", ""); var ret = new TagInformation { FileName = $"CD track {track + 1}, on Drive: {drive}", Title = title, Artist = artist, Year = "unknown", Album = album }; if (title != "Unknown song") { var bytes = await iTunesCoverDownloader.GetCoverFor($"{artist} - {title}"); if (bytes != null) { ret.Cover = iTunesCoverDownloader.CreateBitmap(bytes); } } else { ret.Cover = new BitmapImage(ResourceLocator.GetIcon(IconCategories.Big, "icons8-cd-540.png")); } return(ret); }
/// <summary> /// Converts a full path to a file name /// </summary> /// <param name="value">The value produced by the binding source.</param> /// <param name="targetType">The type of the binding target property.</param> /// <param name="parameter">The converter parameter to use.</param> /// <param name="culture">The culture to use in the converter.</param> /// <returns>string, filename</returns> public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string fullpath = value.ToString(); if (fullpath.StartsWith("http")) { return(fullpath); } else if (fullpath.StartsWith("cd:")) { try { var cd = new CDTrackInfo(fullpath); if (CDInfoProvider.CdData.Count > 0) { var title = CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"TITLE{cd.Track + 1}", "Unknown song"); var artist = CollectionExtensions.GetValueOrFallback(CDInfoProvider.CdData, $"PERFORMER{cd.Track + 1}", "Unknown artist"); return($"{artist} - {title}"); } else { return($"CD track {cd.Track+1}, on Drive: {cd.Drive}"); } } catch (Exception) { return(fullpath); } } else { try { TagLib.File tags = TagLib.File.Create(fullpath); var artist = tags.Tag.Performers[0]; var title = tags.Tag.Title; if (string.IsNullOrEmpty(artist)) { artist = "Unknown artist"; } if (string.IsNullOrEmpty(title)) { title = "Unknown song"; } return(string.Format("{0} - {1}", artist, title)); } catch (Exception) { var fname = System.IO.Path.GetFileName(fullpath); return(fname); } } }