protected virtual void ShowArtistInfo(string artistName, string albumName) { Log.Debug("Looking up Artist: {0}", albumName); var dlgProgress = (GUIDialogProgress)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_PROGRESS); var pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); var errorEncountered = true; var artist = new ArtistInfo(); var artistInfo = new MusicArtistInfo(); if (m_database.GetArtistInfo(artistName, ref artist)) { // we already have artist info in database so just use that artistInfo.Set(artist); errorEncountered = false; } else { // lookup artist details if (null != pDlgOK && !Win32API.IsConnectedToInternet()) { pDlgOK.SetHeading(703); pDlgOK.SetLine(1, 703); pDlgOK.SetLine(2, string.Empty); pDlgOK.DoModal(GetID); return; } // show dialog box indicating we're searching the artist if (dlgProgress != null) { dlgProgress.Reset(); dlgProgress.SetHeading(320); dlgProgress.SetLine(1, artistName); dlgProgress.SetLine(2, string.Empty); dlgProgress.SetPercentage(0); dlgProgress.StartModal(GetID); dlgProgress.Progress(); dlgProgress.ShowProgressBar(true); } var scraper = new AllmusicSiteScraper(); List<AllMusicArtistMatch> artists; if(scraper.GetArtists(artistName, out artists)) { var selectedMatch = new AllMusicArtistMatch(); if (artists.Count == 1) { // only have single match so no need to ask user Log.Debug("Single Artist Match Found"); selectedMatch = artists[0]; errorEncountered = false; } else { // need to get user to choose which one to use Log.Debug("Muliple Artist Match Found ({0}) prompting user", artists.Count); var pDlg = (GUIDialogSelect2) GUIWindowManager.GetWindow((int) Window.WINDOW_DIALOG_SELECT2); if (null != pDlg) { pDlg.Reset(); pDlg.SetHeading(GUILocalizeStrings.Get(1303)); foreach (var i in artists.Select(artistMatch => new GUIListItem { Label = artistMatch.Artist + " - " + artistMatch.Genre, Label2 = artistMatch.YearsActive, Path = artistMatch.ArtistUrl, IconImage = artistMatch.ImageUrl })) { pDlg.Add(i); } pDlg.DoModal(GetID); // and wait till user selects one var iSelectedMatch = pDlg.SelectedLabel; if (iSelectedMatch < 0) { return; } selectedMatch = artists[iSelectedMatch]; } if (null != dlgProgress) { dlgProgress.Reset(); dlgProgress.SetHeading(320); dlgProgress.SetLine(1, artistName); dlgProgress.SetLine(2, string.Empty); dlgProgress.SetPercentage(40); dlgProgress.StartModal(GetID); dlgProgress.ShowProgressBar(true); dlgProgress.Progress(); } } string strHtml; if (scraper.GetArtistHtml(selectedMatch, out strHtml)) { if (null != dlgProgress) { dlgProgress.SetPercentage(60); dlgProgress.Progress(); } if (artistInfo.Parse(strHtml)) { if (null != dlgProgress) { dlgProgress.SetPercentage(80); dlgProgress.Progress(); } m_database.AddArtistInfo(artistInfo.Get()); errorEncountered = false; } } } } if (null != dlgProgress) { dlgProgress.SetPercentage(100); dlgProgress.Progress(); dlgProgress.Close(); dlgProgress = null; } if (!errorEncountered) { var pDlgArtistInfo = (GUIMusicArtistInfo)GUIWindowManager.GetWindow((int)Window.WINDOW_ARTIST_INFO); if (null != pDlgArtistInfo) { pDlgArtistInfo.Artist = artistInfo; pDlgArtistInfo.DoModal(GetID); if (pDlgArtistInfo.NeedsRefresh) { m_database.DeleteArtistInfo(artistInfo.Artist); ShowArtistInfo(artistName, albumName); } } } else { Log.Debug("Unable to get artist details"); if (null != pDlgOK) { pDlgOK.SetHeading(702); pDlgOK.SetLine(1, 702); pDlgOK.SetLine(2, string.Empty); pDlgOK.DoModal(GetID); } } }
protected override void OnPageDestroy(int newWindowId) { //if (m_bRunning) //{ // m_bRunning = false; // m_pParentWindow = null; // GUIWindowManager.UnRoute(); //} artistInfo = null; if (coverArtTexture != null) { coverArtTexture.Dispose(); coverArtTexture = null; } base.OnPageDestroy(newWindowId); }
protected override void OnPageDestroy(int newWindowId) { artistInfo = null; base.OnPageDestroy(newWindowId); }
/// <summary> /// Get the details of the track /// </summary> /// <param name="trackObject"></param> private void GetDVDDetails(DBTrackInfo trackObject) { string strArtistHTML; string strAlbumHTML; string strArtistURL; bool songFound = false; List<DBTrackInfo> results = new List<DBTrackInfo>(); string artist = trackObject.ArtistInfo[0].Artist; if (GetArtistHTML(artist, out strArtistHTML, out strArtistURL)) { var artistInfo = new MusicArtistInfo(); if (artistInfo.Parse(strArtistHTML)) { artistInfo.Artist = artist; if (GetDVDURLList(strArtistURL)) { // we have some albums - now check the tracks in each album foreach (string albumURL in _albumUrlList) { if (GetPageHTMLOnly(albumURL, out strAlbumHTML)) { var albumInfo = new MusicAlbumInfo(); if (albumInfo.Parse(strAlbumHTML)) { string[] tracksOnAlbum = albumInfo.Tracks.Split('|'); foreach (string track in tracksOnAlbum) { if (!string.IsNullOrEmpty(track.Trim())) { string[] trackData = track.Split('@'); if (trackObject.Track == trackData[1]) { songFound = getTrackComposers(trackObject, strAlbumHTML, trackData[3]); break; } } } } } } } } } }
/// <summary> /// Get the details of the track /// </summary> /// <param name="trackObject"></param> private void GetTrackDetails(DBTrackInfo trackObject) { string strArtistHTML; string strAlbumHTML; string strArtistURL; bool songFound = false; const int trackName = 1; const int trackURL = 3; List<DBTrackInfo> results = new List<DBTrackInfo>(); string strAlbumArtist = trackObject.ArtistInfo[0].Artist; if (GetArtistHTML(strAlbumArtist, out strArtistHTML, out strArtistURL)) { var artistInfo = new MusicArtistInfo(); if (artistInfo.Parse(strArtistHTML)) { artistInfo.Artist = strAlbumArtist; if (GetAlbumURLList(strArtistURL)) { // we have some albums - now check the tracks in each album foreach (string albumURL in _albumUrlList) { // If we found the song then exit... if (songFound) break; if (GetPageHTMLOnly(albumURL, out strAlbumHTML)) { string strAlbum = Regex.Match(albumURL, "[^/]+-", RegexOptions.Singleline | RegexOptions.IgnoreCase).Value; strAlbum = Regex.Replace(strAlbum, "[-?*]", " ", RegexOptions.Singleline | RegexOptions.IgnoreCase); var albumInfo = AMGHTMLParser.ParseAlbumHTML(strAlbumHTML, strAlbum.Trim(), strAlbumArtist); if (albumInfo != null) { string[] tracksOnAlbum = albumInfo.Tracks.Split('|'); foreach (string track in tracksOnAlbum) { if (!string.IsNullOrEmpty(track.Trim())) { string[] trackData = track.Split('@'); if (string.Equals(trackObject.Track, trackData[trackName], StringComparison.CurrentCultureIgnoreCase)) { Logger.Debug("Get Composers for Track {0} by {1}", trackObject.Track, strAlbumArtist); songFound = getTrackComposers(trackObject, strAlbumHTML, trackData[trackURL]); Logger.Debug("Composers for Track {0} by {1} are {2}", trackObject.Track, strAlbumArtist, trackObject.Composers); break; } } } } } } } } } }
protected virtual void ShowArtistInfo(string artistName, string albumName) { GUIDialogOK pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); GUIDialogProgress dlgProgress = (GUIDialogProgress)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_PROGRESS); bool bSaveDb = true; bool bDisplayErr = false; ArtistInfo artist = new ArtistInfo(); MusicArtistInfo artistInfo = new MusicArtistInfo(); if (m_database.GetArtistInfo(artistName, ref artist)) { artistInfo.Set(artist); } else { if (null != pDlgOK && !Win32API.IsConnectedToInternet()) { pDlgOK.SetHeading(703); pDlgOK.SetLine(1, 703); pDlgOK.SetLine(2, string.Empty); pDlgOK.DoModal(GetID); return; } // show dialog box indicating we're searching the artist if (dlgProgress != null) { dlgProgress.Reset(); dlgProgress.SetHeading(320); dlgProgress.SetLine(1, artistName); dlgProgress.SetLine(2, string.Empty); dlgProgress.SetPercentage(0); dlgProgress.StartModal(GetID); dlgProgress.Progress(); dlgProgress.ShowProgressBar(true); } // find artist info AllmusicSiteScraper scraper = new AllmusicSiteScraper(); if (scraper.FindInfo(AllmusicSiteScraper.SearchBy.Artists, artistName)) { // did we find at least 1 artist? if (scraper.IsMultiple()) { // let user choose one int iSelectedArtist = 0; string szText = GUILocalizeStrings.Get(181); GUIDialogSelect pDlg = (GUIDialogSelect)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_SELECT); if (null != pDlg) { pDlg.Reset(); pDlg.SetHeading(szText); foreach (string selectedArtist in scraper.GetItemsFound()) { pDlg.Add(selectedArtist); } pDlg.DoModal(GetID); // and wait till user selects one iSelectedArtist = pDlg.SelectedLabel; if (iSelectedArtist < 0) { return; } } // ok, now show dialog we're downloading the artist info if (null != dlgProgress) { dlgProgress.Reset(); dlgProgress.SetHeading(320); dlgProgress.SetLine(1, artistName); dlgProgress.SetLine(2, string.Empty); dlgProgress.SetPercentage(40); dlgProgress.StartModal(GetID); dlgProgress.ShowProgressBar(true); dlgProgress.Progress(); } // download the artist info if (!scraper.FindInfoByIndex(iSelectedArtist)) { if (null != dlgProgress) { dlgProgress.Close(); } return; } } if (null != dlgProgress) { dlgProgress.SetPercentage(60); dlgProgress.Progress(); } // Now we have either a Single hit or a selected Artist // Parse it if (artistInfo.Parse(scraper.GetHtmlContent())) { // if the artist selected from allmusic.com does not match // the one from the file, override the one from the allmusic // with the one from the file so the info is correct in the // database... if (!artistInfo.Artist.Equals(artistName)) { artistInfo.Artist = artistName; } if (bSaveDb) { // save to database m_database.AddArtistInfo(artistInfo.Get()); } if (null != dlgProgress) { dlgProgress.SetPercentage(100); dlgProgress.Progress(); dlgProgress.Close(); dlgProgress = null; } } else { bDisplayErr = true; } } else { bDisplayErr = true; } } if (null != dlgProgress) { dlgProgress.Close(); } if (!bDisplayErr) { // ok, show Artist info GUIMusicArtistInfo pDlgArtistInfo = (GUIMusicArtistInfo)GUIWindowManager.GetWindow((int)Window.WINDOW_ARTIST_INFO); if (null != pDlgArtistInfo) { pDlgArtistInfo.Artist = artistInfo; pDlgArtistInfo.DoModal(GetID); if (pDlgArtistInfo.NeedsRefresh) { m_database.DeleteArtistInfo(artistInfo.Artist); ShowArtistInfo(artistName, albumName); return; } } } else { if (null != dlgProgress) { dlgProgress.Close(); } if (null != pDlgOK) { pDlgOK.SetHeading(702); pDlgOK.SetLine(1, 702); pDlgOK.SetLine(2, string.Empty); pDlgOK.DoModal(GetID); } } }
public bool GetDetails(ArtistItem artistItem) { if (string.IsNullOrEmpty(artistItem.Name)) return false; string strArtistHTML; string strAlbumHTML; string strArtistURL; string artist = artistItem.Name; if (GetArtistHTML(artist, out strArtistHTML, out strArtistURL)) { var artistInfo = new MusicArtistInfo(); if (artistInfo.Parse(strArtistHTML)) { artistInfo.Artist = artist; artistItem.Bio = artistInfo.AMGBiography; if (!string.IsNullOrEmpty(artistInfo.ImageURL)) artistItem.Img_url = artistInfo.ImageURL; //setMusicVideoArtist(ref mv1, artistInfo, strArtistHTML); //GetArtistArt((DBArtistInfo)mv); return true; } } return false; }
/// <summary> /// Set the Artist information /// </summary> /// <param name="mv"></param> /// <param name="artistInfo"></param> private void setMusicVideoArtist(ref DBArtistInfo mv, MusicArtistInfo artistInfo) { }