public void AddDocumentsToDb(string path)
        {
            int count = 1;

            using (var stream = string.IsNullOrWhiteSpace(path) ? GetEmbeddedLastFmSubset() : File.OpenRead(path))
                using (var zip = new ZipArchive(stream, ZipArchiveMode.Read))
                    using (var bulkInsert = DocumentStoreHolder.MediaStore.BulkInsert(options: new BulkInsertOptions {
                        OverwriteExisting = true, BatchSize = 256
                    }))
                    {
                        foreach (var entry in zip.Entries)
                        {
                            if (entry.Length == 0)
                            {
                                continue;
                            }
                            using (var entryStream = entry.Open())
                            {
                                var docAsJson = RavenJObject.Load(new JsonTextReader(new StreamReader(entryStream)));
                                var doc       = new LastFm
                                {
                                    Artist    = docAsJson.Value <string>("artist"),
                                    TimeStamp = DateTime.Parse(docAsJson.Value <string>("timestamp")),
                                    Title     = docAsJson.Value <string>("title"),
                                    TrackId   = docAsJson.Value <string>("track_id"),
                                    Tags      =
                                        docAsJson.Value <RavenJArray>("tags")
                                        .Select(x => ((RavenJArray)x)[0].Value <string>())
                                        .ToList()
                                };
                                bulkInsert.Store(doc, "lastfm/" + (count++));
                            }
                        }
                    }
        }
Example #2
0
        static AccountManager()
        {
            _vkontakte = ViewModelLocator.Vkontakte;
            _lastFm = ViewModelLocator.LastFm;

            Initialize();
        }
        public async override Task <PageResponse <LastTrack> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastFmApiError error;

            if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
            {
                JToken jtoken = JsonConvert.DeserializeObject <JToken>(json).SelectToken("recenttracks");

                var tracksToken = jtoken.SelectToken("track");

                var tracks = new List <LastTrack>();
                foreach (var track in tracksToken.Children())
                {
                    var t = LastTrack.ParseJToken(track);

                    tracks.Add(t);
                }

                var pageresponse = PageResponse <LastTrack> .CreateSuccessResponse(tracks);

                var attrToken = jtoken.SelectToken("@attr");
                pageresponse.AddPageInfoFromJToken(attrToken);

                return(pageresponse);
            }
            else
            {
                return(LastResponse.CreateErrorResponse <PageResponse <LastTrack> >(error));
            }
        }
        public override async Task <T> ExecuteAsync()
        {
            SetParameters();

            Url = BuildRequestUrl();

            var apisig = Auth.GenerateMethodSignature(Method, Parameters);

            var postContent = LastFm.CreatePostBody(Method,
                                                    Auth.ApiKey,
                                                    apisig,
                                                    Parameters);

            try
            {
                var httpClient = GetHttpClient();
                var response   = await httpClient.PostAsync(Url, postContent);

                return(await HandleResponse(response));
            }
            catch (HttpRequestException)
            {
                if (LastFm.CatchRequestExceptions)
                {
                    return(LastResponse.CreateErrorResponse <T>(LastFmApiError.RequestFailed));
                }
                else
                {
                    throw;
                }
            }
        }
Example #5
0
        public async override Task <PageResponse <LastStation> > HandleResponse(HttpResponseMessage response)
        {
            string json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                JToken jtoken = JsonConvert.DeserializeObject <JToken>(json).SelectToken("recentstations");

                var stationsToken = jtoken.SelectToken("station");

                var stations = stationsToken.Children().Select(LastStation.ParseJToken).ToList();

                var pageresponse = PageResponse <LastStation> .CreateSuccessResponse(stations);

                var attrToken = jtoken.SelectToken("@attr");
                pageresponse.AddPageInfoFromJToken(attrToken);

                return(pageresponse);
            }
            else
            {
                return(LastResponse.CreateErrorResponse <PageResponse <LastStation> >(status));
            }
        }
        static AccountManager()
        {
            _vkontakte = ViewModelLocator.Vkontakte;
            _lastFm    = ViewModelLocator.LastFm;

            Initialize();
        }
Example #7
0
        public override async Task <PageResponse <LastArtist> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            var jtoken       = JsonConvert.DeserializeObject <JToken>(json);
            var resultsToken = jtoken.SelectToken("topartists");

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                if (string.IsNullOrEmpty(resultsToken.SelectToken("@attr.tag").Value <string>()))
                {
                    return(PageResponse <LastArtist> .CreateErrorResponse(LastResponseStatus.MissingParameters));
                }

                var itemsToken = resultsToken.SelectToken("artist");

                return(PageResponse <LastArtist> .CreateSuccessResponse(itemsToken, resultsToken, LastArtist.ParseJToken, LastPageResultsType.Attr));
            }
            else
            {
                // The tag api always returns a "valid" response, so
                return(PageResponse <LastArtist> .CreateErrorResponse(status));
            }
        }
Example #8
0
        public static Collection <PartialMatche> Search(string strAlbum)
        {
            Uri      strUrl       = new Uri(string.Format(@"http://ws.audioscrobbler.com/2.0/?method=album.search&album={0}&api_key=7e1cb1060b6150e4fbb60e119250f54c", Util.EncodeSearch(strAlbum)));
            XElement restResponse = XElement.Parse(Util.GetRest(strUrl));

            return(LastFm.AlbumToPartialMatch(restResponse));
        }
Example #9
0
        protected async Task <T> ExecuteAsyncInternal()
        {
            SetParameters();

            var toRemove = Parameters.Where(p => String.IsNullOrEmpty(p.Value)).ToList();

            foreach (var parameter in toRemove)
            {
                Parameters.Remove(parameter.Key);
            }

            Url = BuildRequestUrl();

            var apisig = Auth.GenerateMethodSignature(Method, Parameters);

            var postContent = LastFm.CreatePostBody(Method,
                                                    Auth.ApiKey,
                                                    apisig,
                                                    Parameters);

            try
            {
                var httpClient = HttpClient;
                using (var response = await httpClient.PostAsync(Url, postContent))
                {
                    return(await HandleResponse(response));
                }
            }
            catch (HttpRequestException)
            {
                return(LastResponse.CreateErrorResponse <T>(LastResponseStatus.RequestFailed));
            }
        }
Example #10
0
 public AlbumService(IUnitOfWork unitOfWork, IMapper mapper)
 {
     _database     = unitOfWork;
     _mapper       = mapper;
     _lastFm       = new LastFm();
     _resultFilter = new LastFmResultFilter(_lastFm);
 }
Example #11
0
 void LastFm_MySessionChanged()
 {
     Dispatcher.Invoke(new Action(() =>
     {
         usr.Text   = "Username: "******"Real name: " + LastFm.GetRealName();
     }));
 }
Example #12
0
 public Scrobbler()
 {
     InitializeComponent();
     SupportSkinner.SetSkin(this);
     InvalidateVisual();
     LastFm.MySessionChanged += LastFm_MySessionChanged;
     usr.Text   = "Username: "******"Real name: " + LastFm.GetRealName();
 }
Example #13
0
        public async void SetContext(Artist artist)
        {
            this.DataContext         = ART = artist;
            this.ART.IsUpdatingImage = false;
            lastFmButton.Visibility  = ApplicationInfo.Current.HasInternetConnection ? Visibility.Visible : Visibility.Collapsed;
            //Color color;

            StorageFile imgFile = null;

            try
            {
                imgFile = await StorageFile.GetFileFromApplicationUriAsync(artist.ImageUri);
            }
            catch
            {
            }

            try
            {
                if (imgFile != null)
                {
                    using (var stream = await imgFile.OpenAsync(FileAccessMode.Read))
                    {
                        //color = await ImageHelper.GetDominantColor(stream);
                        BitmapImage b = new BitmapImage();
                        rootBrush.ImageSource = b;
                        b.SetSource(stream);
                    }

                    ellipse.SetSource(artist.ImageUri);
                }
                else
                {
                    await LastFm.DownloadImage(artist, true);
                }
            }
            catch
            {
            }

            //AnimateBackgroundToColor(color);

            ////ellipseBrush.ImageSource = bmp;
            //ellipse.Source = bmp;
            //bmp.UriSource = new Uri("ms-appdata:///local/Artists/artist_" + StringHelper.RemoveSpecialChar(ART.Name) + ".jpg", UriKind.Absolute);


            //BitmapImage blurbmp = new BitmapImage();
            //blurbmp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
            //rootBrush.ImageSource = blurbmp;
            //blurbmp.UriSource = new Uri("ms-appdata:///local/Artists/artist_" + StringHelper.RemoveSpecialChar(ART.Name) + ".jpg", UriKind.Absolute);


            title.Text = ART.Name.ToUpper();
            subtitleSeparator.Visibility = subtitle2.Visibility = Visibility.Visible;
        }
Example #14
0
        private static Artist ParseArtist(string artistName)
        {
            try
            {
                bool   isNew;
                Artist artist = ArtistServices.Get(artistName, out isNew);
                if (artist == null)
                {
                    artist = new Artist();
                }

                Uri      strUrl       = new Uri(string.Format(@"http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=7e1cb1060b6150e4fbb60e119250f54c&artist={0}&autocorrect=1", artistName));
                XElement restResponse = XElement.Parse(Util.GetRest(strUrl));

                LastFm objLastFm = LastFm.ArtistToObject(restResponse);

                artist.Bio       = objLastFm.ArtistContent;
                artist.FulleName = objLastFm.ArtistName;

                if (objLastFm.ArtistExtraLargeImage != null)
                {
                    artist.Picture = Util.GetImage(objLastFm.ArtistLargeImage);
                }

                artist.WebSite = objLastFm.ArtistUrl;

                strUrl       = new Uri(string.Format(@"http://ws.audioscrobbler.com/2.0/?method=artist.getTopAlbums&api_key=7e1cb1060b6150e4fbb60e119250f54c&mbid={0}&limit=500", objLastFm.ArtistId));
                restResponse = XElement.Parse(Util.GetRest(strUrl));
                IEnumerable <LastFm> credits = LastFm.AlbumToCollection(restResponse);

                if (credits != null && artist.ArtistCredits != null)
                {
                    foreach (LastFm item in credits)
                    {
                        if (artist.ArtistCredits.Any(x => x.Title.Trim().ToUpper() == item.AlbumName.Trim().ToUpper()) == false)
                        {
                            ArtistCredits artistcredit = new ArtistCredits();
                            artistcredit.ArtistId   = artist.Id;
                            artistcredit.BuyLink    = item.AlbumUrl;
                            artistcredit.Title      = item.AlbumName;
                            artistcredit.EntityType = EntityType.Music;

                            artist.ArtistCredits.Add(artistcredit);
                        }
                    }
                }
                return(artist);
            }
            catch (Exception ex)
            {
                Util.LogException(ex);
                return(null);
            }
        }
 private async void DownloadImage(Artist artist)
 {
     try
     {
         //LastFm lfm = new LastFm();
         //lfm.DownloadCompleted += Lfm_DownloadCompleted;
         await LastFm.DownloadImage(artist);
     }
     catch
     {
     }
 }
Example #16
0
        void dpt_Tick(object sender, System.EventArgs e)
        {
            ticks++;
            if (incremented | Player.Instance.NetStreamingConfigsLoaded)
            {
                return;
            }
            if (Player.Instance.Wave != null && ticks > Player.Instance.Wave.Duration / 2
                | ticks > 4000)
            {
                incremented = true;
                EventHandler handler = IncrementListens;
                if (handler != null)
                {
                    handler(this, EventArgs.Empty);
                }
                //track update
                Track existingTrack = TrackQuery.GetTrack(CoreMain.CurrentTrack.Path);
                if (existingTrack != null)
                {
                    existingTrack.Listens++;
                    TrackQuery.SaveTrack(existingTrack);
                }

                //artistUpdate
                ArtistViewModel existingArtist = ArtistQuery.GetArtistViewModel(CoreMain.CurrentTrack.Artist);
                if (existingArtist != null)
                {
                    existingArtist.Listens++;
                    existingArtist.SaveArtist();
                }

                //albumUpdate
                AlbumViewModel existingAlbum = AlbumQuery.GetAlbumViewModel(CoreMain.CurrentTrack.Album);
                if (existingAlbum != null)
                {
                    existingAlbum.Listens++;
                    existingAlbum.SaveAlbum();
                }

                //a;bumUpdate
                ViewModels.GenreViewModel existingGenre = GenreQuery.GetGenreViewModel(CoreMain.CurrentTrack.Genre);
                if (existingGenre != null)
                {
                    existingGenre.Listens++;
                    existingGenre.SaveGenre();
                }

                //scrobble

                LastFm.ScrobbleTrack(LastFm.CurrentTrack);
            }
        }
Example #17
0
        public void ApiUrlFormatReturnsCorrectly()
        {
            const string expected = "https://ws.audioscrobbler.com/2.0/?method=tobias.funke&api_key=suddenvalley&blue=performance&format=json&uncle=t-bag";

            var actual = LastFm.FormatApiUrl("tobias.funke", "suddenvalley", new Dictionary <string, string>
            {
                { "uncle", "t-bag" },
                { "blue", "performance" }
            }, true);

            Assert.AreEqual(expected, actual);
        }
Example #18
0
        private static async Task <LastTrack> GetLastTrack(string username)
        {
            try
            {
                var tracks = await LastFm.GetRecentScrobbles(username);

                return(tracks.FirstOrDefault());
            }
            catch (ServiceException)
            {
                return(null);
            }
        }
Example #19
0
        public override async Task <LastResponse <string> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            if (LastFm.IsResponseValid(json, out LastResponseStatus status) && response.IsSuccessStatusCode)
            {
                var token = JsonConvert.DeserializeObject <JObject>(json).GetValue("token");
                return(LastResponse <string> .CreateSuccessResponse(token.Value <string>()));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <LastResponse <string> >(status));
            }
        }
Example #20
0
        private async void DownloadImages(Artist artist)
        {
            string lang = ApplicationInfo.Current.Language;

            //Debug.WriteLine("Preparing to download image: " + artist.Name);

            try
            {
                await LastFm.DownloadImage(artist);
            }
            catch
            {
            }
        }
Example #21
0
        public async static Task <LastResponse> HandleResponse(HttpResponseMessage response)
        {
            string json = await response.Content.ReadAsStringAsync();

            LastFmApiError error;

            if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
            {
                return(LastResponse.CreateSuccessResponse());
            }
            else
            {
                return(LastResponse.CreateErrorResponse <LastResponse>(error));
            }
        }
Example #22
0
        public override async Task <ScrobbleResponse> HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                return(await ScrobbleResponse.CreateSuccessResponse(json));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <ScrobbleResponse>(status));
            }
        }
Example #23
0
        public async override Task <PageResponse <LastTag> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var jtoken     = JsonConvert.DeserializeObject <JToken>(json);
                var itemsToken = jtoken.SelectToken("toptags.tag");

                return(PageResponse <LastTag> .CreateSuccessResponse(itemsToken, LastTag.ParseJToken));
            }

            return(PageResponse <LastTag> .CreateErrorResponse(status));
        }
Example #24
0
        public void IsResponseValid()
        {
            LastResponseStatus status;

            Assert.IsFalse(LastFm.IsResponseValid(null, out status));
            Assert.IsFalse(LastFm.IsResponseValid("{invalid json", out status));

            var error6 = Encoding.UTF8.GetString(ArtistApiResponses.ArtistGetTagsError);

            Assert.IsFalse(LastFm.IsResponseValid(error6, out status));
            Assert.AreEqual(LastResponseStatus.MissingParameters, status);

            var goodResponse = Encoding.UTF8.GetString(ArtistApiResponses.ArtistGetInfoSuccess);

            Assert.IsTrue(LastFm.IsResponseValid(goodResponse, out status));
            Assert.AreEqual(LastResponseStatus.Successful, status);
        }
Example #25
0
        public async override Task <PageResponse <LastTag> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var jtoken     = JsonConvert.DeserializeObject <JToken>(json).SelectToken("similartags");
                var itemsToken = jtoken.SelectToken("tag");
                var attrToken  = jtoken.SelectToken("@attr");
                var relatedTag = attrToken.SelectToken("tag").Value <string>();

                return(PageResponse <LastTag> .CreateSuccessResponse(itemsToken, jt => LastTag.ParseJToken(jt, relatedTag)));
            }

            return(LastResponse.CreateErrorResponse <PageResponse <LastTag> >(status));
        }
Example #26
0
        public async override Task <LastResponse <LastAlbum> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var jtoken = JsonConvert.DeserializeObject <JToken>(json);
                var album  = LastAlbum.ParseJToken(jtoken.SelectToken("album"));

                return(LastResponse <LastAlbum> .CreateSuccessResponse(album));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <LastResponse <LastAlbum> >(status));
            }
        }
Example #27
0
        public async override Task <PageResponse <LastTrack> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastFmApiError error;

            if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
            {
                var jtoken     = JsonConvert.DeserializeObject <JToken>(json);
                var itemsToken = jtoken.SelectToken("similartracks").SelectToken("track");

                return(PageResponse <LastTrack> .CreateSuccessResponse(itemsToken, null, LastTrack.ParseJToken));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <PageResponse <LastTrack> >(error));
            }
        }
        public async override Task <LastResponse <LastArtist> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastFmApiError error;

            if (LastFm.IsResponseValid(json, out error) && response.IsSuccessStatusCode)
            {
                var jtoken = JsonConvert.DeserializeObject <JToken>(json);
                var artist = LastArtist.ParseJToken(jtoken.SelectToken("artist"));

                return(LastResponse <LastArtist> .CreateSuccessResponse(artist));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <LastResponse <LastArtist> >(error));
            }
        }
Example #29
0
        public async override Task <PageResponse <LastArtist> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var jtoken     = JsonConvert.DeserializeObject <JToken>(json);
                var itemsToken = jtoken.SelectToken("similarartists").SelectToken("artist");

                return(PageResponse <LastArtist> .CreateSuccessResponse(itemsToken, LastArtist.ParseJToken));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <PageResponse <LastArtist> >(status));
            }
        }
Example #30
0
        public override async Task <LastResponse <LastUserSession> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var sessionObject = JsonConvert.DeserializeObject <JObject>(json).GetValue("session");
                var session       = JsonConvert.DeserializeObject <LastUserSession>(sessionObject.ToString());

                return(LastResponse <LastUserSession> .CreateSuccessResponse(session));
            }
            else
            {
                return(LastResponse.CreateErrorResponse <LastResponse <LastUserSession> >(status));
            }
        }
Example #31
0
        public override async Task <PageResponse <LastWeeklyChartList> > HandleResponse(HttpResponseMessage response)
        {
            var json = await response.Content.ReadAsStringAsync();

            LastResponseStatus status;

            if (LastFm.IsResponseValid(json, out status) && response.IsSuccessStatusCode)
            {
                var jtoken         = JsonConvert.DeserializeObject <JToken>(json);
                var chartListToken = jtoken.SelectToken("weeklychartlist");
                var itemsToken     = chartListToken.SelectToken("chart");
                var pageInfoToken  = chartListToken.SelectToken("@attr");

                return(PageResponse <LastWeeklyChartList> .CreateSuccessResponse(itemsToken, pageInfoToken, LastWeeklyChartList.ParseJToken, LastPageResultsType.Attr));
            }

            return(LastResponse.CreateErrorResponse <PageResponse <LastWeeklyChartList> >(status));
        }
Example #32
0
 public LastFmChartRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #33
0
 public void MapFrom(LastFm.Album lastFmAlbum)
 {
     Image img = new Image();
     img.MapFrom(lastFmAlbum.Image.FirstOrDefault(x=>x.Size == "extralarge" || x.Size == "mega"));
     this.Images = new List<Image>() { img };
 }
Example #34
0
 public LastFmAuthRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #35
0
 static DataService()
 {
     _vkontakte = ViewModelLocator.Vkontakte;
     _lastFm = ViewModelLocator.LastFm;
 }
Example #36
0
 public LastFmArtistRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #37
0
 /// <summary>
 /// Map from LastFmClient.
 /// </summary>
 /// <param name="image">An image.</param>
 public void MapFrom(LastFm.Image image)
 {
     this.Url = image.Text;
 }
Example #38
0
 public LastFmUserRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #39
0
 public LastFmTagRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #40
0
 public LastFmTrackRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }
Example #41
0
 public LastFmAlbumRequest(LastFm lastFm)
 {
     _lastFm = lastFm;
 }