public bool GetDetails(DBBasicInfo mv) { if (mv.GetType() == typeof(DBAlbumInfo)) { List <DBTrackInfo> a1 = DBTrackInfo.GetEntriesByAlbum((DBAlbumInfo)mv); if (a1.Count > 0) { string artist = a1[0].ArtistInfo[0].Artist; //first get artist info XmlNodeList xml = null; if (artist != null) { xml = getXML(apiArtistGetInfo, artist); } else { return(false); } if (xml == null) { return(false); } XmlNode root = xml.Item(0).ParentNode; if (root.Attributes != null && root.Attributes["stat"].Value != "ok") { return(false); } XmlNode n1 = root.SelectSingleNode(@"/resp/artist/releases"); List <Release> r1 = new List <Release>(); foreach (XmlNode x1 in n1.ChildNodes) { Release r2 = new Release(x1); r1.Add(r2); } r1.Sort(Release.TitleComparison); DetailsPopup d1 = new DetailsPopup(r1); if (d1.ShowDialog() == DialogResult.OK) { DBAlbumInfo mv1 = (DBAlbumInfo)mv; setMusicVideoAlbum(ref mv1, d1.label8.Text); GetAlbumArt((DBAlbumInfo)mv); } ; } } if (mv.GetType() == typeof(DBTrackInfo)) { string artist = ((DBTrackInfo)mv).ArtistInfo[0].Artist; //first get artist info XmlNodeList xml = null; if (artist != null) { xml = getXML(apiArtistGetInfo, artist); } else { return(false); } if (xml == null) { return(false); } XmlNode root = xml.Item(0).ParentNode; if (root.Attributes != null && root.Attributes["stat"].Value != "ok") { return(false); } XmlNode n1 = root.SelectSingleNode(@"/resp/artist/releases"); if (n1 == null) { return(false); } List <Release> r1 = new List <Release>(); foreach (XmlNode x1 in n1.ChildNodes) { Release r2 = new Release(x1); r1.Add(r2); } r1.Sort(Release.TitleComparison); DetailsPopup d1 = new DetailsPopup(r1); if (d1.ShowDialog() == DialogResult.OK) { DBTrackInfo mv1 = (DBTrackInfo)mv; setMusicVideoTrack(ref mv1, d1.label8.Text); GetTrackArt((DBTrackInfo)mv); } ; } return(true); }
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); }