コード例 #1
0
ファイル: ItemManager.cs プロジェクト: Metibor/Ambermoon
        public ItemManager(IGameData gameData, IItemReader itemReader)
        {
            var file = gameData.Files[$"AM2_CPU"].Files[1];

            file.Position = 0;
            var data = AmigaExecutable.Read(file).Last(h => h.Type == AmigaExecutable.HunkType.Data).Data;

            file = new DataReader(data);

            // First find the item offset (the lamed ailment is the first item)
            long offset = file.FindString("LAMED", 0);

            if (offset == -1)
            {
                offset = file.FindString("GELÄHMT", 0);
            }

            if (offset == -1)
            {
                throw new AmbermoonException(ExceptionScope.Data, "Could not find item data in AM2_CPU.");
            }

            offset -= 40; // item name has a 40 byte offset to the item data offset

            file.Position = (int)offset;

            for (uint i = 1; i <= 402; ++i) // there are 402 items
            {
                items.Add(i, Item.Load(itemReader, file));
            }
        }
コード例 #2
0
ファイル: DataViewModel.cs プロジェクト: giuliboy/childmarket
 public DataViewModel(ISellerProvider sellerProvider, IItemsProvider itemsProvider, IMarketService dataService, IItemReader itemReader)
 {
     _dataService = dataService;
     _itemReader  = itemReader;
     Sellers      = new ObservableCollection <SellerViewModel>(sellerProvider.Sellers);
     Items        = itemsProvider.Items;
 }
コード例 #3
0
ファイル: ParamPageReader.cs プロジェクト: FenDaaa/pcproj
 public ParamPageReader(SiteParameter siteParameter, IHtmlReader htmlReader, IItemReader itemReader)
 {
     this.siteParameter = siteParameter ?? throw new ArgumentNullException(nameof(siteParameter));
     this.htmlReader    = htmlReader ?? throw new ArgumentNullException(nameof(htmlReader));
     this.itemReader    = itemReader ?? throw new ArgumentNullException(nameof(itemReader));
     this.pageNumber    = this.siteParameter.StartNumber;
 }
コード例 #4
0
ファイル: CrawlerFactory.cs プロジェクト: FenDaaa/pcproj
        public static ISiteCrawler Create(SiteParameter siteParameter)
        {
            if (siteParameter == null)
            {
                throw new ArgumentNullException(nameof(siteParameter));
            }

            string dataServiceName = GetValueOrDefault(siteParameter.CustomProcessors, "IDataService");
            string htmlReaderName  = GetValueOrDefault(siteParameter.CustomProcessors, "IHtmlReader");
            string pageParserName  = GetValueOrDefault(siteParameter.CustomProcessors, "IPageParser");
            string itemReaderName  = GetValueOrDefault(siteParameter.CustomProcessors, "IItemReader");
            string pageReaderName  = GetValueOrDefault(siteParameter.CustomProcessors, "IPageReader");

            IHtmlReader       htmlReader          = Container.Resolve <IHtmlReader>(htmlReaderName);
            ParameterOverride htmlReaderParameter = new ParameterOverride("htmlReader", htmlReader);

            ParameterOverride siteParameterParameter = new ParameterOverride("siteParameter", siteParameter);

            IItemReader       itemReader          = Container.Resolve <IItemReader>(itemReaderName, siteParameterParameter);
            ParameterOverride itemReaderParameter = new ParameterOverride("itemReader", itemReader);

            IPageReader pageReader = Container.Resolve <IPageReader>(pageReaderName, siteParameterParameter, htmlReaderParameter, itemReaderParameter);

            IPageParser pageParser = Container.Resolve <IPageParser>(pageParserName, siteParameterParameter, htmlReaderParameter);

            return(new GeneralSiteCrawler(pageReader, pageParser));
        }
コード例 #5
0
        public static Item Load(IItemReader itemReader, IDataReader dataReader)
        {
            var item = new Item();

            itemReader.ReadItem(item, dataReader);

            return(item);
        }
コード例 #6
0
 public MainViewModel(IItemReader itemReader, IMarketService dataService, ISellerProvider sellerProvider, IItemsProvider itemsProvider)
 {
     _sellerProvider       = sellerProvider;
     _itemsProvider        = itemsProvider;
     _itemReader           = itemReader;
     CashRegisterViewModel = new CashRegisterViewModel(sellerProvider, itemsProvider);
     DataViewModel         = new DataViewModel(sellerProvider, itemsProvider, dataService, itemReader);
 }
コード例 #7
0
 public ItemRespository(IItemCreator itemCreator, IMediaReader mediaReader, IFieldReader fieldReader, IAuditCreator auditCreator, IItemReader itemReader, IItemUpdater itemUpdater, IAuditReader auditReader)
 {
     _itemCreator  = itemCreator;
     _mediaReader  = mediaReader;
     _fieldReader  = fieldReader;
     _auditCreator = auditCreator;
     _itemReader   = itemReader;
     _itemUpdater  = itemUpdater;
     _auditReader  = auditReader;
 }
コード例 #8
0
 /// <summary>
 /// Custom constructor
 /// </summary>
 /// <param name="itemReader"></param>
 /// <param name="repeatOperations"></param>
 public SimpleChunkProvider(IItemReader <T> itemReader, IRepeatOperations repeatOperations)
 {
     ItemReader        = itemReader;
     _repeatOperations = repeatOperations;
 }
 /// <summary>
 /// This class can be instantiated by a TeaFile only, thus it is internal.
 /// </summary>
 internal ItemCollection(IItemReader reader)
 {
     this.reader = reader;
 }
コード例 #10
0
 public ItemsController(IItemReader reader, IMapper mapper)
 {
     _reader = reader;
     _mapper = mapper;
 }
コード例 #11
0
 public ItemCreator(IFieldUpdater iFieldUpdater, IItemReader iItemReader)
 {
     _iFieldUpdater = iFieldUpdater;
     _itemReader    = iItemReader;
 }
コード例 #12
0
        public IEnumerable <Article> GetArticals()
        {
            int start = 1999;
            int end   = DateTime.Now.Year;

            for (int year = start; year <= end; year++)
            {
                IEnumerable <Article> articles = null;
                List <string>         urls     = new List <string>();
                if (this.siteParameter.SiteName.Contains("总局令"))
                {
                    if (year < 2011)
                    {
                        continue;
                    }
                    else if (year >= 2011 && year < 2013)
                    {
                        this.siteParameter.ItemPattern = quality2012;
                    }
                    else
                    {
                        this.siteParameter.ItemPattern = quality2013;
                    }
                    this.itemReader = new RegexItemReader(this.siteParameter);
                }

                if (!string.IsNullOrWhiteSpace(this.siteParameter.StartUrl))
                {
                    Logging.WriteEntry(this, LogType.Information, $"Parsing {this.siteParameter.StartUrl}");

                    string url = this.siteParameter.StartUrl.Replace("year", year.ToString());

                    string html = null;
                    try
                    {
                        html = this.htmlReader.GetHtml(url);
                    }
                    catch (Exception ex)
                    {
                        Logging.WriteEntry(this, LogType.Error, $"Request {url} error.", ex);
                    }

                    if (string.IsNullOrWhiteSpace(html))
                    {
                        yield break;
                    }

                    if (this.iframePattern.IsMatch(html))
                    {
                        var iframeUrl = this.iframePattern.Match(html).Groups[1].Value;
                        url  = iframeUrl.ToAbsoluteUrl(url);
                        html = this.htmlReader.GetHtml(url);
                    }

                    articles = this.itemReader
                               .GetArticles(html, url).Distinct(new ArticleCompare())
                               .Where(article => !urls.Contains(article.Url));

                    foreach (var article in articles)
                    {
                        urls.Add(article.Url);
                        Logging.WriteEntry(this, LogType.Information, $"Getting {article.Url}");
                        yield return(article);
                    }
                }

                this.pageNumber = this.siteParameter.StartNumber;
                do
                {
                    string url = string.Format(this.siteParameter.UrlPattern, this.pageNumber);
                    url = url.Replace("year", year.ToString());

                    this.pageNumber += this.siteParameter.PageStepNumber ?? 1;
                    Logging.WriteEntry(this, LogType.Information, $"Parsing {url}");

                    string html = null;
                    try
                    {
                        html = this.htmlReader.GetHtml(url);
                    }
                    catch (Exception ex)
                    {
                        Logging.WriteEntry(this, LogType.Error, $"Request {url} error.", ex);
                    }


                    if (string.IsNullOrWhiteSpace(html))
                    {
                        yield break;
                    }

                    if (this.iframePattern.IsMatch(html))
                    {
                        var iframeUrl = this.iframePattern.Match(html).Groups[1].Value;
                        url  = iframeUrl.ToAbsoluteUrl(url);
                        html = this.htmlReader.GetHtml(url);
                    }

                    articles = this.itemReader
                               .GetArticles(html, url).Distinct(new ArticleCompare())
                               .Where(article => !urls.Contains(article.Url));

                    foreach (var article in articles)
                    {
                        if (urls.Contains(article.Url))
                        {
                            yield break;
                        }

                        urls.Add(article.Url);
                        Logging.WriteEntry(this, LogType.Information, $"Getting {article.Url}");
                        yield return(article);
                    }
                }while (articles.Count() > 0);
            }
        }
コード例 #13
0
 public ItemUpdater(IFieldUpdater iFieldUpdater, IItemReader itemReader)
 {
     _iFieldUpdater = iFieldUpdater;
     _itemReader    = itemReader;
 }