2014-11-21 4 views
1

Я пытаюсь прочитать все метаданные, доступные для музыкального файла в Windows Phone 8.1. Я могу только получить имя, путь & дата создания музыкального файла.Как читать полные метаданные музыкального файла в Windows Phone 8.1

Я не в состоянии получить метаданные как альбом, исполнитель, альбом художники, год, издатель, композитор, жанр, продолжительность, номер дорожки, битрейт, названию, рейтинг и т.д.

Я попробовал решение, данное в это question. Но это не принесло никакого результата.

Кто-нибудь знает, как достичь этого?

public class MusicFiles 
    { 
     public string fileName { get; set; } 
     public string filePath { get; set; } 
     public string dateCreated { get; set; } 
    } 

IReadOnlyList<IStorageItem> fileList = await mFolder.GetItemsAsync(); 

foreach(IStorageItem mItem in fileList) 
       { 
        IStorageItem item = mItem; 
      if(item.IsOfType(Windows.Storage.StorageItemTypes.File)) 
         { 
          // create object of MusicAlbums() class. 
          MusicFiles musicAlbumObj = new MusicFiles(); 

          // set name of item Folder. 
          musicAlbumObj.fileName = item.Name; 

          // set path of item Folder. 
          musicAlbumObj.filePath = item.Path; 

          // get item Folder's created date & Time. 
          musicAlbumObj.dateCreated = item.DateCreated.ToString(); 

          string showText = ""; 
          showText = musicAlbumObj.fileName + " *** " + musicAlbumObj.filePath + " *** " + musicAlbumObj.dateCreated; 
          MessageDialog msg = new MessageDialog(showText); 
          await msg.ShowAsync(); 

         } 
     } 

ответ

1

Я использую TagLib для своего проекта. Вы можете использовать его как это:

   using (var fs = await (item as StorageFile).OpenStreamForReadAsync()) 
       { 
        try 
        { 
         var tagFile = TagLib.File.Create(new StreamFileAbstraction(item.Name, fs, fs)); 
         var tag = tagFile.GetTag(TagTypes.Id3v2); 
         if(tag.IsEmpty) 
         { 
          throw new ArgumentNullException(String.Format("No tag info found for {0}", item.Path)); 
         } 
         var artistName = tag.FirstArtist; 
         var artist = CreateArtist(artistName); 

         var albumName = tag.Album; 
         var album = CreateAlbum(albumName, artist); 

         var trackTitle = tag.Title; 
         var track = CreateTrack(trackTitle, artist, album, item as StorageFile); 
        } 
        catch (Exception e) 
        { 
         var info = e.Message; 
         Debug.WriteLine(String.Format("Could not add the following file: {0}. Error: {1}.", item.Name, info)); 
        } 
       } 
+0

OK. Позвольте мне попробовать. Я помечаю вас здесь, если потребуется. Спасибо брат. @Benjamin Diele –

+0

@WD Это решило вашу проблему? Пожалуйста, отметьте это как ответ. Спасибо –

0
foreach (var file in lstMusicFile) 
{ 
    MusicProperties msProp = await file.Properties.GetMusicPropertiesAsync(); 
    DocumentProperties msDoc = await file.Properties.GetDocumentPropertiesAsync(); 
    MsMetadata msm = new MsMetadata(); 
    msm.Title = msProp.Title.Trim().Equals("") ? msProp.Subtitle : msProp.Title; 
    msm.Artist = msProp.Artist.Trim().Equals("") ? "Unknown" : msProp.Artist; 
    msm.Album = msProp.Album.Trim().Equals("") ? "Unknown" : msProp.Album; 
    msm.Author = msDoc.Author.ElementAt(0).Trim().Equals("") ? "Unknown" : msDoc.Author.ElementAt(0); 
    msm.Comment = msDoc.Comment.Trim().Equals("") ? "The Lyrics of this song will be update early !" : msDoc.Comment; 
    msm.Source = file.Path; 

    // Do something with msm     
} 
+0

Привет! Добро пожаловать в StackOverflox. Вы должны позаботиться о правильном форматировании кода. Кроме того, краткое объяснение вашего кода может помочь ОП понять ваш ответ. –

Смежные вопросы