Esempio n. 1
0
        private void downloadPrices()
        {
            var sets = _repo.SetsByCode.Values.OrderByDescending(_ => _.ReleaseDate).ToArray();

            using (var stream = _priceRepository.AppendPriceInProgressStream())
                using (var writer = new StreamWriter(stream))
                    foreach (var set in sets)
                    {
                        var sids = set.Cards
                                   .Where(_priceRepository.IsDefined)
                                   .Select(_priceRepository.GetPriceId)
                                   .Where(F.IsNotNull)
                                   .Select(_ => _.Sid)
                                   .Where(F.IsNotNull)
                                   .Where(sid => !_priceRepository.ContainsPrice(sid))
                                   .Distinct()
                                   .ToArray();

                        Parallel.ForEach(sids, new ParallelOptions {
                            MaxDegreeOfParallelism = Parallelism
                        }, sid =>
                        {
                            if (sid.EndsWith("&utm_source=scryfall"))
                            {
                                PriceAdded?.Invoke();
                                return;
                            }

                            PriceValues price;
                            try
                            {
                                price = _client.DownloadPrice(sid);
                            }
                            catch (WebException)
                            {
                                return;
                            }

                            lock (_sync)
                            {
                                var serialized = JsonConvert.SerializeObject(price, Formatting.None);
                                _priceRepository.AddPrice(sid, price);
                                writer.WriteLine(serialized);
                                PriceAdded?.Invoke();
                            }
                        });
                    }
        }
Esempio n. 2
0
        private void downloadPrices()
        {
            var sets = _repo.SetsByCode.Values.OrderByDescending(_ => _.ReleaseDate).ToArray();

            using (var stream = _priceRepository.AppendPriceInProgressStream())
                using (var writer = new StreamWriter(stream))
                    foreach (var set in sets)
                    {
                        foreach (var card in set.Cards)
                        {
                            if (_aborted)
                            {
                                return;
                            }

                            if (!_priceRepository.IsDefined(card))
                            {
                                continue;
                            }

                            var sid = _priceRepository.GetPriceId(card);

                            if (sid == null)
                            {
                                continue;
                            }

                            if (_priceRepository.ContainsPrice(sid))
                            {
                                continue;
                            }

                            var price = _client.DownloadPrice(sid);

                            _priceRepository.AddPrice(sid, price);

                            PriceAdded?.Invoke();

                            var serialized = JsonConvert.SerializeObject(_priceRepository.GetPrice(sid), Formatting.None);
                            writer.WriteLine(serialized);
                        }
                    }
        }
 public void AddPrice(float price)
 {
     this.prices.Add(price);
     PriceAdded?.Invoke(this, price);
 }