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); }
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); } } }
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); } } }
private void OnSchedulerJobFinished(IJob job) { if (!(job is IMetadataLookupJob)) { return; } IMetadataLookupJob lookup_job = (IMetadataLookupJob)job; RemoveJob(lookup_job); }
private void OnSchedulerJobFinished(IJob job) { if (!(job is IMetadataLookupJob)) { return; } IMetadataLookupJob lookup_job = (IMetadataLookupJob)job; if (RemoveJob(lookup_job)) { Banshee.Base.ThreadAssist.ProxyToMain(delegate { OnHaveResult(lookup_job.Track, lookup_job.ResultTags); }); } }
private bool RemoveJob(IMetadataLookupJob job) { if (job == null || job.Track == null) { return(false); } lock (((ICollection)queries).SyncRoot) { if (queries.ContainsKey(job.Track)) { queries.Remove(job.Track); return(true); } return(false); } }
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 } } }
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 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); }
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); } } }
private bool RemoveJob(IMetadataLookupJob job) { if (job == null || job.Track == null) { return false; } lock (((ICollection)queries).SyncRoot) { if (queries.ContainsKey (job.Track)) { queries.Remove (job.Track); return true; } return false; } }
public virtual void Lookup(IBasicTrackInfo track) { IMetadataLookupJob job = CreateJob(track); job.Run(); }