private async void RetreiveMetadataALTERNATIVE() { try { var client = new HttpClient(); client.DefaultRequestHeaders.Add("range", "bytes=0-10"); var buffer = await client.GetBufferAsync(Uri); int?headerLength = ID3.GetID3v2HeaderLength(buffer.ToArray()); if (!headerLength.HasValue) { return; } Debug.WriteLine("Header length = " + headerLength.Value); client.DefaultRequestHeaders["range"] = "bytes=0-" + headerLength.Value; buffer = await client.GetBufferAsync(Uri); using (var stream = new MemoryStream(buffer.ToArray())) { var bytes = buffer.ToArray(); var tagFile = TagLib.File.Create(new StreamFileAbstraction(name, stream, stream)); var id3 = tagFile.GetTag(TagTypes.Id3v2); Title = id3.Title; if (id3.FirstPerformer != null) { Artist = id3.FirstPerformer; } if (id3.Album != null) { Album = id3.Album; } Cover = await id3.Pictures[0].Data.Data.ToBitmapImage(); // Save cover //StorageFolder storageFolder = ApplicationData.Current.LocalFolder; //StorageFile storageFile = await storageFolder.CreateFileAsync("test_cover.jpg", CreationCollisionOption.ReplaceExisting); //await FileIO.WriteBytesAsync(storageFile, id3.Pictures[0].Data.Data); //var coverUri = new Uri(storageFile.Path); //Debug.WriteLine(coverUri); int bitrate = tagFile.Properties.AudioBitrate * 125; Duration = TimeSpan.FromSeconds(size / bitrate); } MetadataRetreived?.Invoke(); } catch (Exception e) { Debug.WriteLine(e.Message); var dialog = new MessageDialog(Title + Environment.NewLine + e.Message, "Erreur lors de l'extraction des métadonnées"); await dialog.ShowAsync(); } }
private async void RetreiveMetadata() { try { var client = new HttpClient(); client.DefaultRequestHeaders.Add("range", "bytes=0-100000"); var buffer = await client.GetBufferAsync(Uri); using (var stream = new MemoryStream(buffer.ToArray())) { var bytes = buffer.ToArray(); var tagFile = TagLib.File.Create(new StreamFileAbstraction(name, stream, stream)); var id3 = tagFile.GetTag(TagTypes.Id3v2); Title = id3.Title; if (id3.FirstPerformer != null) { Artist = id3.FirstPerformer; } if (id3.Album != null) { Album = id3.Album; } if (id3.Album != null) { Cover = await id3.Pictures[0].Data.Data.ToBitmapImage(); } int bitrate = tagFile.Properties.AudioBitrate * 125; Duration = TimeSpan.FromSeconds(size / bitrate); } MetadataRetreived?.Invoke(); } catch (Exception e) { Debug.WriteLine(e.Message); var dialog = new MessageDialog(Title + Environment.NewLine + e.Message, "Erreur lors de l'extraction des métadonnées"); await dialog.ShowAsync(); } }