Exemplo n.º 1
0
        // FIXME: No reason for this to use GdkPixbuf - the file is on disk already in
        // the artwork cache as a JPEG, so just shove the bytes from disk into the track
        public static void SetIpodCoverArt(IPod.Device device, IPod.Track track, string path)
        {
            try {
                Gdk.Pixbuf pixbuf = null;
                foreach (IPod.ArtworkFormat format in device.LookupArtworkFormats(IPod.ArtworkUsage.Cover))
                {
                    if (!track.HasCoverArt(format))
                    {
                        // Lazily load the pixbuf
                        if (pixbuf == null)
                        {
                            pixbuf = new Gdk.Pixbuf(path);
                        }

                        track.SetCoverArt(format, IPod.ArtworkHelpers.ToBytes(format, pixbuf));
                    }
                }

                if (pixbuf != null)
                {
                    pixbuf.Dispose();
                }
            } catch (Exception e) {
                Log.Exception(String.Format("Failed to set cover art on iPod from {0}", path), e);
            }
        }
Exemplo n.º 2
0
        public IpodTrackInfo (TrackInfo track)
        {
            CanSaveToDatabase = true;

            if (track is IpodTrackInfo) {
                this.track = ((IpodTrackInfo)track).IpodTrack;
                LoadFromIpodTrack ();
            } else {
                UpdateInfo (track);
            }
        }
Exemplo n.º 3
0
        public IpodTrackInfo(TrackInfo track)
        {
            if (track is IpodTrackInfo)
            {
                this.track = ((IpodTrackInfo)track).IpodTrack;
                LoadFromIpodTrack();
            }
            else
            {
                AlbumArtist     = track.AlbumArtist;
                AlbumTitle      = track.AlbumTitle;
                ArtistName      = track.ArtistName;
                BitRate         = track.BitRate;
                Bpm             = track.Bpm;
                Comment         = track.Comment;
                Composer        = track.Composer;
                Conductor       = track.Conductor;
                Copyright       = track.Copyright;
                DateAdded       = track.DateAdded;
                DiscCount       = track.DiscCount;
                DiscNumber      = track.DiscNumber;
                Duration        = track.Duration;
                FileSize        = track.FileSize;
                Genre           = track.Genre;
                Grouping        = track.Grouping;
                IsCompilation   = track.IsCompilation;
                LastPlayed      = track.LastPlayed;
                LastSkipped     = track.LastSkipped;
                PlayCount       = track.PlayCount;
                Rating          = track.Rating;
                ReleaseDate     = track.ReleaseDate;
                SkipCount       = track.SkipCount;
                TrackCount      = track.TrackCount;
                TrackNumber     = track.TrackNumber;
                TrackTitle      = track.TrackTitle;
                Year            = track.Year;
                MediaAttributes = track.MediaAttributes;

                var podcast_info = track.ExternalObject as IPodcastInfo;
                if (podcast_info != null)
                {
                    description = podcast_info.Description;
                    ReleaseDate = podcast_info.ReleaseDate;
                }
            }

            CanSaveToDatabase = true;
        }
        public IpodTrackInfo (TrackInfo track)
        {
            if (track is IpodTrackInfo) {
                this.track = ((IpodTrackInfo)track).IpodTrack;
                LoadFromIpodTrack ();
            } else {
                AlbumArtist = track.AlbumArtist;
                AlbumTitle = track.AlbumTitle;
                ArtistName = track.ArtistName;
                BitRate = track.BitRate;
                SampleRate = track.SampleRate;
                Bpm = track.Bpm;
                Comment = track.Comment;
                Composer = track.Composer;
                Conductor = track.Conductor;
                Copyright = track.Copyright;
                DateAdded = track.DateAdded;
                DiscCount = track.DiscCount;
                DiscNumber = track.DiscNumber;
                Duration = track.Duration;
                FileSize = track.FileSize;
                Genre = track.Genre;
                Grouping = track.Grouping;
                IsCompilation = track.IsCompilation ;
                LastPlayed = track.LastPlayed;
                LastSkipped = track.LastSkipped;
                PlayCount = track.PlayCount;
                Rating = track.Rating;
                ReleaseDate = track.ReleaseDate;
                SkipCount = track.SkipCount;
                TrackCount = track.TrackCount;
                TrackNumber = track.TrackNumber;
                TrackTitle = track.TrackTitle;
                Year = track.Year;
                MediaAttributes = track.MediaAttributes;

                var podcast_info = track.ExternalObject as IPodcastInfo;
                if (podcast_info != null) {
                    description = podcast_info.Description;
                    ReleaseDate = podcast_info.ReleaseDate;
                }
            }

            CanSaveToDatabase = true;
        }
Exemplo n.º 5
0
 public IpodTrackInfo (IPod.Track track) : base ()
 {
     this.track = track;
     LoadFromIpodTrack ();
     CanSaveToDatabase = true;
 }
Exemplo n.º 6
0
        public void CommitToIpod (IPod.Device device)
        {
            bool update = (track != null);
            if (!update) {
                try {
                    track = device.TrackDatabase.CreateTrack (Uri.AbsolutePath);
                } catch (Exception e) {
                    Log.Exception ("Failed to create iPod track with Uri " + Uri.AbsoluteUri, e);
                    device.TrackDatabase.RemoveTrack (track);
                    return;
                }
            }

            ExternalId = track.Id;

            //if the track was not in the ipod already, the CreateTrack(uri)
            //method updates the Uri property with the path of the new file
            //so we need to save it on Banshee db to be properly synced
            if (!update) {
                Uri = new SafeUri (track.Uri);
            }

            track.AlbumArtist = AlbumArtist;
            track.BitRate = BitRate;
            track.SampleRate = (ushort)SampleRate;
            track.BPM = (short)Bpm;
            track.Comment = Comment;
            track.Composer = Composer;
            track.DateAdded = DateAdded;
            track.TotalDiscs = DiscCount;
            track.DiscNumber = DiscNumber;
            track.Duration = Duration;
            track.Size = (int)FileSize;
            track.Grouping = Grouping;
            track.IsCompilation = IsCompilation;
            track.LastPlayed = LastPlayed;
            track.PlayCount = PlayCount;
            track.TotalTracks = TrackCount;
            track.TrackNumber = TrackNumber;
            track.Year = Year;
            track.DateReleased = ReleaseDate;

            track.Album = AlbumTitle;
            track.Artist = ArtistName;
            track.Title = TrackTitle;
            track.Genre = Genre;

            switch (Rating) {
                case 1: track.Rating = IPod.TrackRating.Zero; break;
                case 2: track.Rating = IPod.TrackRating.Two; break;
                case 3: track.Rating = IPod.TrackRating.Three; break;
                case 4: track.Rating = IPod.TrackRating.Four; break;
                case 5: track.Rating = IPod.TrackRating.Five; break;
                default: track.Rating = IPod.TrackRating.Zero; break;
            }

            if (HasAttribute (TrackMediaAttributes.Podcast)) {
                track.DateReleased = ReleaseDate;
                track.Description = description;
                track.RememberPosition = true;
                track.NotPlayedMark = track.PlayCount == 0;
            }

            if (HasAttribute (TrackMediaAttributes.VideoStream)) {
                if (HasAttribute (TrackMediaAttributes.Podcast)) {
                    track.Type = IPod.MediaType.VideoPodcast;
                } else if (HasAttribute (TrackMediaAttributes.Music)) {
                    track.Type = IPod.MediaType.MusicVideo;
                } else if (HasAttribute (TrackMediaAttributes.Movie)) {
                    track.Type = IPod.MediaType.Movie;
                } else if (HasAttribute (TrackMediaAttributes.TvShow)) {
                    track.Type = IPod.MediaType.TVShow;
                } else {
                    track.Type = IPod.MediaType.Video;
                }
            } else {
                if (HasAttribute (TrackMediaAttributes.Podcast)) {
                    track.Type = IPod.MediaType.Podcast;
                } else if (HasAttribute (TrackMediaAttributes.AudioBook)) {
                    track.Type = IPod.MediaType.Audiobook;
                } else if (HasAttribute (TrackMediaAttributes.Music)) {
                    track.Type = IPod.MediaType.Audio;
                } else {
                    track.Type = IPod.MediaType.Audio;
                }
            }

            if (CoverArtSpec.CoverExists (ArtworkId)) {
                SetIpodCoverArt (device, track, CoverArtSpec.GetPath (ArtworkId));
            }
        }
Exemplo n.º 7
0
 public IpodTrackInfo(IPod.Track track) : base()
 {
     this.track = track;
     LoadFromIpodTrack();
     CanSaveToDatabase = true;
 }
Exemplo n.º 8
0
        public void CommitToIpod(IPod.Device device)
        {
            track      = track ?? device.TrackDatabase.CreateTrack();
            ExternalId = track.Id;

            try {
                track.Uri = new Uri(Uri.AbsoluteUri);
            } catch (Exception e) {
                Log.Exception("Failed to create System.Uri for iPod track", e);
                device.TrackDatabase.RemoveTrack(track);
            }

            track.AlbumArtist   = AlbumArtist;
            track.BitRate       = BitRate;
            track.BPM           = (short)Bpm;
            track.Comment       = Comment;
            track.Composer      = Composer;
            track.DateAdded     = DateAdded;
            track.TotalDiscs    = DiscCount;
            track.DiscNumber    = DiscNumber;
            track.Duration      = Duration;
            track.Size          = (int)FileSize;
            track.Grouping      = Grouping;
            track.IsCompilation = IsCompilation;
            track.LastPlayed    = LastPlayed;
            track.PlayCount     = PlayCount;
            track.TotalTracks   = TrackCount;
            track.TrackNumber   = TrackNumber;
            track.Year          = Year;
            track.DateReleased  = ReleaseDate;

            track.Album  = AlbumTitle;
            track.Artist = ArtistName;
            track.Title  = TrackTitle;
            track.Genre  = Genre;

            switch (Rating)
            {
            case 1: track.Rating = IPod.TrackRating.Zero; break;

            case 2: track.Rating = IPod.TrackRating.Two; break;

            case 3: track.Rating = IPod.TrackRating.Three; break;

            case 4: track.Rating = IPod.TrackRating.Four; break;

            case 5: track.Rating = IPod.TrackRating.Five; break;

            default: track.Rating = IPod.TrackRating.Zero; break;
            }

            if (HasAttribute(TrackMediaAttributes.Podcast))
            {
                track.DateReleased     = ReleaseDate;
                track.Description      = description;
                track.RememberPosition = true;
                track.NotPlayedMark    = track.PlayCount == 0;
            }

            if (HasAttribute(TrackMediaAttributes.VideoStream))
            {
                if (HasAttribute(TrackMediaAttributes.Podcast))
                {
                    track.Type = IPod.MediaType.VideoPodcast;
                }
                else if (HasAttribute(TrackMediaAttributes.Music))
                {
                    track.Type = IPod.MediaType.MusicVideo;
                }
                else if (HasAttribute(TrackMediaAttributes.Movie))
                {
                    track.Type = IPod.MediaType.Movie;
                }
                else if (HasAttribute(TrackMediaAttributes.TvShow))
                {
                    track.Type = IPod.MediaType.TVShow;
                }
                else
                {
                    track.Type = IPod.MediaType.Video;
                }
            }
            else
            {
                if (HasAttribute(TrackMediaAttributes.Podcast))
                {
                    track.Type = IPod.MediaType.Podcast;
                }
                else if (HasAttribute(TrackMediaAttributes.AudioBook))
                {
                    track.Type = IPod.MediaType.Audiobook;
                }
                else if (HasAttribute(TrackMediaAttributes.Music))
                {
                    track.Type = IPod.MediaType.Audio;
                }
                else
                {
                    track.Type = IPod.MediaType.Audio;
                }
            }

            if (CoverArtSpec.CoverExists(ArtworkId))
            {
                SetIpodCoverArt(device, track, CoverArtSpec.GetPath(ArtworkId));
            }
        }