예제 #1
0
        public void Handshake()
        {
            connected = false;
            last_handshake = DateTime.Now;

            decimal timestamp = Timestamp ();
            string auth = AuthHash (timestamp);

            string url = BaseUrl + "?hs=true&p=" + ProtocolVersion + "&c=" +
                ClientId + "&v=" + ClientVersion + "&u=" + username +
                    "&t=" + timestamp + "&a=" + auth;

            FMRequest request = new FMRequest ();
            request.RequestCompleted += new FMRequest.RequestCompletedHandler (HandshakeRequestCompleted);
            request.DoRequest (url);
        }
예제 #2
0
        public void NowPlayingNotification(Song song)
        {
            if (NowPlayingNotificationEnabled) {
                if (Connected) {
                    StringBuilder post_data = new StringBuilder ();

                    post_data.Append ("s=" + session);
                    post_data.Append ("&a=" + Escape (song.Artist));
                    post_data.Append ("&t=" + Escape (song.Track));
                    post_data.Append ("&b=" + Escape (song.Album));
                    post_data.Append ("&l=" + (int) Math.Round ((double) song.Length / 1000));
                    post_data.Append ("&n=");
                    post_data.Append ("&m=");

                    FMRequest request = new FMRequest ();
                    request.RequestCompleted += new FMRequest.RequestCompletedHandler (OnNotificationCompleted);

                    request.DoRequest (now_playing_url, post_data.ToString ());
                }
            }
        }
예제 #3
0
        public void Scrobble(Song[] songs)
        {
            if (!Connected) {
                unsubmitted_songs.AddRange (songs);
            } else if (songs.Length > 0) {
                StringBuilder post_data = new StringBuilder ();

                post_data.Append ("s=" + session);

                int i = 0;
                foreach (Song song in songs) {
                    if (song.Length > 30000) {
                        if (i<MaxSongsPerPost) {
                            post_data.Append ("&a["+i+"]=" + Escape (song.Artist));
                            post_data.Append ("&t["+i+"]=" + Escape (song.Track));
                            post_data.Append ("&i["+i+"]=" + Timestamp (song.StartTime));
                            post_data.Append ("&o["+i+"]=L" + song.TrackAuth);
                            post_data.Append ("&r["+i+"]=");
                            post_data.Append ("&l["+i+"]=" + (int) Math.Round ((double) song.Length / 1000));
                            post_data.Append ("&b["+i+"]=" + Escape (song.Album));
                            post_data.Append ("&n["+i+"]=");
                            post_data.Append ("&m["+i+"]=");
                            i++;
                            } else {
                            break;
                        }
                    }

                }

                FMRequest request = new FMRequest ();
                request.RequestCompleted += new FMRequest.RequestCompletedHandler (OnSubmissionCompleted);
                failed_submitted_songs.Add (request, songs);
                request.DoRequest (submission_url, post_data.ToString ());

                if (i>=MaxSongsPerPost) {
                    Song[] s = new Song[songs.Length-MaxSongsPerPost];
                    songs.CopyTo (s, i);
                    Scrobble (s);
                }
            }
        }
예제 #4
0
        public void Handshake()
        {
            string handshake_url = "http://ws.audioscrobbler.com/radio/handshake.php?version=" + "1.1.1" + "&platform=" + "linux" + "&username="******"&passwordmd5=" + password + "&language=en&session=324234";
            FMRequest fmr = new FMRequest ();

            fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (HandshakeCompleted);

            fmr.DoRequest (handshake_url);
            DoOperationStarted ();
        }
예제 #5
0
        public void Love()
        {
            FMRequest fmr = new FMRequest ();
            string url = "http://" + base_url + "/" + base_path + "/control.php?session=" + session + "&command=love&debug=0";

            fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (LoveCompleted);
            fmr.DoRequest (url);
            DoOperationStarted ();
        }
예제 #6
0
 public void GetMetadata()
 {
     FMRequest fmr = new FMRequest ();
     string url = "http://" + base_url + "/" + base_path + "/np.php?session=" + session + "&debug=1";
     fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (MetadataCompleted);
     fmr.DoRequest (url);
     DoOperationStarted ();
 }
예제 #7
0
        public void ChangeStation(string station)
        {
            FMRequest fmr = new FMRequest ();
            string url = "http://" + base_url + "/" + base_path + "/adjust.php?session=" + session + "&url=" + station + "&lang=en&debug=1";

            Console.WriteLine ("station: " + url);
            fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (StationChangeCompleted);

            fmr.DoRequest (url);
            DoOperationStarted ();
        }
예제 #8
0
파일: User.cs 프로젝트: GNOME/last-exit
        public void RequestInfo()
        {
            FMRequest fmr = new FMRequest ();
            string base_url = Driver.connection.BaseUrl;
            string url = "http://" + base_url + "/1.0/user/" + username + "/profile.xml";

            fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (GetUserCompleted);
            fmr.DoRequest (url);

            Driver.connection.DoOperationStarted ();
        }
예제 #9
0
파일: Playlist.cs 프로젝트: GNOME/last-exit
 private void GetNewPlaylist()
 {
     Console.WriteLine ("Playlist: New playlist requested");
     if (getting_playlist) {
         Console.WriteLine ("Playlist: Already getting playlist");
     } else {
         getting_playlist = true;
         string url = String.Format ("http://{0}{1}/xspf.php?sk={2}&discovery=0&desktop=1",
                                     connection.BaseUrl,
                                     connection.BasePath,
                                     connection.Session);
         FMRequest fmr = new FMRequest ();
         fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (GetNewPlaylistCompleted);
         fmr.DoRequest (url);
         connection.DoOperationStarted ();
     }
 }
예제 #10
0
        private void Search(FindStation.SearchType type,
				    string description)
        {
            FMRequest fmr = new FMRequest ();
            string url, base_url;

            base_url = Driver.connection.BaseUrl;
            switch (type) {
            case FindStation.SearchType.SoundsLike:
                url = "http://" + base_url + "/1.0/get.php?resource=artist&document=similar&format=xml&artist=" + description;
                break;

            case FindStation.SearchType.TaggedAs:
                url = "http://" + base_url + "/1.0/tag/" + description + "/search.xml?showtop10=1";
                break;

            case FindStation.SearchType.User:
                url = "http://" + base_url + "/1.0/user/" + description + "/profile.xml";
                break;

            case FindStation.SearchType.Neighbour:
                url = "http://" + base_url + "/1.0/user/" + Driver.connection.Username + "/neighbours.xml";
                break;

            case FindStation.SearchType.Group:
                url = "http://" + base_url + "/1.0/group/" + description + "/weeklychartlist.xml";
                break;

            default:
                url = "";
                break;
            }

            fmr.Closure = (object) type;
            fmr.RequestCompleted += new FMRequest.RequestCompletedHandler (FindStationCompleted);
            fmr.DoRequest (url);

            Driver.connection.DoOperationStarted ();
        }