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); } } }
private void StationChangeCompleted(FMRequest request) { if (request.Data.Length > 1) { string content; int errno; content = request.Data.ToString (); if (ParseStation (content, out errno) == true) { if (StationChanged != null) { StationChanged (station_location); } } else { if (Error != null) { Error (errno); } } } DoOperationFinished (); }
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 ()); } } }
private void MetadataCompleted(FMRequest request) { if (request.Data.Length > 1) { string content; Song song = new Song (); content = request.Data.ToString (); Console.WriteLine (content); if (ParseMetadata (content, song) == true) { if (MetadataLoaded != null) { MetadataLoaded (song); } } } DoOperationFinished (); }
private void SkipCompleted(FMRequest request) { DoOperationFinished (); }
private void OnSubmissionCompleted(FMRequest request) { string[] response = request.Data.ToString ().Split (new Char[] {' '}); switch (response[0].Trim ().ToLower ()) { case "ok": failed_submitted_songs.Remove (request); Console.WriteLine ("OK: {0}", request.Request.RequestUri.ToString ()); break; case "badsession": Reshake (); break; case "failed": // Maybe it't last-exit's fault, better remove it //failed_submitted_songs.Remove (request); Console.WriteLine (GetErrorMsg (request.PostData, request.Request.RequestUri.ToString (), request.Data.ToString ())); break; default: // Maybe it't last-exit's fault, better remove it //failed_submitted_songs.Remove (request); Console.WriteLine (GetErrorMsg (request.PostData, request.Request.RequestUri.ToString (), request.Data.ToString ())); if (hard_failures >= 3) { Handshake (); } else { hard_failures++; } break; } }
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 (); }
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 (); }
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 (); }
private void GetUserCompleted(FMRequest request) { if (request.Data.Length > 1) { string content; content = request.Data.ToString (); OnGetUserInfoCompleted (content); } Driver.connection.DoOperationFinished (); }
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 (); }
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 (); }
private void GetNewPlaylistCompleted(FMRequest request) { if (request.Data.Length > 1) { ParsePlaylist (request.Data.ToString ()); Console.WriteLine ("Playlist: Got new playlist"); getting_playlist = false; if (song_requested) { song_requested = false; if (SongReady != null) SongReady (GetNextSong()); } if (NewPlaylistReady != null) { NewPlaylistReady (this); } } connection.DoOperationFinished (); }
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 (); } }
private void HandshakeRequestCompleted(FMRequest request) { if (request.Data.Length > 1) { string content; content = request.Data.ToString (); ParseHandshake (content); if (Connected) ScrobbleAll (); } }
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 (); }
private void OnNotificationCompleted(FMRequest request) { string[] response = request.Data.ToString ().Split (new Char[] {' '}); switch (response[0].Trim ().ToLower ()) { case "ok": Console.WriteLine ("OK: {0}", request.Request.RequestUri.ToString ()); break; case "badsession": Reshake (); break; case "failed": Console.WriteLine (GetErrorMsg (request.PostData, request.Request.RequestUri.ToString (), request.Data.ToString ())); break; default: Console.WriteLine (GetErrorMsg (request.PostData, request.Request.RequestUri.ToString (), request.Data.ToString ())); break; } }
private void HandshakeCompleted(FMRequest request) { if (request.Data.Length > 1) { string content; content = request.Data.ToString (); ParseHandshake (content); if (ConnectionChanged != null) { ConnectionChanged (connected); } } DoOperationFinished (); }
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); }
private void FindStationCompleted(FMRequest request) { FindStation.SearchType t = (FindStation.SearchType) request.Closure; if (request.Data.Length > 1) { string content; content = request.Data.ToString (); switch (t) { case SearchType.SoundsLike: Artist artist = ParseSimilar (content); OnSearchCompleted ((object) artist, t); break; case SearchType.TaggedAs: ArrayList tags = ParseTag (content); OnSearchCompleted ((object) tags, t); break; case SearchType.FansOf: ArrayList fans = ParseFans (content); OnSearchCompleted ((object) fans, t); break; case SearchType.User: break; case SearchType.Neighbour: ArrayList neighbours = ParseNeighbours (content); OnSearchCompleted ((object) neighbours, t); break; default: break; } } else { Console.WriteLine ("There was an error"); OnSearchCompleted (null, t); } Driver.connection.DoOperationFinished (); }