Example #1
0
        public override async Task Start()
        {
            var lastRecord = await GetLastRecord();

            if (!string.IsNullOrEmpty(lastRecord?.Ids))
            {
                _lastImageIds = lastRecord.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                .Select(int.Parse).ToList();
            }

            _currentImageIds.Clear();

            if (!Queues.Any())
            {
                var queues = ServiceProvider.GetRequiredService <IEnumerable <ITaskQueue> >()
                             .Where(t => t.Id.Contains("Yande"));
                queues.ForEach(AddQueue);
            }

            await base.Start();

            await Distribute(new YandeListTaskData { Page = 1, LastImageIds = _lastImageIds });

            while (Active)
            {
                await Task.Delay(1000);
            }

            if (Status == TaskQueueStatus.Running)
            {
                await base.Stop();

                if (_currentImageIds.Any())
                {
                    var record = new YandeCollectRecord
                    {
                        CollectDt = DateTime.Now,
                        Ids       = string.Join(",", _currentImageIds),
                        Site      = Options.Value.Site
                    };
                    await SaveCollectRecord(record);
                }
            }
        }
Example #2
0
 public abstract Task SaveCollectRecord(YandeCollectRecord record);