private void SetCoverArtImageThreaded(string message, MusicFileMetaData metaData, string tooltipText, string musicPath) { // Thread to set the cover artwork image, because this can take some unwanted time when // checking lots of music files to see if they're already uploaded to YouTube Music // and we want to cancel the thread if it's still running on the next track check // and just display the default cover artwork try { if (_artworkFetchThread != null) { try { _artworkFetchThread.Abort(); } catch { } if (MainForm.ArtworkImage != null && ImageHelper.IsSameImage(MainForm.ArtworkImage, Properties.Resources.default_artwork)) { MainForm.SetUploadingMessage( message, metaData, tooltipText, null, false); } else { if (string.IsNullOrEmpty(musicPath)) { MainForm.SetUploadingMessage( message, metaData, tooltipText, null, true); } else { MainForm.SetUploadingMessage( message, metaData, tooltipText, Properties.Resources.default_artwork, true); } } } if (!string.IsNullOrEmpty(musicPath)) { ThreadPool.QueueUserWorkItem(delegate { var image = MainForm.MusicDataFetcher.GetAlbumArtwork(musicPath).Result; if (image != null && MainForm.ArtworkImage != null && ImageHelper.IsSameImage(image, MainForm.ArtworkImage)) { MainForm.SetUploadingMessage( message, metaData, tooltipText, null, false); } else { MainForm.SetUploadingMessage( message, metaData, tooltipText, image, true); } }); } } catch { } }
private async Task SetUploadDetails( string message, string musicPath, bool setArtworkImage, bool useMusicBrainzFallback) { try { string tooltipText = string.Empty; MusicFileMetaData metaData = null; if (string.IsNullOrEmpty(musicPath)) { tooltipText = "Idle"; } else { metaData = MainForm.MusicDataFetcher.GetMusicFileMetaData(musicPath, out tooltipText); } if (!setArtworkImage) { // just set the text MainForm.SetUploadingMessage( message, metaData, tooltipText, null, false); await Task.Run(() => { }); } else { if (!useMusicBrainzFallback) { if (_artworkFetchThread != null) { try { _artworkFetchThread.Abort(); } catch { } } if (string.IsNullOrEmpty(musicPath)) { MainForm.SetUploadingMessage( message, metaData, tooltipText, null, true); } else { var image = await MainForm.MusicDataFetcher.GetAlbumArtwork(musicPath, false); if (image != null && MainForm.ArtworkImage != null && ImageHelper.IsSameImage(image, MainForm.ArtworkImage)) { MainForm.SetUploadingMessage( message, metaData, tooltipText, null, false); } else { MainForm.SetUploadingMessage( message, metaData, tooltipText, image, true); } } } else { // Only used for when 'uploading' a track - Will attempt to get info for MusicBrainz (i.e. cover image) SetCoverArtImageThreaded(message, metaData, tooltipText, musicPath); } await Task.Run(() => { }); } } catch (Exception e) { Logger.Log(e, "SetUploadDetails"); } }