public byte[] GetAlbumArtByAlbum(Album album) { byte[] imageData = null; Track foundTrack = null; iTunesApp iTunes = null; try { iTunes = new iTunesApp(); foreach (IITFileOrCDTrack track in iTunes.LibraryPlaylist.Search(album.Title, ITPlaylistSearchField.ITPlaylistSearchFieldAlbums)) { if (!string.Equals(track.Artist, album.ArtistName)) { continue; } foundTrack = track.GetTrack(); break; } if (foundTrack != null && File.Exists(foundTrack.FilePath)) { using (FileStream fileStream = new FileStream(foundTrack.FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { TagContainer tags = new Id3TagManager().ReadV2Tag(fileStream); if (tags != null) { IFrame apicFrame = tags.SearchFrame("APIC"); if (apicFrame != null) { PictureFrame pictureFrame = FrameUtilities.ConvertToPictureFrame(apicFrame); imageData = pictureFrame.PictureData.ToArray<byte>(); } } } catch (Id3TagException) { /* Do nothing */} } } return imageData; } catch (Exception ex) { LogUtility.LogException(ex); throw; } finally { // Marshall.ReleaseComObject? } }
public static IZuneTagContainer GetContainer(string path) { if (!File.Exists(path)) throw new FileNotFoundException(String.Format("File does not exist: {0}",path), path); string extension = Path.GetExtension(path); if (extension.ToLower() == ".mp3") { try { var tagManager = new Id3TagManager(); //TODO: app crashes here when a file is loaded from a remote directory, i.e. on network FileState status = tagManager.GetTagsStatus(path); //if we just have id3v1.1 tags if (status.Id3V1TagFound && !status.Id3V2TagFound) throw new Id3TagException("cannot read id3v1.1"); return new ZuneMP3TagContainer(tagManager.ReadV2Tag(path),path); } catch (Id3TagException ex) { if (ex.InnerException != null) throw new AudioFileReadException(ex.InnerException.Message, ex.InnerException); throw new AudioFileReadException(ex.Message); } } if (extension.ToLower() == ".wma") { try { return new ZuneWMATagContainer(ASFTagManager.ReadTag(path),path); } catch (Exception ex) { throw new AudioFileReadException(ex.Message,ex); } } throw new AudioFileReadException("The " + Path.GetExtension(path) + " file extension is not supported with zune social tagger."); }
public byte[] GetAlbumArtByTrack(Track track) { byte[] imageData = null; iTunesApp iTunes = null; try { iTunes = new iTunesApp(); if (track != null && File.Exists(track.FilePath)) { using (FileStream fileStream = new FileStream(track.FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { TagContainer tags = new Id3TagManager().ReadV2Tag(fileStream); if (tags != null) { IFrame apicFrame = tags.SearchFrame("APIC"); if (apicFrame != null) { PictureFrame pictureFrame = FrameUtilities.ConvertToPictureFrame(apicFrame); imageData = pictureFrame.PictureData.ToArray<byte>(); } } } catch (Id3TagException) { /* Do nothing */} } } return imageData; } catch (Exception ex) { LogUtility.LogException(ex); throw; } finally { // Marshall.ReleaseComObject? } }
private byte[] GetTrackArt(WindowsMediaPlayer player, IWMPMedia track, string collectionId) { byte[] imageData = null; if (!string.IsNullOrEmpty(track.sourceURL) && File.Exists(track.sourceURL)) { // Try and find the album art that WMP, WMC, Zune creates. I'd much rather read from // a local JPEG than try to read from media that's currently playing and probably locked FileInfo pathInfo = new FileInfo(track.sourceURL); //LogUtility.LogMessage(pathInfo.FullName + " exists"); FileInfo albumArtInfo = new FileInfo(string.Format("{0}{1}AlbumArt_{2}_Large.jpg", pathInfo.DirectoryName, Path.DirectorySeparatorChar, collectionId)); if (!albumArtInfo.Exists) { albumArtInfo = new FileInfo(string.Format("{0}{1}AlbumArt_{2}_Small.jpg", pathInfo.DirectoryName, Path.DirectorySeparatorChar, collectionId)); } if (!albumArtInfo.Exists) { albumArtInfo = new FileInfo(string.Format("{0}{1}ZuneAlbumArt.jpg", pathInfo.DirectoryName, Path.DirectorySeparatorChar)); } //LogUtility.LogMessage("Album art path is " + albumArtInfo.FullName); if (albumArtInfo.Exists) { //LogUtility.LogMessage("Album art exists"); using (FileStream artStream = albumArtInfo.OpenRead()) { byte[] artInfo = new byte[artStream.Length]; artStream.Read(artInfo, 0, (int)artStream.Length); imageData = artInfo; } } } // Couldn't get the art from the folder.jpg, so now try to read the id3 tag if (File.Exists(track.sourceURL)) { using (FileStream fileStream = new FileStream(track.sourceURL, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { TagContainer tags = new Id3TagManager().ReadV2Tag(fileStream); if (tags != null) { IFrame apicFrame = tags.SearchFrame("APIC"); if (apicFrame != null) { PictureFrame pictureFrame = FrameUtilities.ConvertToPictureFrame(apicFrame); imageData = pictureFrame.PictureData.ToArray<byte>(); } } } catch (Id3TagException) { /* Do nothing */} } } return imageData; }