示例#1
0
    public override void OpenRecord(BaseTask task)
    {
        task.RecordIndex = RecordList.Count;
        CollectRecord prevRecord = (RecordList.Count == 0) ? null : RecordList[RecordList.Count - 1] as CollectRecord;

        RecordList.Add(new CollectRecord(prevRecord, task as CollectTask));
    }
示例#2
0
    public static string RecordHeader = "Index,TaskIndex,StartTimeStamp,EndTimeStamp"; // ,PrevDistance,TravelDistance

    // public float prevDistance;  // distance to previous target
    // public Vector3 targetPosition;

    public CollectRecord(CollectRecord preRecord, CollectTask task)
    {
        taskIndex   = task.TaskIndex;
        recordIndex = (preRecord == null)? 0: preRecord.recordIndex + 1;



        // targetPosition = task.gameObject.transform.position;
        // prevDistance = (recordIndex == 0) ? 0.0f : (targetPosition - preRecord.targetPosition).magnitude;
    }
        public override async Task Start()
        {
            if (Status == TaskQueuePoolStatus.Idle)
            {
                var db = new YandeDbContext(new DbContextOptionsBuilder <YandeDbContext>()
                                            .UseMySql(_options.DbConnectionString).Options);
                var lastRecord = await db.CollectRecords.OrderByDescending(t => t.CollectDt)
                                 .FirstOrDefaultAsync(t => t.Site == _options.Site);

                if (!string.IsNullOrEmpty(lastRecord?.Ids))
                {
                    _lastImageIds = lastRecord.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                    .Select(int.Parse).ToList();
                }
                _currentImageIds.Clear();
                if (!this.Any())
                {
                    Add(new YandeGetImageUrlListTaskQueue(new YandeGetImageUrlListTaskQueueOptions
                    {
                        MaxThreads          = _options.ListThreads,
                        Interval            = _options.ListInterval,
                        ListUrlTpl          = _options.ListUrlTemplate,
                        CurrentTaskImageIds = _currentImageIds,
                        LastTaskImageIds    = _lastImageIds,
                        Purpose             = ProxyPurpose
                    }, LoggerFactory));

                    Add(new DownloadImageTaskQueue(new DownloadImageTaskQueueOptions
                    {
                        MaxThreads   = _options.DownloadThreads,
                        Interval     = _options.DownloadInterval,
                        DownloadPath = _options.DownloadPath,
                        Purpose      = ProxyPurpose
                    }, LoggerFactory));
                }
                Enqueue(new YandeGetImageUrlListTaskData {
                    Page = 1
                });
                await base.Start();

                if (this.All(t => t.Completed) && _currentImageIds.Any())
                {
                    var record = new CollectRecord
                    {
                        CollectDt = DateTime.Now,
                        Ids       = string.Join(",", _currentImageIds),
                        Site      = _options.Site
                    };
                    db.Add(record);
                    await db.SaveChangesAsync();
                }
            }
        }