public AudioFilePreviewVm(ISimpleFileInfo fileInfo, IBasicTrackInfo trackInfo) : base(fileInfo)
 {
     ArtistName = trackInfo.ArtistName;
     AlbumTitle = trackInfo.AlbumTitle;
     Year       = trackInfo.Year;
     TrackName  = trackInfo.TrackName;
 }
        public void Lookup(IBasicTrackInfo track, JobPriority priority)
        {
            if (track == null || queries == null || track.ArtworkId == null)
            {
                return;
            }

            if (String.IsNullOrEmpty(track.AlbumTitle) || track.AlbumTitle == AlbumInfo.UnknownAlbumTitle ||
                String.IsNullOrEmpty(track.ArtistName) || track.ArtistName == ArtistInfo.UnknownArtistName)
            {
                // Do not try to fetch album art for these
                return;
            }

            lock (((ICollection)queries).SyncRoot) {
                if (!queries.ContainsKey(track))
                {
                    IMetadataLookupJob job = CreateJob(track);
                    if (job == null)
                    {
                        return;
                    }

                    queries.Add(track, job);
                    Scheduler.Schedule(job, priority);
                }
            }
        }
示例#3
0
        private static string GetAlbumUrl (IBasicTrackInfo track)
        {
            if (track == null || track.AlbumArtist == null || track.AlbumTitle == null) {
                return null;
            }

            string artist = EscapeUrlPart (track.AlbumArtist);
            string album = EscapeUrlPart (track.AlbumTitle);
            return String.Format ("{0}/{1}", artist, album);
        }
示例#4
0
        private static string GetAlbumUrl(IBasicTrackInfo track)
        {
            if (track == null || track.AlbumArtist == null || track.AlbumTitle == null)
            {
                return(null);
            }

            string artist = EscapeUrlPart(track.AlbumArtist);
            string album  = EscapeUrlPart(track.AlbumTitle);

            return(String.Format("{0}/{1}", artist, album));
        }
        protected virtual void OnHaveResult(IBasicTrackInfo track, IList <StreamTag> tags)
        {
            if (tags == null)
            {
                return;
            }

            MetadataLookupResultHandler handler = HaveResult;

            if (handler != null)
            {
                handler(this, new MetadataLookupResultArgs(track,
                                                           new ReadOnlyCollection <StreamTag>(tags)));
            }
        }
示例#6
0
        public static string CreateArtworkId(IBasicTrackInfo track)
        {
            string art_id = CoverArtSpec.CreateArtistAlbumId(track.AlbumArtist, track.AlbumTitle);

            if (art_id != null)
            {
                return(art_id);
            }

            art_id = CoverArtSpec.CreateArtistTrackId(track.ArtistName, track.TrackTitle);
            if (art_id != null)
            {
                return(art_id);
            }

            //if track provides embedded artwork but lacks tags, try hard at not giving a null artworkId, so that it can be displayed
            return(CoverArtSpec.CreateUriId(track.Uri));
        }
        internal static bool TrackConditionsMet(IBasicTrackInfo track)
        {
            if (track == null) {
                return false;
            }
            if ((track.MediaAttributes & TrackMediaAttributes.Podcast) != 0) {
                return false;
            }

            if (String.IsNullOrEmpty (track.ArtistName)) {
                return false;
            }
            if (String.IsNullOrEmpty (track.AlbumTitle)) {
                return false;
            }

            return true;
        }
        protected virtual void OnHaveResult(IBasicTrackInfo track, IList<StreamTag> tags)
        {
            if(tags == null || tags.Count == 0) {
                return;
            }

            if (tags.Any (t => t.Name == CommonTags.AlbumCoverId)) {
                var artwork_handler = ArtworkUpdated;
                if (artwork_handler != null) {
                    artwork_handler (track);
                }
            }

            MetadataLookupResultHandler handler = HaveResult;
            if(handler != null) {
                handler(this, new MetadataLookupResultArgs(track,
                    new ReadOnlyCollection<StreamTag>(tags)));
            }
        }
示例#9
0
        public void Lookup(IBasicTrackInfo track, JobPriority priority)
        {
            if (track == null || queries == null || track.ArtworkId == null)
            {
                return;
            }

            lock (((ICollection)queries).SyncRoot) {
                if (!queries.ContainsKey(track))
                {
                    IMetadataLookupJob job = CreateJob(track);
                    if (job == null)
                    {
                        return;
                    }

                    queries.Add(track, job);
                    Scheduler.Schedule(job, priority);
                }
            }
        }
        internal static bool TrackConditionsMet(IBasicTrackInfo track)
        {
            if (track == null)
            {
                return(false);
            }
            if ((track.MediaAttributes & TrackMediaAttributes.Podcast) != 0)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(track.ArtistName))
            {
                return(false);
            }
            if (String.IsNullOrEmpty(track.AlbumTitle))
            {
                return(false);
            }

            return(true);
        }
示例#11
0
        public void Lookup (IBasicTrackInfo track, JobPriority priority)
        {
            if (track == null || queries == null || track.ArtworkId == null) {
                return;
            }

            if (String.IsNullOrEmpty (track.AlbumTitle) || track.AlbumTitle == AlbumInfo.UnknownAlbumTitle ||
                String.IsNullOrEmpty (track.ArtistName) || track.ArtistName == ArtistInfo.UnknownArtistName) {
                // Do not try to fetch album art for these
                return;
            }

            lock (((ICollection)queries).SyncRoot) {
                if (!queries.ContainsKey (track)) {
                    IMetadataLookupJob job = CreateJob (track);
                    if (job == null) {
                        return;
                    }

                    queries.Add (track, job);
                    Scheduler.Schedule (job, priority);
                }
            }
        }
示例#12
0
        protected virtual void OnHaveResult(IBasicTrackInfo track, IList <StreamTag> tags)
        {
            if (tags == null || tags.Count == 0)
            {
                return;
            }

            if (tags.Any(t => t.Name == CommonTags.AlbumCoverId))
            {
                var artwork_handler = ArtworkUpdated;
                if (artwork_handler != null)
                {
                    artwork_handler(track);
                }
            }

            MetadataLookupResultHandler handler = HaveResult;

            if (handler != null)
            {
                handler(this, new MetadataLookupResultArgs(track,
                                                           new ReadOnlyCollection <StreamTag>(tags)));
            }
        }
示例#13
0
 public override void Lookup(IBasicTrackInfo track)
 {
     Lookup (track, JobPriority.Highest);
 }
示例#14
0
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return(new MusicBrainzQueryJob(track));
 }
 public virtual void Lookup(IBasicTrackInfo track)
 {
     IMetadataLookupJob job = CreateJob(track);
     job.Run();
 }
 public virtual void Cancel(IBasicTrackInfo track)
 {
 }
示例#17
0
 public MetadataLookupResultArgs(IBasicTrackInfo track, ReadOnlyCollection <StreamTag> tags)
 {
     this.track = track;
     this.tags  = tags;
 }
示例#18
0
 public MusicBrainzQueryJob (IBasicTrackInfo track)
 {
     Track = track;
     MusicBrainzService.UserAgent = Banshee.Web.Browser.UserAgent;
 }
示例#19
0
 public MusicBrainzQueryJob(IBasicTrackInfo track)
 {
     Track = track;
     MusicBrainzService.UserAgent = Banshee.Web.Browser.UserAgent;
 }
 public FanArtQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
示例#21
0
 public MetadataServiceJob(MetadataService service, IBasicTrackInfo track)
 {
     this.service = service;
     this.track = track;
 }
示例#22
0
 public FileSystemQueryJob(IBasicTrackInfo track)
 {
     Track      = track;
     this.track = track as TrackInfo;
 }
 public MusicBrainzQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
 public FanArtQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return new MusicBrainzQueryJob(track);
 }
 public MusicBrainzQueryJob (IBasicTrackInfo track)
 {
     Track = track;
 }
示例#27
0
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return(new RhapsodyQueryJob(track));
 }
示例#28
0
 public MetadataLookupResultArgs(IBasicTrackInfo track, ReadOnlyCollection<StreamTag> tags)
 {
     this.track = track;
     this.tags = tags;
 }
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return(new FileSystemQueryJob(track));
 }
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return(new EmbeddedQueryJob(track));
 }
 public abstract IMetadataLookupJob CreateJob(IBasicTrackInfo track);
示例#32
0
 public LastFMQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
 public virtual void Cancel(IBasicTrackInfo track)
 {
 }
示例#34
0
 public RhapsodyQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
示例#35
0
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return(new MetadataServiceJob(this, track));
 }
 public abstract IMetadataLookupJob CreateJob(IBasicTrackInfo track);
 public MusicBrainzQueryJob (IBasicTrackInfo track, string asin) : this (track)
 {
     this.asin = asin;
 }
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return new LastFMQueryJob (track);
 }
 public MusicBrainzQueryJob(IBasicTrackInfo track, string asin) : this(track)
 {
     this.asin = asin;
 }
        public virtual void Lookup(IBasicTrackInfo track)
        {
            IMetadataLookupJob job = CreateJob(track);

            job.Run();
        }
示例#41
0
        public void Lookup(IBasicTrackInfo track, JobPriority priority)
        {
            if (track == null || queries == null || track.ArtworkId == null) {
                return;
            }

            lock (((ICollection)queries).SyncRoot) {
                if (!queries.ContainsKey (track)) {
                    IMetadataLookupJob job = CreateJob (track);
                    if (job == null) {
                        return;
                    }

                    queries.Add (track, job);
                    Scheduler.Schedule (job, priority);
                }
            }
        }
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return new FileSystemQueryJob (track);
 }
示例#43
0
 public RhapsodyQueryJob(IBasicTrackInfo track)
 {
     Track = track;
 }
示例#44
0
 public override void Lookup(IBasicTrackInfo track)
 {
     Lookup(track, JobPriority.Highest);
 }
示例#45
0
 public LastFMQueryJob (IBasicTrackInfo track)
 {
     Track = track;
 }
示例#46
0
 public MetadataServiceJob(MetadataService service, IBasicTrackInfo track)
 {
     this.service = service;
     this.track   = track;
 }
示例#47
0
 public EmbeddedQueryJob(IBasicTrackInfo track)
 {
     Track = track;
     this.track = track as TrackInfo;
 }
示例#48
0
 public override IMetadataLookupJob CreateJob(IBasicTrackInfo track)
 {
     return new MetadataServiceJob (this, track);
 }
示例#49
0
 public EmbeddedQueryJob(IBasicTrackInfo track)
 {
     Track      = track;
     this.track = track as TrackInfo;
 }
示例#50
0
 private void OnArtworkUpdated(IBasicTrackInfo track)
 {
     QueueDraw();
 }
示例#51
0
 public FileSystemQueryJob(IBasicTrackInfo track)
 {
     Track = track;
     this.track = track as TrackInfo;
 }
示例#52
0
 private void OnArtworkUpdated(IBasicTrackInfo track)
 {
     ClearCacheFor(track.ArtworkId, true);
 }
示例#53
0
        public static string CreateArtworkId(IBasicTrackInfo track)
        {
            string art_id = CoverArtSpec.CreateArtistAlbumId (track.AlbumArtist, track.AlbumTitle);
            if (art_id != null) {
                return art_id;
            }

            art_id = CoverArtSpec.CreateArtistTrackId (track.ArtistName, track.TrackTitle);
            if (art_id != null) {
                return art_id;
            }

            //if track provides embedded artwork but lacks tags, try hard at not giving a null artworkId, so that it can be displayed
            return CoverArtSpec.CreateUriId (track.Uri);
        }