Skip to content

Commit

Permalink
Merge pull request #749 from Hackmodford/MPMediaItem-Support
Browse files Browse the repository at this point in the history
Add extension to handle MPMediaItem
  • Loading branch information
martijn00 authored Sep 3, 2020
2 parents f7d356d + 4577667 commit 8e6c49b
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions MediaManager/Platforms/Ios/Media/MPMediaItemExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CoreGraphics;
using MediaManager.Library;
using MediaPlayer;

namespace MediaManager.Platforms.Ios.Media
{
public static class MPMediaItemExtensions
{
public static IMediaItem ToMediaItem(this MPMediaItem item)
{
var output = new MediaItem
{
MediaType = MediaType.Audio,
Album = item.AlbumTitle,
Artist = item.Artist,
Compilation = null,
Composer = item.Composer,
Duration = TimeSpan.FromSeconds(item.PlaybackDuration),
Genre = item.Genre,
Title = item.Title,
AlbumArtist = item.AlbumArtist,
DiscNumber = item.DiscNumber,
MediaUri = item.AssetURL.ToString(),
NumTracks = item.AlbumTrackCount,
UserRating = item.Rating,
Id = item.PersistentID.ToString()
};

if (item.ReleaseDate != null)
output.Date = (DateTime)item.ReleaseDate;

if (item.Artwork != null)
output.Image = item.Artwork.ImageWithSize(new CGSize(300, 300));

if (output.Date != null)
output.Year = output.Date.Year;

return output;
}

public static IEnumerable<IMediaItem> ToMediaItems(this IEnumerable<MPMediaItem> items)
{
return items
.Where(i => i.AssetURL != null && i.IsCloudItem == false && i.HasProtectedAsset == false)
.Select(i => i.ToMediaItem());
}
}
}

0 comments on commit 8e6c49b

Please sign in to comment.