/// <summary> /// Get the Artist, Album Details /// </summary> /// <param name="mv"></param> /// <returns></returns> public bool GetDetails(DBBasicInfo mv) { string strArtistHTML; string strAlbumHTML; string strArtistURL; ReportProgress(string.Empty); // Get details of the artist if (mv.GetType() == typeof(DBArtistInfo)) { string artist = ((DBArtistInfo)mv).Artist; ReportProgress("Getting Artist..."); if (GetArtistHTML(artist, out strArtistHTML, out strArtistURL)) { var artistInfo = AMGHTMLParser.ParseArtistHTML(strArtistHTML, artist); if (artistInfo != null) { artistInfo.Artist = artist; DBArtistInfo mv1 = (DBArtistInfo)mv; SetMusicVideoArtist(ref mv1, artistInfo, strArtistHTML); GetArtistArt((DBArtistInfo)mv); ReportProgress("Done..."); return true; } } return false; } // get details of the album if (mv.GetType() == typeof(DBAlbumInfo)) { string album = ((DBAlbumInfo)mv).Album; List<DBTrackInfo> trackList = DBTrackInfo.GetEntriesByAlbum((DBAlbumInfo)mv); DBArtistInfo artist = DBArtistInfo.Get(trackList[0]); if (GetAlbumHTML(artist.Artist, album, out strAlbumHTML)) { var albumInfo = AMGHTMLParser.ParseAlbumHTML(strAlbumHTML, album, artist.Artist); if (albumInfo != null) { albumInfo.Artist = album; DBAlbumInfo mv1 = (DBAlbumInfo)mv; SetMusicVideoAlbum(ref mv1, albumInfo); } } return false; } // get details of the track if (mv.GetType() == typeof(DBTrackInfo)) { if (((DBTrackInfo)mv).LocalMedia[0].IsDVD) { string track = ((DBTrackInfo)mv).Track; GetDVDDetails((DBTrackInfo)mv); return true; } else { string track = ((DBTrackInfo)mv).Track; GetTrackDetails((DBTrackInfo)mv); return true; } } return true; }
/// <summary> /// Get artwork for suppiled object, Artist, Album or Track /// </summary> /// <param name="mvDBObject"></param> /// <returns></returns> public bool GetArt(DBBasicInfo mvDBObject, bool primarySourceOnly) { bool success = false; int artWorkAdded = 0; logger.Debug("In Method: GetArt(DBBasicInfo mvDBObject, bool primarySourceOnly = " + primarySourceOnly + ")"); // Artist if (mvDBObject.GetType() == typeof(DBArtistInfo)) { var _count = 0; foreach (string _art in mvDBObject.AlternateArts) { if (File.Exists(_art)) _count++; } logger.Debug("GetArt: Artist: mvDBObject.AlternateArts.Count: " + _count + " mvCentralCore.Settings.MaxArtistArts: " + mvCentralCore.Settings.MaxArtistArts); // if we have already hit our limit for the number of artist arts to load, quit if (_count >= mvCentralCore.Settings.MaxArtistArts) return true; List<DBSourceInfo> sources; lock (artistArtSources) sources = new List<DBSourceInfo>(artistArtSources); foreach (DBSourceInfo currSource in sources) { if (currSource.IsDisabled(DataType.ARTISTART)) continue; if (currSource.Provider != mvDBObject.PrimarySource.Provider && primarySourceOnly) continue; logger.Debug("Try to get art from provider : " + currSource.Provider.Name); success = currSource.Provider.GetArtistArt((DBArtistInfo)mvDBObject); if (success) artWorkAdded++; } if (artWorkAdded > 0) { mvDBObject.Commit(); return true; } } // Album if (mvDBObject.GetType() == typeof(DBAlbumInfo)) { var _count = 0; foreach (string _art in mvDBObject.AlternateArts) { if (File.Exists(_art)) _count++; } logger.Debug("GetArt: Album: mvDBObject.AlternateArts.Count: " + _count + " mvCentralCore.Settings.MaxAlbumArts: " + mvCentralCore.Settings.MaxAlbumArts); // if we have already hit our limit for the number of album arts to load, quit if (_count >= mvCentralCore.Settings.MaxAlbumArts) return true; List<DBSourceInfo> sources; lock (albumArtSources) sources = new List<DBSourceInfo>(albumArtSources); artWorkAdded = 0; foreach (DBSourceInfo currSource in sources) { logger.Debug("*** : " + currSource.Provider.Name + " - " + currSource.IsDisabled(DataType.ALBUMART)); if (currSource.IsDisabled(DataType.ALBUMART)) continue; logger.Debug("*** : " + currSource.Provider.Name + " - " + mvDBObject.PrimarySource.Provider.Name + " - " + primarySourceOnly); if (currSource.Provider != mvDBObject.PrimarySource.Provider && primarySourceOnly) continue; logger.Debug("Try to get art from provider: " + currSource.Provider.Name); success = currSource.Provider.GetAlbumArt((DBAlbumInfo)mvDBObject); if (success) artWorkAdded++; } if (artWorkAdded > 0) { mvDBObject.Commit(); return true; } } // Track if (mvDBObject.GetType() == typeof(DBTrackInfo)) { var _count = 0; foreach (string _art in mvDBObject.AlternateArts) { if (File.Exists(_art)) _count++; } logger.Debug("GetArt: Track: mvDBObject.AlternateArts.Count: " + _count + " mvCentralCore.Settings.MaxTrackArts: " + mvCentralCore.Settings.MaxTrackArts); // if we have already hit our limit for the number of Track arts to load, quit if (_count >= mvCentralCore.Settings.MaxTrackArts) return true; List<DBSourceInfo> sources; lock (trackArtSources) sources = new List<DBSourceInfo>(trackArtSources); artWorkAdded = 0; foreach (DBSourceInfo currSource in sources) { if (currSource.IsDisabled(DataType.TRACKART)) continue; if (currSource.Provider != mvDBObject.PrimarySource.Provider && primarySourceOnly) continue; logger.Debug("Try to get art from provider : " + currSource.Provider.Name); success = currSource.Provider.GetTrackArt((DBTrackInfo)mvDBObject); if (success) artWorkAdded++; } if (artWorkAdded > 0) { mvDBObject.Commit(); return true; } } return false; }
/// <summary> /// Get the details for the suppkied object type, Artist, Album or Track /// </summary> /// <param name="mvDbObject"></param> /// <returns></returns> public bool GetDetails(DBBasicInfo mvDbObject) { // Artist if (mvDbObject.GetType() == typeof(DBArtistInfo)) { // if we have already hit our limit for the number of Artist arts to load, quit if (mvDbObject.AlternateArts.Count >= mvCentralCore.Settings.MaxArtistArts) return true; List<DBSourceInfo> sources; lock (artistArtSources) sources = new List<DBSourceInfo>(artistArtSources); foreach (DBSourceInfo currSource in sources) { if (currSource.IsDisabled(DataType.ARTISTART)) continue; bool success = currSource.Provider.GetDetails((DBArtistInfo)mvDbObject); if (success) return true; } } // Album if (mvDbObject.GetType() == typeof(DBAlbumInfo)) { // if we have already hit our limit for the number of Album arts to load, quit if (mvDbObject.AlternateArts.Count >= mvCentralCore.Settings.MaxAlbumArts) return true; List<DBSourceInfo> sources; lock (albumArtSources) sources = new List<DBSourceInfo>(albumArtSources); foreach (DBSourceInfo currSource in sources) { if (currSource.IsDisabled(DataType.ALBUMART)) continue; bool success = currSource.Provider.GetDetails((DBAlbumInfo)mvDbObject); if (success) return true; } } // Track if (mvDbObject.GetType() == typeof(DBTrackInfo)) { // if we have already hit our limit for the number of Track arts to load, quit if (mvDbObject.AlternateArts.Count >= mvCentralCore.Settings.MaxTrackArts) return true; List<DBSourceInfo> sources; lock (trackArtSources) sources = new List<DBSourceInfo>(trackArtSources); foreach (DBSourceInfo currSource in sources) { if (currSource.IsDisabled(DataType.TRACKART)) continue; bool success = currSource.Provider.GetDetails((DBTrackInfo)mvDbObject); if (success) return true; } } return false; }
public bool GetDetails(DBBasicInfo mv) { logger.Debug("In Method: GetDetails(DBBasicInfo mv)"); MusicDatabase m_db = null; string inLang = mvCentralCore.Settings.DataProviderAutoLanguage; ReportProgress(string.Empty); try { m_db = MusicDatabase.Instance; } catch (Exception e) { logger.Error("GetDetails: Music database init failed " + e.ToString()); return false; } // ---------------- Get Artist Info --------------------- if (mv.GetType() == typeof (DBArtistInfo)) { var artist = ((DBArtistInfo) mv).Artist; var releases = new List<Release>(); var artists = new ArrayList(); // Grab the Artist Info if (artist != null) { ReportProgress("Getting Artists..."); logger.Debug("GetDetails: Getting Artists: " + artist); artists.Clear(); string strArtist = NormalizeArtist(artist); string strSQL = String.Format("SELECT a.strArtist FROM artist a, artistinfo i WHERE LOWER(a.strArtist) = LOWER(i.strArtist) AND i.strAMGBio IS NOT NULL AND TRIM(i.strAMGBio) <> '' AND LOWER(i.strArtist) LIKE '%{0}%';", strArtist); List<Song> songInfo = new List<Song>(); m_db.GetSongsByFilter(strSQL, out songInfo, "artist"); foreach (Song mySong in songInfo) { if (!string.IsNullOrEmpty(mySong.Artist)) { artists.Add(mySong.Artist); } } } else return false; if (artists == null || artists.Count <= 0) return false; foreach (string _artist in artists) { Release r2 = new Release(_artist, string.Empty); releases.Add(r2); } ReportProgress("Done!"); // Now sort and Display the retrived matches releases.Sort(Release.TitleComparison); var resultsDialog = new DetailsPopup(releases); // Get the full info for the selection if (resultsDialog.ShowDialog() == DialogResult.OK) { var mv1 = (DBArtistInfo)mv; mv.ArtUrls.Clear(); string title = resultsDialog.selectedItem.Text; string mbid = resultsDialog.label8.Text; if (title.Trim().Length == 0) title = null; if (mbid.Trim().Length == 0) mbid = null; setMusicVideoArtist(ref mv1, title, mbid); GetArtistArt((DBArtistInfo) mv); } } // -------------- Get Album Info -------------- if (mv.GetType() == typeof(DBAlbumInfo)) { List<DBTrackInfo> a1 = DBTrackInfo.GetEntriesByAlbum((DBAlbumInfo)mv); if (a1.Count > 0) { string artist = a1[0].ArtistInfo[0].Artist; var albums = new ArrayList(); ; if (artist != null) { ReportProgress("Getting Albums..."); logger.Debug("GetDetails: Getting Albums: " + artist); albums.Clear(); string strArtist = NormalizeArtist(artist); string strSQL = String.Format("SELECT DISTINCT T.strAlbum, A.strReview FROM albuminfo A, tracks T WHERE A.strReview IS NOT NULL AND TRIM(A.strReview) <> '' AND (A.strArtist LIKE '%{0}%' OR A.strAlbumArtist LIKE '%{1}%') AND T.strAlbum = A.strAlbum COLLATE NOCASE;", strArtist, strArtist); List<Song> songInfo = new List<Song>(); m_db.GetSongsByFilter(strSQL, out songInfo, "album"); logger.Debug("GetDetails: Getting Albums: " + artist + " - " + songInfo.Count); foreach (Song mySong in songInfo) { if (!string.IsNullOrEmpty(mySong.Album)) { albums.Add(mySong.Album); } } } else return false; if (albums == null || albums.Count <= 0) return false; List<Release> artistTopAlbumns = new List<Release>(); foreach (string _album in albums) { logger.Debug("GetDetails: Getting Albums: " + artist + " - " + _album); Release r2 = new Release(_album, string.Empty); artistTopAlbumns.Add(r2); } ReportProgress("Done!"); artistTopAlbumns.Sort(Release.TitleComparison); DetailsPopup d1 = new DetailsPopup(artistTopAlbumns); if (d1.ShowDialog() == DialogResult.OK) { DBAlbumInfo mv1 = (DBAlbumInfo)mv; mv.ArtUrls.Clear(); string title = d1.selectedItem.Text; string mbid = d1.label8.Text; if (title.Trim().Length == 0) title = null; if (mbid.Trim().Length == 0) mbid = null; setMusicVideoAlbum(ref mv1, artist, title, mbid); GetAlbumArt((DBAlbumInfo)mv); } } } // -------------- Get Track Info -------------- if (mv.GetType() == typeof(DBTrackInfo)) { string artist = ((DBTrackInfo)mv).ArtistInfo[0].Artist; var tracks = new ArrayList();; if (artist != null) { ReportProgress("Getting Tracks..."); logger.Debug("GetDetails: Getting Tracks: " + artist); tracks.Clear(); string strArtist = NormalizeArtist(artist); string strSQL = String.Format("SELECT strTitle FROM tracks WHERE strArtist LIKE '%| {0} |%' OR strAlbumArtist LIKE '%| {1} |%';');", strArtist, strArtist); List<Song> songInfo = new List<Song>(); m_db.GetSongsByFilter(strSQL, out songInfo, "tracks"); logger.Debug("GetDetails: Getting Tracks: " + artist + " - " + songInfo.Count); foreach (Song mySong in songInfo) { if (!string.IsNullOrEmpty(mySong.Title)) { tracks.Add(mySong.Title); } } } else return false; if (tracks == null || tracks.Count <= 0) return false; List<Release> artistTopTracks = new List<Release>(); foreach (string _track in tracks) { logger.Debug("GetDetails: Getting Track: " + artist + " - " + _track); Release r2 = new Release(_track, string.Empty); artistTopTracks.Add(r2); } ReportProgress("Done!"); artistTopTracks.Sort(Release.TitleComparison); DetailsPopup d1 = new DetailsPopup(artistTopTracks); if (d1.ShowDialog() == DialogResult.OK) { DBTrackInfo mv1 = (DBTrackInfo)mv; mv.ArtUrls.Clear(); if (artist.Trim().Length == 0) artist = null; string title = d1.selectedItem.Text; string mbid = d1.label8.Text; if (title.Trim().Length == 0) title = null; if (mbid.Trim().Length == 0) mbid = null; setMusicVideoTrack(ref mv1, artist, title, mbid); GetTrackArt((DBTrackInfo)mv); } } return true; }