private void LoadFromIpodTrack ()
{
var track = IpodTrack;
try {
Uri = new SafeUri (System.IO.Path.Combine (track.ITDB.Mountpoint, track.IpodPath.Replace (":", System.IO.Path.DirectorySeparatorChar.ToString ()).Substring (1)));
} catch (Exception ex) {
Log.Exception (ex);
Uri = null;
}
ExternalId = (long) track.DBID;
IsCompilation = track.Compilation;
AlbumArtist = track.AlbumArtist;
AlbumTitle = String.IsNullOrEmpty (track.Album) ? null : track.Album;
ArtistName = String.IsNullOrEmpty (track.Artist) ? null : track.Artist;
BitRate = track.Bitrate;
SampleRate = track.Samplerate;
Bpm = (int)track.BPM;
Comment = track.Comment;
Composer = track.Composer;
DateAdded = track.TimeAdded;
DiscCount = track.CDs;
DiscNumber = track.CDNumber;
Duration = TimeSpan.FromMilliseconds (track.TrackLength);
FileSize = track.Size;
Genre = String.IsNullOrEmpty (track.Genre) ? null : track.Genre;
Grouping = track.Grouping;
LastPlayed = track.TimePlayed;
PlayCount = (int) track.PlayCount;
TrackCount = track.Tracks;
TrackNumber = track.TrackNumber;
TrackTitle = String.IsNullOrEmpty (track.Title) ? null : track.Title;
Year = track.Year;
description = track.Description;
ReleaseDate = track.TimeReleased;
ArtistNameSort = track.SortArtist;
AlbumTitleSort = track.SortAlbum;
AlbumArtistSort = track.SortAlbumArtist;
TrackTitleSort = track.SortTitle;
rating = track.Rating > 5 ? 0 : (int) track.Rating;
if (track.DRMUserID > 0) {
PlaybackError = StreamPlaybackError.Drm;
}
MediaAttributes = TrackMediaAttributes.AudioStream;
switch (track.MediaType) {
case GPod.MediaType.Audio:
MediaAttributes |= TrackMediaAttributes.Music;
break;
// This seems to cause audio files to show up in Banshee in the Videos section
/*case GPod.MediaType.AudioVideo:
MediaAttributes |= TrackMediaAttributes.VideoStream;
break;*/
case GPod.MediaType.MusicVideo:
MediaAttributes |= TrackMediaAttributes.Music | TrackMediaAttributes.VideoStream;
break;
case GPod.MediaType.Movie:
MediaAttributes |= TrackMediaAttributes.VideoStream | TrackMediaAttributes.Movie;
break;
case GPod.MediaType.TVShow:
MediaAttributes |= TrackMediaAttributes.VideoStream | TrackMediaAttributes.TvShow;
break;
case GPod.MediaType.Podcast:
MediaAttributes |= TrackMediaAttributes.Podcast;
// FIXME: persist URL on the track (track.PodcastUrl)
break;
case GPod.MediaType.Audiobook:
MediaAttributes |= TrackMediaAttributes.AudioBook;
break;
case GPod.MediaType.MusicTVShow:
MediaAttributes |= TrackMediaAttributes.Music | TrackMediaAttributes.VideoStream | TrackMediaAttributes.TvShow;
break;
}
// If it's just AudioStream, add Music to it as well so it'll show up in Music
if (MediaAttributes == TrackMediaAttributes.AudioStream) {
MediaAttributes |= TrackMediaAttributes.Music;
}
}