private async void OnPlayUserTracksCommand(Audio track) { if (track.Title == VKSAVER_SEE_ALSO_TEXT) { OnGoToUserContentCommand("audios"); return; } List <IPlayerTrack> tracksToPlay = null; await Task.Run(() => { #if WINDOWS_UWP tracksToPlay = new List <IPlayerTrack>(UserTracks .Where(a => a.Title != VKSAVER_SEE_ALSO_TEXT) .Select(a => a.ToPlayerTrack())); #else tracksToPlay = new List <IPlayerTrack>(UserTracks.Count + 1); tracksToPlay.Add(FirstTrack.VKTrack.ToPlayerTrack()); tracksToPlay.AddRange(UserTracks.Select(a => a.ToPlayerTrack())); #endif }); if (tracksToPlay == null) { return; } IPlayerTrack plTrack = track.ToPlayerTrack(); await _playerService.PlayNewTracks(tracksToPlay, tracksToPlay.IndexOf(plTrack)); #if !WINDOWS_UWP _navigationService.Navigate("PlayerView", null); #endif }
/// <summary> /// Get the Tracks either single or album tracks as a List of Tracks using the AccessToken in User Authentication object /// </summary> /// <param name="auth"></param> /// <returns></returns> public static List <Tracks> GetRestUserTracks(User_Authentication auth) { if (auth.token.Expiring_Date < DateTime.Now) { auth.RefreshAccessToken(); } var RestClient = new RestClient(auth.token.URL); var Request = new RestRequest("users/tracks"); Request.AddParameter("client_id", auth.token.Client_ID); Request.AddParameter("access_token", auth.token.Access_Token); Request.AddParameter("track_type", "single albumtrack"); var tRsponse = RestClient.Execute(Request); UserTracks tracks = JsonConvert.DeserializeObject <UserTracks>(tRsponse.Content); return(tracks.results[0].tracks); }
private async Task <IEnumerable <Audio> > LoadUserTracks() { if (UserTracks.Any()) { return(new List <Audio>()); } int trackToLoad = 10; #if WINDOWS_UWP trackToLoad = 10; #endif var response = await _inTouchWrapper.ExecuteRequest(_inTouch.Audio.Get(count: trackToLoad)); if (response.IsError) { throw new Exception(response.Error.ToString()); } else { if (response.Data.Items.Count == 0) { return(new List <Audio>()); } #if WINDOWS_UWP TotalTracksCount = response.Data.Count; var tracks = new List <Audio>(response.Data.Items); tracks.Add(new Audio { Title = VKSAVER_SEE_ALSO_TEXT }); return(tracks); #else FirstTrack = new VKAudioWithImage { VKTrack = response.Data.Items[0] }; TryLoadFirstTrackInfo(FirstTrack); TryLoadBackground(FirstTrack); return(response.Data.Items.Skip(1)); #endif } }
public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewModelState) { _backgroundLoaded = false; if (viewModelState.Count > 0) { #if !WINDOWS_UWP FirstTrack = JsonConvert.DeserializeObject <VKAudioWithImage>( viewModelState[nameof(FirstTrack)].ToString()); #endif UserTracks = JsonConvert.DeserializeObject <SimpleStateSupportCollection <Audio> >( viewModelState[nameof(UserTracks)].ToString()); TopArtistsLF = JsonConvert.DeserializeObject <SimpleStateSupportCollection <LastArtist> >( viewModelState[nameof(TopArtistsLF)].ToString(), _lastImageSetConverter); RecommendedTracksVK = JsonConvert.DeserializeObject <SimpleStateSupportCollection <Audio> >( viewModelState[nameof(RecommendedTracksVK)].ToString()); UserTracks.LoadItems = LoadUserTracks; TopArtistsLF.LoadItems = LoadTopArtists; RecommendedTracksVK.LoadItems = LoadRecommendedTracks; } else { UserTracks = new SimpleStateSupportCollection <Audio>(LoadUserTracks); TopArtistsLF = new SimpleStateSupportCollection <LastArtist>(LoadTopArtists); RecommendedTracksVK = new SimpleStateSupportCollection <Audio>(LoadRecommendedTracks); } UserTracks.Load(); TopArtistsLF.Load(); RecommendedTracksVK.Load(); #if !WINDOWS_UWP TryLoadBackground(FirstTrack); #endif base.OnNavigatedTo(e, viewModelState); await Task.Delay(2000); _adsService.ActivateAds(); }
private UserInfo MapUser(IDataReader reader) { UserInfo s = new UserInfo(); UserTracks t = new UserTracks(); Campus c = new Campus(); int startingIndex = 0; s.Id = reader.GetSafeInt32(startingIndex++); s.FirstName = reader.GetSafeString(startingIndex++); s.LastName = reader.GetSafeString(startingIndex++); s.Email = reader.GetSafeString(startingIndex++); s.Gender = reader.GetSafeInt32(startingIndex++); s.Phone = reader.GetSafeString(startingIndex++); s.UserName = reader.GetSafeString(startingIndex++); s.UserId = reader.GetSafeString(startingIndex++); s.Bio = reader.GetSafeString(startingIndex++); s.DesiredTrack = reader.GetSafeInt32(startingIndex++); s.DesiredCampusLocation = reader.GetSafeInt32(startingIndex++); s.CoverPhotoPath = reader.GetSafeString(startingIndex++); s.AvatarPhotoPath = reader.GetSafeString(startingIndex++); s.CoverPhotoUrl = _fileService.GetFullUrl(s.CoverPhotoPath); s.AvatarPhotoUrl = _fileService.GetFullUrl(s.AvatarPhotoPath); t.Name = reader.GetSafeString(startingIndex++); c.Id = reader.GetSafeInt32(startingIndex++); c.Name = reader.GetSafeString(startingIndex++); //s.AddressId = reader.GetSafeInt32(startingIndex++); //s.Facebook = reader.GetSafeString(startingIndex++); //s.LinkedIn = reader.GetSafeString(startingIndex++); //s.Twitter = reader.GetSafeString(startingIndex++); //s.Webpage = reader.GetSafeString(startingIndex++); s.OnboardStatus = reader.GetSafeInt32(startingIndex++); s.Campuses = c; s.UserTracks = t; return(s); }
/// <summary> /// Imports the user tracks. /// </summary> /// <param name="userId">The user identifier.</param> /// <param name="username">The username.</param> /// <param name="page">The page.</param> /// <returns></returns> public async Task ImportUserTracks(string userId, string username, int page) { ApplicationUser user = _userManager.FindById(userId); Uri trackUri = new Uri( $"http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&api_key={ApiKey}&format=json" + $"&limit=200&user={username}&page={page}"); HttpResponseMessage result = await(new HttpClient()).GetAsync(trackUri); if (result.IsSuccessStatusCode) { JObject response = JObject.Parse(await result.Content.ReadAsStringAsync()); JToken recentTracks = response["recenttracks"]["track"]; int totalPages = (int)response["recenttracks"]["@attr"]["totalPages"]; foreach (JObject item in recentTracks) { string artistName = (string)item["artist"]["#text"]; if (!_redis.KeyExists($"matchfm.ids.artists.{artistName}")) { Meta artist = _artistRepository.FetchOrCreateByName(new Artist { Name = artistName }); _redis.StringSet($"matchfm.ids.artists.{artistName}", artist.Id); } } foreach (JObject item in recentTracks) { string artistName = (string)item["artist"]["#text"]; string albumName = (string)item["album"]["#text"]; if (!_redis.KeyExists($"matchfm.ids.artists.{artistName}.albums.{albumName}")) { int artistId = (int)_redis.StringGet($"matchfm.ids.artists.{artistName}"); Meta album = _albumRepository.FetchOrCreateByNameAndArtist(new Album { Name = albumName, ArtistId = artistId }); _redis.StringSet($"matchfm.ids.artists.{artistName}.albums.{albumName}", album.Id); } } foreach (JObject item in recentTracks) { string artistName = (string)item["artist"]["#text"]; string albumName = (string)item["album"]["#text"]; string trackName = (string)item["name"]; DateTime listenDate = new DateTime(1970, 1, 1, 0, 0, 0, 0); listenDate = listenDate.AddSeconds((int)item["date"]["uts"]); int trackId; if (!_redis.KeyExists($"matchfm.ids.artists.{artistName}.albums.{albumName}.tracks.{trackName}")) { int albumId = (int)_redis.StringGet($"matchfm.ids.artists.{artistName}.albums.{albumName}"); trackId = ((Track)_trackRepository.FetchOrCreateByNameAndAlbum(new Track { Name = trackName, AlbumId = albumId })).Id; _redis.StringSet($"matchfm.ids.artists.{artistName}.albums.{albumName}.tracks.{trackName}", trackId); } else { trackId = (int) _redis.StringGet($"matchfm.ids.artists.{artistName}.albums.{albumName}.tracks.{trackName}"); } UserTracks userTrack = new UserTracks { User = user, TrackId = trackId, ListenDate = listenDate }; _context.UserTracks.Add(userTrack); } _context.SaveChanges(); if (page < totalPages) { BackgroundJob.Enqueue <LastFMImportJob>(x => x.ImportUserTracks(userId, username, page + 1)); } _context.SaveChanges(); } }
public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary <string, object> viewModelState, bool suspending) { if (e.NavigationMode == NavigationMode.New) { #if !WINDOWS_UWP viewModelState[nameof(FirstTrack)] = JsonConvert.SerializeObject(FirstTrack); #endif viewModelState[nameof(UserTracks)] = JsonConvert.SerializeObject(UserTracks.ToList()); viewModelState[nameof(TopArtistsLF)] = JsonConvert.SerializeObject(TopArtistsLF.ToList(), _lastImageSetConverter); viewModelState[nameof(RecommendedTracksVK)] = JsonConvert.SerializeObject(RecommendedTracksVK.ToList()); } base.OnNavigatingFrom(e, viewModelState, suspending); }
private UserInfo MapUser(IDataReader reader) { UserInfo s = new UserInfo(); UserTracks t = new UserTracks(); Campus c = new Campus(); int startingIndex = 0; s.Id = reader.GetSafeInt32(startingIndex++); s.FirstName = reader.GetSafeString(startingIndex++); s.LastName = reader.GetSafeString(startingIndex++); s.Email = reader.GetSafeString(startingIndex++); s.Gender = reader.GetSafeInt32(startingIndex++); s.Phone = reader.GetSafeString(startingIndex++); s.UserName = reader.GetSafeString(startingIndex++); s.UserId = reader.GetSafeString(startingIndex++); s.Bio = reader.GetSafeString(startingIndex++); s.DesiredTrack = reader.GetSafeInt32(startingIndex++); s.DesiredCampusLocation = reader.GetSafeInt32(startingIndex++); s.CoverPhotoPath = reader.GetSafeString(startingIndex++); s.AvatarPhotoPath = reader.GetSafeString(startingIndex++); s.CoverPhotoUrl = _fileService.GetFullUrl(s.CoverPhotoPath); s.AvatarPhotoUrl = _fileService.GetFullUrl(s.AvatarPhotoPath); t.Name = reader.GetSafeString(startingIndex++); c.Id = reader.GetSafeInt32(startingIndex++); c.Name = reader.GetSafeString(startingIndex++); s.AddressId = reader.GetSafeInt32(startingIndex++); s.Facebook = reader.GetSafeString(startingIndex++); s.LinkedIn = reader.GetSafeString(startingIndex++); s.Twitter = reader.GetSafeString(startingIndex++); s.Webpage = reader.GetSafeString(startingIndex++); s.Campuses = c; s.UserTracks = t; return s; }