Beispiel #1
0
        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);
        }
Beispiel #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);
        }