public Track CreateTrack(DiscogsTrack dTrack) { var track = new Track(); track.Name = dTrack.title; if (int.TryParse(dTrack.position, out var pos)) { track.Number = pos; } track.Duration = dTrack.duration; return(track); }
public TrackDeserializationTest() { _Result = JsonConvert.DeserializeObject <DiscogsTrack>(_Track); }
public static void ExportRelease(DiscogsRelease release, string folder) { if (release.videos == null) { return; } foreach (DiscogsVideo releaseVideo in release.videos) { if (!GetAudioFilePath(releaseVideo.uri, out string src)) { continue; } string filename = getEscaped(releaseVideo.title); string releaseName = $"{string.Join(", ", release.artists?.Select(a => a.name).ToArray() ?? new string[0])} - {release.title}"; foreach (char invalidPathChar in Path.GetInvalidPathChars()) { releaseName = releaseName.Replace(invalidPathChar, ' '); } string destFolder = Path.Combine(folder, releaseName); if (!Directory.Exists(destFolder)) { Directory.CreateDirectory(destFolder); } string dest = Path.Combine(destFolder, $"{filename}{AudioExtension}"); if (!File.Exists(src) || File.Exists(dest)) { continue; } try { File.Copy(src, dest); TagLib.File file = TagLib.File.Create(dest); DiscogsTrack track = getTrack(releaseVideo, release); file.Tag.Title = track?.title; file.Tag.Performers = track?.artists?.Select(a => a.name).ToArray() ?? release.artists?.Select(a => a.name).ToArray() ?? new string[0]; file.Tag.Album = release.title; file.Tag.AlbumArtists = release.artists?.Select(a => a.name).ToArray() ?? new string[0]; file.Tag.Genres = release.genres; try { IPicture cover = new Picture(GetImageFilePath(release.images?[0])); file.Tag.Pictures = new[] { cover }; } catch (Exception e) { Console.WriteLine($@"tagging {release.title}{e}"); } file.Save(); } catch (Exception e) { Console.WriteLine($@"{src} --> {dest} {e}"); } } }