Ejemplo n.º 1
0
        /// <summary>
        /// Retrive a list of albums from Last.FM linked with the artist
        /// </summary>
        /// <param name="artist"></param>
        /// <returns></returns>
        private bool getAlbumsByArtist(string artist)
        {
            XmlNodeList xml = null;

            if (artist != null)
            {
                xml = getXML(string.Format(apiArtistTopAlbums, artist));
            }
            else
            {
                return(false);
            }

            if (xml == null)
            {
                return(false);
            }

            XmlNode root = xml.Item(0).ParentNode;

            if (root.Attributes != null && root.Attributes["status"].Value != "ok")
            {
                return(false);
            }
            XmlNode albumList = root.SelectSingleNode(@"/lfm/topalbums");

            List <Release> albumReleases = new List <Release>();

            foreach (XmlNode album in albumList.ChildNodes)
            {
                Release releasedAlbum = new Release(album);
                albumReleases.Add(releasedAlbum);
            }
            albumReleases.Sort(Release.TitleComparison);
            DetailsPopup albumListDialog = new DetailsPopup(albumReleases);

            if (albumListDialog.ShowDialog() == DialogResult.OK)
            {
                tbAlbumName.Text = albumListDialog.selectedItem.Text;
                AlbumMBID        = albumListDialog.label8.Text;
                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
        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;
        }