private void FetchForTrack(DatabaseTrackInfo track)
        {
            bool save = true;

            try {
                if (String.IsNullOrEmpty(track.AlbumTitle) || track.AlbumTitle == Catalog.GetString("Unknown Album") ||
                    String.IsNullOrEmpty(track.ArtistName) || track.ArtistName == Catalog.GetString("Unknown Artist"))
                {
                    // Do not try to fetch album art for these
                }
                else
                {
                    IMetadataLookupJob job = MetadataService.Instance.CreateJob(track);
                    job.Run();
                }
            } catch (System.Threading.ThreadAbortException) {
                save = false;
                throw;
            } catch (Exception e) {
                Log.Exception(e);
            } finally {
                if (save)
                {
                    bool have_cover_art = CoverArtSpec.CoverExists(track.ArtistName, track.AlbumTitle);
                    ServiceManager.DbConnection.Execute(
                        "INSERT OR REPLACE INTO CoverArtDownloads (AlbumID, Downloaded, LastAttempt) VALUES (?, ?, ?)",
                        track.AlbumId, have_cover_art, DateTime.Now);
                }
            }
        }
        private void FetchForTrack(DatabaseTrackInfo track)
        {
            bool save = true;

            try {
                if (!String.IsNullOrEmpty(track.ArtistName))
                {
                    IMetadataLookupJob job = MetadataService.Instance.CreateJob(track);
                    job.Run();
                }
            } catch (System.Threading.ThreadAbortException) {
                save = false;
                throw;
            } finally {
                if (save)
                {
                    // additional work might be done here
                }
            }
        }
예제 #3
0
        public virtual void Run()
        {
            foreach (IMetadataProvider provider in service.Providers)
            {
                if (cancelled)
                {
                    break;
                }
                ;

                try {
                    lock (this) {
                        current_job = provider.CreateJob(track);
                    }

                    current_job.Run();

                    if (cancelled)
                    {
                        break;
                    }
                    ;

                    foreach (StreamTag tag in current_job.ResultTags)
                    {
                        AddTag(tag);
                    }

                    lock (this) {
                        current_job = null;
                    }
                } catch (System.Threading.ThreadAbortException) {
                    throw;
                } catch (Exception e) {
                    Log.Error(e);
                }
            }

            service.OnHaveResult(this);
        }
예제 #4
0
        private void FetchForTrack(DatabaseTrackInfo track)
        {
            bool save = true;

            try {
                IMetadataLookupJob job = MetadataService.Instance.CreateJob(track);
                job.Run();
            } catch (System.Threading.ThreadAbortException) {
                save = false;
                throw;
            } catch (Exception e) {
                Log.Error(e);
            } finally {
                if (save)
                {
                    bool have_cover_art = CoverArtSpec.CoverExists(track.ArtistName, track.AlbumTitle);
                    ServiceManager.DbConnection.Execute(
                        "INSERT OR REPLACE INTO CoverArtDownloads (AlbumID, Downloaded, LastAttempt) VALUES (?, ?, ?)",
                        track.AlbumId, have_cover_art, DateTime.Now);
                }
            }
        }
예제 #5
0
        public virtual void Run()
        {
            foreach(IMetadataProvider provider in service.Providers) {
                if (cancelled)
                    break;;

                try {
                    lock (this) {
                        current_job = provider.CreateJob(track);
                    }

                    current_job.Run();

                    if (cancelled)
                        break;;

                    foreach(StreamTag tag in current_job.ResultTags) {
                        AddTag(tag);
                    }

                    lock (this) {
                        current_job = null;
                    }
                } catch (System.Threading.ThreadAbortException) {
                    throw;
                } catch(Exception e) {
                   Hyena.Log.Exception (e);
                }
            }

            service.OnHaveResult (this);
        }
        public virtual void Lookup(IBasicTrackInfo track)
        {
            IMetadataLookupJob job = CreateJob(track);

            job.Run();
        }