Exemplo n.º 1
0
        public async Task Init()
        {
            if (InitStatus)
            {
                return;
            }

            var list = await spiderHandler.ListWeChatAccountAsync();

            if (list.Count <= 0)
            {
                LogService.Error("当前没有取到公众号名称,请在数据库中写入数据");
                return;
            }
            SpiderTaskList.Clear();
            list.ForEach(item =>
            {
                var spider = new SpiderTask(item.NickName)
                {
                    SpiderId       = item.Id,
                    Alias          = item.Alias,
                    LastUpdateDate = item.LastUpdate
                };
                item.SpiderRoles.ForEach(role =>
                {
                    spider.Roles.Add(role.Role);
                });
                SpiderTaskList.Add(spider);
            });
            JavascriptCallback.OnSearchHandler          += SearchHandlerCallback;
            JavascriptCallback.OnArticleResponseHandler += ArticleResponseHandlerCallback;
            InitStatus = true;
        }
Exemplo n.º 2
0
        private async Task NextTask()
        {
            LogService.Info("准备开始下一个任务");
            SpiderTaskList.Remove(CurrentTask);
            await spiderHandler.SetAccountSpiderStop(CurrentTask.SpiderId);

            CurrentTask = null;
            TaskRuning  = false;
            if (SpiderTaskList.Count == 0)
            {
                InitStatus = false;
            }
        }
Exemplo n.º 3
0
        private async void TaskTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                await spiderHandler.UpdateClientSgin(IdWorkContext.CLIENT_ID);
            }
            catch (NullReferenceException)
            {
                LogService.Error("更新客户端时间时未找到实体,尝试重新写入");
                await spiderHandler.InsertClientSgin(IdWorkContext.CLIENT_ID);
            }
            if (TaskRuning)
            {
                return;
            }
            DateTime now     = DateTime.Now;
            string   role    = $"{now.Day.ToString().PadLeft(2, '0')}:{now.Hour.ToString().PadLeft(2, '0')}";
            string   runDate = now.ToString("yyyyMMddHH");

            foreach (var item in SpiderTaskList)
            {
                try
                {
                    if (await spiderHandler.QuerySpaderStatus(item.SpiderId))
                    {
                        LogService.Info($"公众号{item.NickName}正在执行中");
                        continue;
                    }
                }
                catch (NullReferenceException)
                {
                    LogService.Error($"未找到公众号{item.NickName}:({item.SpiderId})");
                    continue;
                }

                if (item.Ready(role, runDate))
                {
                    LogService.Info($"当前规则{role}");
                    CurrentTask             = item;
                    CurrentTask.CurrentPage = 1;
                    await spiderHandler.SetAccountSpiderStart(item.SpiderId, IdWorkContext.CLIENT_ID);

                    item.Run();
                    TaskRuning = true;
                    break;
                }
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// 创建爬虫任务
 /// </summary>
 /// <returns></returns>
 private async Task CreateSpiderTask(TaskAddOrEditInput input)
 {
     SpiderTask task = input.SpiderTask.MapTo <SpiderTask>();
     await _spiderRepository.InsertAsync(task);
 }