Exemplo n.º 1
1
        /// <summary>
        /// Metodo encargado de buscarcanciones en una carpeta para su importaci'on en la biblioteca de usuario
        /// </summary>
        /// <param name="directoryPath">Ruta de acceso a directorio</param>
        public void ImportSongsToLibrary(String directoryPath)
        {
            List<TrackInfo> tracksToInsert = new List<TrackInfo>();
            SessionManager sessionManager= SessionManager.Instance;
            string unknownFrame = "Unknown";
            string[] musicFiles = Directory.GetFiles(directoryPath, "*.mp3");
            foreach (string musicFile in musicFiles)
            {
                UserTrackRepository userTrackRepository = new UserTrackRepository();
                TrackRepository trackRepository = new TrackRepository();

                using (var mp3 = new Mp3File(musicFile))
                {
                    TrackInfo currentTrack = new TrackInfo() {TrackId = Guid.NewGuid()};

                    if (mp3.HasTags)
                    {
                        Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                        if (tag != null)
                        {
                            currentTrack.Title = tag.Title.IsAssigned ? tag.Title.Value : unknownFrame;
                            currentTrack.AlbumTitle = tag.Album.IsAssigned ? tag.Album.Value : unknownFrame;
                            currentTrack.ArtistTitle = tag.Artists.IsAssigned ? tag.Artists : unknownFrame;
                            currentTrack.Genre = getGenre(tag.Genre.Value);
                            if (tag.Lyrics.Count != 0)
                            {
                                currentTrack.Lyric = tag.Lyrics[0].IsAssigned ? tag.Lyrics[0].Lyrics : "";
                            }
                            else
                            {
                                currentTrack.Lyric = "";
                            }
                            if (tag.Year.IsAssigned)
                            {
                                int year;
                                if (Int32.TryParse(tag.Year.Value, out year))
                                {
                                    currentTrack.Year = year;
                                }
                            }
                        }
                        else
                        {
                            currentTrack.Title = unknownFrame;
                            currentTrack.AlbumTitle =unknownFrame;
                            currentTrack.ArtistTitle = unknownFrame;
                            currentTrack.Genre = unknownFrame;
                            currentTrack.Lyric = "";
                            currentTrack.Year = 0;
                        }
                                     
                        currentTrack.SongPath = musicFile;
                        currentTrack.TrackId = Guid.NewGuid();
                        tracksToInsert.Add(currentTrack);
                    }
                    else
                    {
                        currentTrack.Title =unknownFrame;
                        currentTrack.AlbumTitle = unknownFrame;
                        currentTrack.ArtistTitle =unknownFrame;
                        currentTrack.Genre = unknownFrame;
                        currentTrack.Lyric = "";
                        currentTrack.SongPath = musicFile;
                        currentTrack.TrackId= Guid.NewGuid();
                        currentTrack.Year = 0;
                        tracksToInsert.Add(currentTrack);
                    }
                }
            }
            this.userTracks.AddRange(tracksToInsert);
            this.InsertIntoDatabase(tracksToInsert);
        }
Exemplo n.º 2
0
        public async Task <List <Id3Tag> > GetFilesFromFolder()
        {
            var tagList = new List <Id3Tag>();

            var folderPicker = new FolderPicker
            {
                SuggestedStartLocation = PickerLocationId.Desktop,
                ViewMode = PickerViewMode.List
            };

            folderPicker.FileTypeFilter.Add(".mp3");

            var selectedFolder = await folderPicker.PickSingleFolderAsync();

            if (selectedFolder != null)
            {
                StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickerFolderToken", selectedFolder);
                await Task.Run(async() =>
                {
                    var files = await selectedFolder.GetFilesAsync();
                    foreach (var mediaFile in files)
                    {
                        var file = new Mp3File(mediaFile.Path, Mp3Permissions.ReadWrite);
                        tagList.Add(file.HasTagOfFamily(Id3TagFamily.Version2x) ? file.GetTag(Id3TagFamily.Version2x) : file.GetTag(Id3TagFamily.Version1x));
                        file.Dispose();
                    }
                });
            }

            return(tagList);
        }
Exemplo n.º 3
0
        private void WithID3_Net()
        {
            string[] musicFiles = Directory.GetFiles(txtFolderPath.Text, "*.mp3");
            foreach (string musicFile in musicFiles)
            {
                using (var mp3 = new Mp3File(musicFile, Mp3Permissions.ReadWrite))
                {
                    Console.WriteLine(musicFile);
                    Console.WriteLine(mp3.HasTagOfFamily(Id3TagFamily.FileStartTag).ToString());
                    var x   = this.GetValidVersion(mp3);
                    var tag = mp3.GetTag(x.Major, x.Minor);
                    Console.WriteLine("Title: {0}", tag.Title.Value);
                    Console.WriteLine("Artist: {0}", tag.Artists.Value);
                    Console.WriteLine("Album: {0}", tag.Album.Value);
                    Mp3Stream xs = new Mp3Stream(new MemoryStream());

                    mp3.WriteTag(tag, x.Major, x.Minor, WriteConflictAction.Replace);

                    foreach (var item in tag.Frames)
                    {
                        Console.WriteLine(item.ToString());
                    }
                    //Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                    //Console.WriteLine("Title: {0}", tag.Title.Value);
                    //Console.WriteLine("Artist: {0}", tag.Artists.Value);
                    //Console.WriteLine("Album: {0}", tag.Album.Value);
                }
            }
        }
Exemplo n.º 4
0
        private IEnumerable <Song> EnumerateSongs(string path)
        {
            var musicFiles = Directory.GetFiles(path, "*.mp3", SearchOption.AllDirectories);

            foreach (var musicFile in musicFiles)
            {
                using (var mp3 = new Mp3File(musicFile))
                {
                    var title    = string.Empty;
                    var artist   = string.Empty;
                    var duration = TimeSpan.Zero;
                    try
                    {
                        duration = mp3.Audio?.Duration ?? TimeSpan.Zero;
                        var tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                        title  = tag?.Title?.Value ?? string.Empty;
                        artist = tag?.Artists?.Value ?? string.Empty;
                    }
                    catch (Exception)
                    {
                        Trace.WriteLine($"Error reading ID3 tag for: {musicFile}");
                    }

                    var songFileLen = (int)new FileInfo(musicFile).Length;
                    var song        = new Song(0, title, musicFile, artist, duration, File.GetLastWriteTime(musicFile),
                                               songFileLen);
                    yield return(song);
                }
            }
        }
Exemplo n.º 5
0
        private bool VerificarArquivosEncontrados()
        {
            if (DiretorioRaiz != null)
            {
                ArrayList fileErro = new ArrayList();

                foreach (FileInfo file in DiretorioRaiz.GetFiles())
                {
                    using (var mp3 = new Mp3File(file))
                    {
                        if (mp3.GetTag(Id3TagFamily.Version1x) == null)
                        {
                            fileErro.Add(file);
                        }
                    }
                }

                if (fileErro.Count > 0)
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }
Exemplo n.º 6
0
        public IReadOnlyDictionary <string, string> ReadTags(string filePath)
        {
            var tags = new Dictionary <String, String>();

            if (!filePath.EndsWith(".mp3"))
            {
                throw new UnsupportedFileFormatException("Unsupported file format. Must be .mp3");
            }

            using (var mp3 = new Mp3File(filePath))
            {
                Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);

                tags.Add("Album", tag.Album.Value);
                tags["Artist"] = tag.Artists.Value;

                StringBuilder sb = new StringBuilder();
                foreach (var value in tag.Comments)
                {
                    sb.AppendLine(value.Comment);
                }
                tags["Comments"] = sb.ToString();

                tags["TrackNo"] = tag.Track.Value;

                tags["DateReleased"] = tag.Year.Value;
            }

            return(tags.ToImmutableDictionary());
        }
Exemplo n.º 7
0
		private IEnumerable<Song> EnumerateSongs(string path)
		{
			var musicFiles = Directory.GetFiles(path, "*.mp3", SearchOption.AllDirectories);
			foreach (var musicFile in musicFiles)
			{
				using (var mp3 = new Mp3File(musicFile))
				{
					var title = string.Empty;
					var artist = string.Empty;
					var duration = TimeSpan.Zero;
					try
					{
						duration = mp3.Audio?.Duration ?? TimeSpan.Zero;
						var tag = mp3.GetTag(Id3TagFamily.FileStartTag);
						title = tag?.Title?.Value ?? string.Empty;
						artist = tag?.Artists?.Value ?? string.Empty;
					}
					catch (Exception)
					{
						Trace.WriteLine($"Error reading ID3 tag for: {musicFile}");
					}
					
					var songFileLen = (int)new FileInfo(musicFile).Length;
					var song = new Song(0, title, musicFile, artist, duration, File.GetLastWriteTime(musicFile),
						songFileLen);
					yield return song;
				}
			}
		}
Exemplo n.º 8
0
        private void ScanRepo(DirectoryInfo dir)
        {
            // Check if path exists and we can access the directory
            if (!dir.Exists)
            {
                return;
            }

            // walk through the files
            foreach (FileInfo file in dir.EnumerateFiles())
            {
                using (var mp3 = new Mp3File(file))
                {
                    Id3Tag tag = mp3.GetTag(Id3TagFamily.Version2x);

                    Track track = new Track()
                    {
                        Title        = tag.Title,
                        Album        = new Album(tag.Album),
                        Artist       = new Artist(tag.Artists),
                        Repository   = _currentRepo,
                        RelativePath = _currentRepoUri.MakeRelativeUri(new Uri(file.FullName)).ToString()
                    };
                }


                //using (VisionServerContext db = new VisionServerContext())
                //{
                //    db.Tracks.AddAsync(track);
                //}
            }

            // walk through the directories
        }
Exemplo n.º 9
0
 public void StubHandlerTests()
 {
     using (var mp3 = new Mp3File(@"E:\Temp\Abba - Fernando.mp3"))
     {
         Id3Tag tag = mp3.GetTag(Id3TagFamily.Version2x);
         Console.WriteLine("{0}.{1}", tag.MajorVersion, tag.MinorVersion);
     }
 }
Exemplo n.º 10
0
 public void Init(string file, IOutput output)
 {
     _output = output;
     _file   = file;
     using (var mp3 = new Mp3File(file, Mp3Permissions.Read))
     {
         _tag = mp3.GetTag(Id3TagFamily.Version2x);
     }
     _encoding = _tag.MinorVersion == 4 ? (Id3TextEncoding)03 : Id3TextEncoding.Unicode;//TODO: Should be changed to utf-8 when implemented
 }
Exemplo n.º 11
0
 public void DevTests2()
 {
     using (var mp3 = new Mp3File(@"E:\Temp\Audio\BasicTagsWithImage.mp3"))
     {
         Id3Tag tag = mp3.GetTag(2, 3);
         foreach (PictureFrame frame in tag.OfType <PictureFrame>())
         {
             Console.WriteLine(frame.EncodingType);
             Console.WriteLine(frame.PictureType);
             Console.WriteLine(frame.Description);
         }
     }
 }
Exemplo n.º 12
0
 public void BasicTests()
 {
     using (var mp3 = new Mp3File(@"g:\music\mp3\jpop\HIGH and MIGHTY COLOR - GooVER\11 HIGH and MIGHTY COLOR - With YOU.mp3"))
     {
         Id3Tag tag = mp3.GetTag(Id3TagFamily.Version2x);
         Assert.NotNull(tag);
         Assert.True(tag.IsSupported);
         foreach (Id3Frame frame in tag)
         {
             Console.WriteLine(frame);
         }
     }
 }
Exemplo n.º 13
0
 public void ShiftjisTests()
 {
     using (var mp3 = new Mp3File(@"Y:\music\mp3\pelit\Touhou\[DDBY]\2008.12.29 東方幻想曲 [C75]\DDBY - 二番目に愛した人.mp3"))
     {
         Id3Tag tag = mp3.GetTag(Id3TagFamily.Version1x);
         Assert.NotNull(tag);
         Assert.True(tag.IsSupported);
         foreach (Id3Frame frame in tag)
         {
             Console.WriteLine(frame);
         }
     }
 }
Exemplo n.º 14
0
 public void BasicTests()
 {
     using (var mp3 = new Mp3File(@"D:\SkyDrive\Music\Abba - Fernando.mp3"))
     {
         Id3Tag tag = mp3.GetTag(Id3TagFamily.Version2x);
         Assert.NotNull(tag);
         Assert.True(tag.IsSupported);
         foreach (Id3Frame frame in tag)
         {
             Console.WriteLine(frame);
         }
     }
 }
Exemplo n.º 15
0
        private static CallRecordInfo GetMp3Info(string fullPath)
        {
            var fileBytes = System.IO.File.ReadAllBytes(fullPath);

            var mp3 = new Mp3File(fullPath);

            var tag = mp3.GetTag(Id3TagFamily.FileStartTag);

            return(new CallRecordInfo
            {
                Date = tag.Comments[0].Comment,
                SkypeID = tag.Album.Value,
                FileData = Convert.ToBase64String(fileBytes)
            });
        }
Exemplo n.º 16
0
        private Version GetValidVersion(Mp3File mp3)
        {
            Version _v = null;

            foreach (var item in mp3.GetVersions().OrderBy(c => c.Major))
            {
                try
                {
                    _v = item;
                    var x = mp3.GetTag(_v.Major, _v.Minor);
                    break;
                }
                catch (Exception)
                {
                    _v = null;
                    throw;
                }
            }

            return(_v);
        }
Exemplo n.º 17
0
        public void ReproduceTest()
        {
            using (var mp3 = new Mp3File(@"E:\Temp\Audio\BasicTagsWithImage.mp3", Mp3Permissions.ReadWrite))
            {
                mp3.DeleteAllTags();
                var tag = new Id3Tag();
                var pic = new PictureFrame {
                    Description  = "The Front Cover",
                    EncodingType = Id3TextEncoding.Iso8859_1
                };
                pic.LoadImage(@"E:\Temp\Audio\FrontCover.jpg");
                tag.Pictures.Add(pic);
                mp3.WriteTag(tag, 2, 3);
            }

            using (var mp3 = new Mp3File(@"E:\Temp\Audio\BasicTagsWithImage.mp3"))
            {
                Id3Tag       tag = mp3.GetTag(2, 3);
                PictureFrame pic = tag.OfType <PictureFrame>().First();
                pic.SaveImage(@"E:\Temp\FrontCoverSaved.jpg");
            }
        }
Exemplo n.º 18
0
 public static FileContentResult GetPicture(string filePath)
 {
     using (var reader = new Mp3File(filePath))
     {
         try
         {
             Id3Tag tag = reader.GetTag(Id3TagFamily.Version2x);
             if (tag != null)
             {
                 if (tag.Pictures.Count > 0)
                 {
                     var picData = tag.Pictures[0].PictureData;
                     return(new FileContentResult(picData, "image/png"));
                 }
             }
         }
         catch (Exception)
         {
             //ignore
         }
     }
     return(null);
 }
Exemplo n.º 19
0
        public async Task <bool> CatalogAsync()
        {
            Musics.Clear();

            var files = Directory.GetFiles(@"C:\Musicas", "*.mp3");

            foreach (var file in files)
            {
                using (var music = new Mp3File(file))
                {
                    Id3Tag tag = music.GetTag(Id3TagFamily.Version2x);
                    Musics.Add(new Music {
                        Title    = tag.Title.Value,
                        FilePath = file,
                        Track    = tag.Track.Value,
                        Artists  = tag.Artists.Value.Select(s => new Artist {
                            Name = s
                        }).ToList(),
                        Year  = tag.Year.Value,
                        Album = new Album {
                            Title = tag.Album.Value
                        },
                        Composers = tag.Composers.Value.Select(s => new Composer {
                            Name = s
                        }).ToList(),
                        Pictures = tag.Pictures.Select(pic => new Picture {
                            Discription = pic.Description,
                            Data        = pic.PictureData,
                            PictureType = (PictureType)((int)pic.PictureType),
                            MineType    = pic.MimeType
                        }).ToList()
                    });
                }
            }

            return(Musics.Count > 0);
        }
Exemplo n.º 20
0
        static void Write(string[] artists)
        {
            var defaultColor = System.Console.ForegroundColor;
            System.Console.ForegroundColor = ConsoleColor.Blue;
            
            foreach (var artist in artists)
            {
                var albums = Directory.GetDirectories(artist);
                foreach (var album in albums)
                {
                    var tracks = Directory.GetFiles(album, "*.mp3");
                    foreach (var track in tracks)
                    {
                        if (track.IsFormatValid())
                        {
                            try
                            {
                                using (var mp3file = new Mp3File(track, Mp3Permissions.ReadWrite))
                                {
                                    var artistName = track.ExtractArtistName();
                                    var tag = mp3file.GetTag(Id3TagFamily.Version2x);

                                    tag.Band.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Band.Value = artistName;

                                    tag.Album.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Album.Value = track.ExtractAlbumName();

                                    tag.Year.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Year.Value = track.ExtractAlbumYear();

                                    tag.Title.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Title.Value = track.ExtractTrackName();

                                    tag.Track.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Track.Value = track.ExtractTrackNumber();

                                    tag.Artists.EncodingType = Id3TextEncoding.Unicode;
                                    tag.Artists.Value.Clear();
                                    tag.Artists.Value.Add(artistName);

                                    mp3file.WriteTag(tag);
                                }

                                System.Console.WriteLine("Tags wited to: " + track);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }

            System.Console.ForegroundColor = defaultColor;
        }
Exemplo n.º 21
0
        public bool initialize(String file)
        {
            filepath = file;

            int startpos = filepath.LastIndexOf("\\");

            if (startpos == -1)
            {
                startpos = filepath.LastIndexOf("/");
            }
            if (startpos == -1)
            {
                startpos = 0;
            }

            filename = filepath.Substring(startpos + 1, filepath.Length - startpos - 5);

            try {
                tagFile     = File.Create(filepath);
                usingTagLib = true;
                return(true);
            } catch (Exception ex) {
                Debug.WriteLine(filepath + " invalid. Trying ID3.");
                //Debug.WriteLine(ex.Message);
                usingTagLib = false;
            }

            try {
                using (Mp3File mp3 = new Mp3File(filepath, Mp3Permissions.ReadWrite)) {
                    id3Tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                    try {
                        if (!String.IsNullOrWhiteSpace(id3Tag.Artists.Value) &&
                            !String.IsNullOrWhiteSpace(id3Tag.Title.Value))
                        {
                            usingId3Tag = true;
                            return(true);
                        }
                    } catch (Exception ex) {
                        Debug.WriteLine("Could not load ID3v2. Attempting v1");
                    }

                    try {
                        id3Tag = mp3.GetTag(Id3TagFamily.FileEndTag);
                        Debug.WriteLine("trying v1");

                        if (!String.IsNullOrWhiteSpace(id3Tag.Artists.Value) &&
                            !String.IsNullOrWhiteSpace(id3Tag.Title.Value))
                        {
                            usingId3Tag = true;
                            return(true);
                        }
                    } catch (Exception ex) {
                        Debug.WriteLine("Could not load v1!!!");
                        fileCorrupted = true;
                    }
                }
            } catch (Exception ex) {
                Debug.WriteLine("Problem with mp3. Likely Problem: incorrect filepath or name.");
                fileCorrupted = true;
            }
            return(false);
        }
Exemplo n.º 22
0
        //Re wrote this code for ID3 v3.24
        private void btnScanLatestVersion_Click(object sender, EventArgs e)
        {
            lstBoxEpisode.Items.Clear();
            string selectedFile = lstBox.SelectedItem.ToString();
            string mediaFile = mediaFolder + "\\" + selectedFile;

                using (var mp3 = new Mp3File(mediaFile))
                {
                    //New instance of fileinfo to retreive filesize
                    FileInfo f = new FileInfo(mediaFile);
                    long fileSize = f.Length;

                    //New instance of TagLib
                    TagLib.File file = TagLib.File.Create(mediaFile);
                    if (file.Tag.IsEmpty)
                    {
                        MessageBox.Show("File does not contain ID3 TAG");
                        return;
                    }

                    Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                    lstBoxEpisode.Items.Add("Title: " + file.Tag.Title);
                    lstBoxEpisode.Items.Add("Description: " + file.Tag.Comment);
                    lstBoxEpisode.Items.Add("Duration: " + mp3.Audio.Duration);
                    lstBoxEpisode.Items.Add("Publish Date: " + tag.RecordingDate);
                    lstBoxEpisode.Items.Add("File: " + mediaFile);
                    //Deletion date needs adding
                    foreach (ICodec codec in file.Properties.Codecs)
                    {
                        lstBoxEpisode.Items.Add("Encoding: " + codec.Description);
                    }

                    lstBoxEpisode.Items.Add("File Size: " + fileSize);
                    lstBoxEpisode.Items.Add("Bit rate: " + mp3.Audio.Bitrate);

                }
            //}
        }
Exemplo n.º 23
0
        // Used to remove records that no longer have existing files
        public int syncMusicFiles()
        {
            // Directories to add
            List<String> directories = new List<String>();
            directories.Add(@"D:\Music");
            directories.Add(@"D:\mp3s");

            // Get all files
            List<String> files = new List<String>();
            foreach (String directory in directories) {
                List<String> items = Directory.GetFiles(directory, "*.mp3", SearchOption.AllDirectories).ToList<String>();
                foreach(String item in items) {
                    files.Add(item);
                }
            }

            Debug.WriteLine("Found: " + files.Count + " Files");

            // Get ALL records in database
            List<MusicFile> rows = gdc.MusicFiles.ToList<MusicFile>();
            Debug.WriteLine(rows.Count());

            // Mark items for deletion
            foreach (MusicFile row in rows)
            {
                // If the physical file doesn't exist, remove it from the database
                if (!files.Contains(row.Filename))
                {
                    Debug.WriteLine("Deleting File: '" + row.Filename + "'");
                    gdc.MusicFiles.Remove(row);
                }
            }

            // Process deletion
            gdc.SaveChanges();

            // Edit existing records
            foreach (MusicFile row in rows)
            {
                // Skip files that don't already exist
                if (!files.Contains(row.Filename))
                {
                    continue;
                }

                // Get ID3 tag information
                Mp3File mp3 = new Mp3File(row.Filename);
                Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);

                try {
                    // Set ID3 tag information
                    row.Title = tag.Title.Value;
                    row.Album = tag.Album.Value;
                    row.Artists = tag.Artists.Value;
                    row.Genres = tag.Genre.Value;
                    //row.Duration = mp3.Audio.Duration.ToString("g");

                    // Dispose object?
                    mp3.Dispose();

                    Debug.WriteLine("Editing file: '" + row.Filename + "'");
                    Debug.WriteLine("File Duration: '" + mp3.Audio.Duration.ToString("g") + "'");

                }
                catch (NullReferenceException e) {
                    // Remove problematic files
                    gdc.MusicFiles.Remove(row);
                }
            }

            // Get all filenames currently in the data set
            var existingFilenames = from row in rows
                                    select row.Filename;

            // Add new records
            foreach (String file in files)
            {
                // Skip adding items that already exist
                if(existingFilenames.Contains(file)) {
                    continue;
                }

                try
                {
                    // Get ID3 tag information
                    Mp3File mp3 = new Mp3File(file);
                    Id3Tag tag = mp3.GetTag(Id3TagFamily.FileStartTag);

                    // Set ID3 tag information
                    MusicFile mf = gdc.MusicFiles.Create();
                    mf.Id = Guid.NewGuid();
                    mf.Filename = file;
                    mf.Title = tag.Title.Value;
                    mf.Album = tag.Album.Value;
                    mf.Artists = tag.Artists.Value;
                    mf.Genres = tag.Genre.Value;
                    //mf.Duration = mp3.Audio.Duration.ToString("g");

                    // Dispose object?
                    mp3.Dispose();

                    // Add the new record
                    gdc.MusicFiles.Add(mf);

                    Debug.WriteLine("Adding file: '" + file + "'");
                }
                catch (Exception e) {
                    Debug.WriteLine("Unable to add file: '" + file + "'");
                }
            }

            // Write changes to database
            return gdc.SaveChanges();
        }
Exemplo n.º 24
0
    IEnumerator GetAudioClip()
    {
        WWW www = new WWW(url);

        yield return(www);

        byte[] rawData = www.bytes;
        byte[] mp3Byte = rawData;
        byte[] wavByte;


        using (Stream stream = new MemoryStream())
        {
            stream.Write(mp3Byte, 0, mp3Byte.Length);

            stream.Position = 0;

            using (WaveStream pcm = new Mp3FileReader(stream))
            {
                using (var mp3 = new Mp3File(filepath))
                {
                    Id3Tag tag = mp3.GetTag(Id3TagFamily.Version2x);
                    text[0].text = "タイトル " + tag.Title.Value;
                    text[1].text = "アーティスト名 "   + tag.Artists.Value[0];
                    Debug.Log(tag.Album.EncodingType);
                    var bytesData = System.Text.Encoding.GetEncoding(932).GetBytes(tag.Album.Value);
                    var str       = System.Text.Encoding.UTF8.GetString(bytesData);


                    text[2].text = "アルバム名 " + tag.Album.Value;
                    var       pic = tag.Pictures[0].PictureData;
                    Texture2D tex = new Texture2D(500, 500);
                    tex.LoadImage(pic);
                    image.texture = tex;
                }


                wavByte = new byte[pcm.Length];
                //wavByteに読み込み
                //pcm.Read(wavByte, 0,(int)pcm.Length);
                WaveFileWriter.CreateWaveFile(tempFile, pcm);
            }
        }
        WWW loader = new WWW("file://" + tempFile);

        yield return(loader);

        if (!System.String.IsNullOrEmpty(loader.error))
        {
            Debug.LogError(loader.error);
        }

        AudioClip s1 = loader.GetAudioClip(false, false, AudioType.WAV);


        s1.name = "wavデータ";

        var AS = GetComponent <AudioSource>();

        AS.clip = s1;
        AS.Play();
    }
Exemplo n.º 25
0
        static void Main(string[] args)
        {
            var root = args[0];
            var newRoot = args[1];

            if (!Directory.Exists(root) || new DirectoryInfo(root) == new DirectoryInfo(newRoot))
            {
                Environment.Exit(1);
            }

            var warnings = 0;

            CheckCreateDirectory(newRoot);

            var logPath = Path.Combine(newRoot, "log.txt");
            using (var log = new StreamWriter(new FileInfo(logPath).Open(FileMode.Create)) { AutoFlush = true })
            {
                try
                {
                    var files = Directory.GetFiles(root, "*.mp3", SearchOption.AllDirectories);

                    foreach (var file in files)
                    {
                        using (var mp3 = new Mp3File(file))
                        {
                            var end = mp3.GetTag(Id3TagFamily.FileEndTag);
                            var tag = mp3.GetTag(Id3TagFamily.FileStartTag);

                            if (tag != null)
                            {
                                tag.MergeWith(end);
                            }
                            else
                            {
                                tag = end;
                            }

                            //log.WriteLine("{0,-3} | {1,-50} | {2,-50} | {3,-50}", start.Track.Value, start.Band.Value, start.Album.Value, start.Title.Value);

                            var bandPath = Path.Combine(newRoot, FixDirectoryPath(GetArtist(tag, log, file)));
                            CheckCreateDirectory(bandPath);

                            var albumPath = Path.Combine(bandPath, FixDirectoryPath(GetAlbum(tag, log, file)));
                            CheckCreateDirectory(albumPath);

                            var newFileName = FixFilePath(string.Format("{0} {1}.mp3", FixTrack(tag.Track), GetTitle(tag, log, file))).Trim();
                            var titlePath = Path.Combine(albumPath, newFileName);

                            if (!File.Exists(titlePath) || new FileInfo(file).Length == new FileInfo(titlePath).Length)
                            {
                                File.Copy(file, titlePath, true);

                                using (var newMp3 = new Mp3File(titlePath, Mp3Permissions.ReadWrite))
                                {
                                    Thread.Sleep(TimeSpan.FromMilliseconds(1));

                                    newMp3.DeleteAllTags();
                                    newMp3.WriteTag(tag, WriteConflictAction.Replace);
                                }

                                //log.WriteLine("File '{0}' copied to '{1}'", file, albumPath);
                            }
                            else
                            {
                                log.WriteLine("*** WARNING: File '{0}' already exists with different length", titlePath);
                                warnings++;
                            }
                        }

                        Console.Write('.');
                    }

                    log.WriteLine();
                    log.WriteLine("Ready with {0} warning(s)", warnings);

                    log.WriteLine();

                    var newFiles = Directory.GetFiles(newRoot, "*.mp3", SearchOption.AllDirectories);
                    log.WriteLine("Started with {0} MP3 files, ended up with {1}.", files.Length, newFiles.Length);
                }
                catch (Exception exception)
                {
                    log.WriteLine();
                    log.WriteLine("*** ERROR: {0}", exception.Message);
                    log.WriteLine(exception.StackTrace);
                }

                Process.Start(logPath);
            }
        }
Exemplo n.º 26
0
        public bool initialize(String file)
        {
            filepath = file;

            int startpos = filepath.LastIndexOf("\\");
            if (startpos == -1)
                startpos = filepath.LastIndexOf("/");
            if (startpos == -1)
                startpos = 0;

            filename = filepath.Substring(startpos + 1, filepath.Length - startpos - 5);

            try {
                tagFile = File.Create(filepath);
                usingTagLib = true;
                return true;

            } catch (Exception ex) {
                Debug.WriteLine(filepath + " invalid. Trying ID3.");
                //Debug.WriteLine(ex.Message);
                usingTagLib = false;
            }

            try {
                using (Mp3File mp3 = new Mp3File(filepath, Mp3Permissions.ReadWrite)) {

                    id3Tag = mp3.GetTag(Id3TagFamily.FileStartTag);
                    try {

                        if (!String.IsNullOrWhiteSpace(id3Tag.Artists.Value)
                            && !String.IsNullOrWhiteSpace(id3Tag.Title.Value)) {

                            usingId3Tag = true;
                            return true;
                        }

                    } catch (Exception ex) {
                        Debug.WriteLine("Could not load ID3v2. Attempting v1");

                    }

                    try {

                        id3Tag = mp3.GetTag(Id3TagFamily.FileEndTag);
                        Debug.WriteLine("trying v1");

                        if (!String.IsNullOrWhiteSpace(id3Tag.Artists.Value)
                            && !String.IsNullOrWhiteSpace(id3Tag.Title.Value)) {

                            usingId3Tag = true;
                            return true;
                        }

                    } catch (Exception ex) {
                        Debug.WriteLine("Could not load v1!!!");
                        fileCorrupted = true;
                    }
                }
            } catch (Exception ex) {
                Debug.WriteLine("Problem with mp3. Likely Problem: incorrect filepath or name.");
                fileCorrupted = true;
            }
            return false;
        }