Пример #1
0
        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);
        }
Пример #2
0
 public TrackDeserializationTest()
 {
     _Result = JsonConvert.DeserializeObject <DiscogsTrack>(_Track);
 }
Пример #3
0
        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}");
                }
            }
        }