Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Collections.Generic;
- using System.Threading;
- using System.IO;
- using Spotify;
- namespace SharpTest
- {
- class MainClass
- {
- private static Session session = null;
- private static ManualResetEvent allDone = new ManualResetEvent(false);
- public static void Main(string[] args)
- {
- #region key
- // Paste your key here
- byte[] key = new Byte[]
- {
- 0x01, 0x67, 0xC0, 0x43, 0xA1, 0x8C, 0xD7, 0x9A, 0x8C, 0x8C, 0x06, 0xD5, 0x51, 0x90, 0x3D, 0x00,
- .....
- 0x39, 0xEA, 0xED, 0xCE, 0xB5, 0x00, 0xAE, 0xD0, 0x4D, 0x9E, 0x56, 0x78, 0x02, 0xF3, 0xEA, 0x84,
- 0xCE
- };
- #endregion
- AppDomain.CurrentDomain.UnhandledException += HandleUnhandledException;
- // Set cache dir etc. here. Clear these folders to force resync of all playlists
- Session s = Session.CreateInstance(key, "/tmp/libspotify", "/tmp/libspotify", "libspotify-sharp-dev");
- s.OnConnectionError += new SessionEventHandler(HandleOnConnectionError);
- s.OnLoggedOut += HandleOnLoggedOut;
- s.OnLoginComplete += HandleOnLoginComplete;
- s.OnLogMessage += HandleOnLogMessage;
- s.OnMessageToUser += HandleOnMessageToUser;
- s.OnMetaDataUpdated += HandleOnMetaDataUpdated;
- Console.WriteLine("Logging in...");
- // Put your credentials here
- s.LogIn("user", "pass");
- // Ugly way to terminate this little test app
- allDone.WaitOne(30 * 1000, false);
- Console.WriteLine("Logging out..");
- s.LogOut();
- }
- static void HandleOnMessageToUser(Session sender, SessionEventArgs e)
- {
- Console.WriteLine("Message: " + e.Message);
- }
- static void HandleOnLogMessage(Session sender, SessionEventArgs e)
- {
- Console.WriteLine("Log: " + e.Message);
- }
- static void HandleOnLoginComplete(Session sender, SessionEventArgs e)
- {
- if(e.Status != sp_error.OK)
- {
- Console.WriteLine("Error logging in");
- allDone.Set();
- return;
- }
- // Add listener for new playlists (playlist moved and deleted events are also there but are equally untested)
- if(sender != null)
- sender.PlaylistContainer.OnPlaylistAdded += HandleOnPlaylistAdded;
- Console.WriteLine("Login: {0} Playlists: {1} ", e.Status,
- sender != null && sender.PlaylistContainer != null ? sender.PlaylistContainer.PlaylistCount.ToString() : "null");
- if(sender != null && sender.PlaylistContainer != null)
- {
- Playlist[] current = sender.PlaylistContainer.CurrentLists;
- for (int i = 0; i < current.Length; i++)
- {
- Console.WriteLine("Playlist w index {0}: {1}", i, current[i].IsLoaded ? current[i].ToString() : "data not loaded");
- // Add change listeners to lists already in container
- current[i].OnMetadataUpdated += HandleOnMetadataUpdated;
- current[i].OnStateChanged += HandleOnStateChanged;
- current[i].OnUpdateInProgress += HandleOnUpdateInProgress;
- // Remember to set event listeners (tracks added, moved etc.) on each playlist here!
- }
- }
- session = sender;
- }
- // Dump strings to console so one can see the event flow
- static void HandleOnMetaDataUpdated(Session sender, SessionEventArgs e)
- {
- Console.WriteLine("Session MetaDataUpdated");
- }
- static void HandleOnPlaylistAdded(PlaylistContainer sender, PlaylistContainerEventArgs e)
- {
- if(session == null)
- return;
- // All current lists are in both sender.CurrentLists and e.CurrentLists (silly me...)
- // Remember to set event listeners (tracks added, moved etc.) on each playlist here!
- Console.WriteLine("Playlist w index {0} added: {1}", e.Position, e.Playlist.IsLoaded ? e.Playlist.ToString() : "data is loading");
- e.Playlist.OnMetadataUpdated += HandleOnMetadataUpdated;
- e.Playlist.OnStateChanged += HandleOnStateChanged;
- e.Playlist.OnUpdateInProgress += HandleOnUpdateInProgress;
- }
- static void HandleOnUpdateInProgress(Playlist sender, PlaylistEventArgs e)
- {
- Console.WriteLine("Playlist UpdateInProgress: Done {0} {1}", e.Done, sender.IsLoaded ? sender.ToString() : "data is loading");
- }
- static void HandleOnStateChanged(Playlist sender, PlaylistEventArgs e)
- {
- Console.WriteLine("Playlist OnStateChanged: {0}", sender.IsLoaded ? sender.ToString() : "data is loading");
- }
- static void HandleOnMetadataUpdated(Playlist sender, PlaylistEventArgs e)
- {
- Console.WriteLine("Playlist MetadataUpdated: {0}", sender.IsLoaded ? sender.ToString() : "data is loading");
- }
- static void HandleOnLoggedOut(Session sender, SessionEventArgs e)
- {
- Console.WriteLine("Logged out");
- System.Diagnostics.Process.GetCurrentProcess().Kill();
- }
- static void HandleOnConnectionError(Session sender, SessionEventArgs e)
- {
- Console.WriteLine("Connection error: " + e.Status);
- allDone.Set();
- }
- static void HandleUnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- Console.WriteLine(e.ExceptionObject.ToString());
- allDone.Set();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement