/// <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); }
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); }
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); } } }
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); } } }
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); }
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()); }
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; } } }
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 }
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); } }
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 }
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); } } }
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); } } }
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); } } }
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); } } }
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) }); }
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); }
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"); } }
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); }
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); }
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; }
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); }
//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); } //} }
// 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(); }
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(); }
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); } }
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; }