Beispiel #1
0
        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
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        /// <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();
            }
        }
Beispiel #7
0
        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;
        }