示例#1
0
        public ID3Tags GetTags(RecordedSong song)
        {
            var tagFile = File.Create(new MemoryFileAbstraction(new MemoryStream(song.Data)));

            return new ID3Tags
            {
                Title = tagFile.Tag.Title,
                Artists = tagFile.Tag.Performers,
                Album = tagFile.Tag.Album,
            };
        }
示例#2
0
        public bool WriteSong(RecordedSong song)
        {
            string filePath = Path.Combine(this._settings.OutputDirectory, $"{song.Song.Artist.ToValidFileName()} - {song.Song.Title.ToValidFileName()}.mp3");

            if (this._settings.SkipExistingSongs && File.Exists(filePath))
                return false;

            if (Directory.Exists(this._settings.OutputDirectory) == false)
                Directory.CreateDirectory(this._settings.OutputDirectory);

            File.WriteAllBytes(filePath, song.Data);

            return true;
        }
示例#3
0
        public void UpdateTags(ID3Tags tags, RecordedSong song)
        {
            using (var stream = new MemoryStream(song.Data.Length * 2))
            {
                stream.Write(song.Data, 0, song.Data.Length);
                stream.Position = 0;

                var tagFile = File.Create(new MemoryFileAbstraction(stream));

                tagFile.Tag.Title = tags.Title;
                tagFile.Tag.Performers = tags.Artists;
                tagFile.Tag.Album = tags.Album;

                tagFile.Save();

                song.Data = stream.ToArray();
            }
        }
示例#4
0
        public RecordedSong StopRecording()
        {
            this._capture.StopRecording();

            this._capture.Dispose();
            this._writer.Dispose();

            var result =  new RecordedSong
            {
                Song = this.Song,
                Data = this.ReadFileAndConvertToMp3(),
            };

            File.Delete(this._fileName);

            if (result.Data.Any() == false)
                return null;

            return result;
        }