Exemplo n.º 1
0
        private static bool getScrobbleSession(string UserName, string Password)
        {
            string timeStamp = Net.GetUNIXTimestamp(DateTime.Now);

            string auth = Notices.MD5Hash(Notices.MD5Hash(Password) + timeStamp);

            string s      = String.Format(SESSION_URL, CLIENT_INFO, UserName, timeStamp, auth);
            string result = Net.Get(s);

            string[] vals = result.Split('\n');

            if (vals.Length < 4)
            {
                return(false);
            }

            if (vals[0] != "OK")
            {
                return(false);
            }

            sessionID     = vals[1];
            nowPlayingURL = vals[2];
            submissionURL = vals[3];

            return(true);
        }
Exemplo n.º 2
0
        private static InfoPacket getInfoPacket(string Artist, string Album)
        {
            InfoPacket ip = null;

            if (albumInfo.ContainsKey(Artist + Album))
            {
                ip = albumInfo[Artist + Album];

                while (ip.IsLoading)
                {
                    System.Threading.Thread.Sleep(100);
                }

                if (ip.Info == Net.FAILED_TOKEN && StringUtil.HasParentheticalChars(Album))
                {
                    return(getInfoPacket(Artist, StringUtil.RemoveParentheticalChars(Album)));
                }
                else
                {
                    return(ip);
                }
            }

            ip           = new InfoPacket();
            ip.IsLoading = true;
            albumInfo.Add(Artist + Album, ip);
            ip.Info = Net.FAILED_TOKEN;

            string date = String.Empty;

            if (Artist.Length > 0 && Album.Length > 0)
            {
                string url = String.Format("http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key={0}&artist={1}&album={2}",
                                           API_KEY,
                                           HttpUtility.UrlEncode(Artist),
                                           HttpUtility.UrlEncode(Album));

                string ret = Net.Get(url);

                if (ret.Length > 0)
                {
                    populateInfoPacket(ip, ret);

                    if (ip.Info == Net.FAILED_TOKEN &&
                        StringUtil.HasParentheticalChars(Album))
                    {
                        ip.IsLoading = false;
                        return(getInfoPacket(Artist, StringUtil.RemoveParentheticalChars(Album)));
                    }
                }
            }
            if (ip.Info != Net.FAILED_TOKEN)
            {
                ip.Info += Environment.NewLine +
                           Environment.NewLine +
                           "Information provided courtesy of last.fm";
            }
            ip.IsLoading = false;
            return(ip);
        }
Exemplo n.º 3
0
        private void getLyricsImpl(string Artist, string Title, LyricsCallback Callback)
        {
            if (Artist.Length > 0 && Title.Length > 0)
            {
                string url = LyricWiki.URL + String.Format("{0}:{1}", HttpUtility.UrlEncode(Artist.Replace(' ', '_')), HttpUtility.UrlEncode(Title.Replace(' ', '_')));

                string result = Net.Get(url).Trim();

                if (result.Length == 0)
                {
                    result = Net.FAILED_TOKEN;
                }
                else if (result.StartsWith("not found", StringComparison.InvariantCultureIgnoreCase))
                {
                    result = Net.FAILED_TOKEN;
                }

                if (result != Net.FAILED_TOKEN)
                {
                    lyrics.Add(Artist + Title, result);
                }

                if (result == Net.FAILED_TOKEN)
                {
                    if (StringUtil.HasParentheticalChars(Title))
                    {
                        getLyricsURL(Artist, StringUtil.RemoveParentheticalChars(Title), Callback);
                    }
                    else
                    {
                        Callback(Net.FAILED_TOKEN);
                    }
                }
                else
                {
                    string s = extractLyrics(result);

                    if (s == String.Empty)
                    {
                        s = Net.FAILED_TOKEN;
                    }
                    Callback(s);
                }
            }
            else
            {
                Callback(Net.FAILED_TOKEN);
            }
        }
Exemplo n.º 4
0
        public static void UpdateArtistInfo(Track Track, ArtistCallback Callback)
        {
            InfoPacket ip;

            if (artistInfo.ContainsKey(Track.Artist))
            {
                ip = artistInfo[Track.Artist];
                Callback(ip.Info, ip.URL);
                return;
            }

            ip = new InfoPacket();
            artistInfo.Add(Track.Artist, ip);
            ip.Info = Net.FAILED_TOKEN;

            if (Track.Artist.Length > 0)
            {
                string url = String.Format("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key={0}&artist={1}",
                                           API_KEY,
                                           HttpUtility.UrlEncode(Track.Artist));

                string ret = Net.Get(url);

                if (ret.Length > 0)
                {
                    populateInfoPacket(ip, ret);

                    if (ip.Info != Net.FAILED_TOKEN)
                    {
                        ip.Info += Environment.NewLine + Environment.NewLine + "Information provided courtesy of last.fm";
                    }
                }
            }

            Callback(ip.Info, ip.URL);

            return;
        }