コード例 #1
0
        private void DownloadResult(OcrTask task, string outputFile)
        {
            if (task.Status != TaskStatus.Completed)
            {
                throw new ArgumentException("Cannot download result for not completed task");
            }

            try
            {
                if (File.Exists(outputFile))
                {
                    File.Delete(outputFile);
                }

                if (task.DownloadUrls == null || task.DownloadUrls.Count == 0)
                {
                    throw new ArgumentException("Cannot download task without download url");
                }

                string url = task.DownloadUrls[0];
                DownloadUrl(url, outputFile);
            }
            catch (WebException e)
            {
                throw new Exception(e.Message, e);
            }
        }
コード例 #2
0
        public static OcrTask[] GetAllTasks(XDocument xml)
        {
            var      result    = new List <OcrTask>();
            XElement xResponse = xml.Root;

            foreach (XElement xTask in xResponse.Elements("task"))
            {
                OcrTask task = GetTaskInfo(xTask);
                result.Add(task);
            }

            return(result.ToArray());
        }
コード例 #3
0
ファイル: RedisService.cs プロジェクト: 24wings/dingding-saas
        //public async Task<bool> clearTaskProcess(OcrTask ocrTask)
        //{
        //    var processListKeyExsit = database.KeyExists(ocrTask.TaskName + "-process");
        //    var finishedListKeyExsit = database.KeyExists(ocrTask.TaskName + "-finished");
        //    if (processListKeyExsit)
        //    {
        //        database.KeyDelete(ocrTask.TaskName + "-process");

        //    }

        //    if (finishedListKeyExsit)
        //    {
        //        database.KeyDelete(ocrTask.TaskName + "-finished");
        //    }

        //    return true;
        //}

        public async Task <bool> createTaskProcess(OcrTask ocrTask)
        {
            var exsit = database.KeyExists(ocrTask.TaskName + "-process");

            if (exsit)
            {
            }
            else
            {
                var taskList = new List <RedisValue>();
                for (var i = ocrTask.Start; i < ocrTask.End; i++)
                {
                    taskList.Add(new RedisValue(i.ToString()));
                }
                await database.ListRightPushAsync(ocrTask.TaskName + "-process", taskList.ToArray());

                Console.WriteLine("add task-process length:" + (ocrTask.End - ocrTask.Start).ToString() + " items");
            }
            return(true);
        }
コード例 #4
0
        /// <summary>
        /// Get task data from xml node "task"
        /// </summary>
        private static OcrTask GetTaskInfo(XElement xTask)
        {
            TaskId     id     = new TaskId(xTask.Attribute("id").Value);
            TaskStatus status = StatusFromString(xTask.Attribute("status").Value);

            var task = new OcrTask
            {
                TaskId = id,
                Status = status
            };

            XAttribute xRegistrationTime = xTask.Attribute("registrationTime");

            if (xRegistrationTime != null)
            {
                DateTime time;
                if (DateTime.TryParse(xRegistrationTime.Value, out time))
                {
                    task.RegistrationTime = time;
                }
            }

            XAttribute xStatusChangeTime = xTask.Attribute("statusChangeTime");

            if (xStatusChangeTime != null)
            {
                DateTime time;
                if (DateTime.TryParse(xStatusChangeTime.Value, out time))
                {
                    task.StatusChangeTime = time;
                }
            }

            XAttribute xFilesCount = xTask.Attribute("filesCount");

            if (xFilesCount != null)
            {
                int filesCount;
                if (int.TryParse(xFilesCount.Value, out filesCount))
                {
                    task.FilesCount = filesCount;
                }
            }

            XAttribute xCredits = xTask.Attribute("credits");

            if (xCredits != null)
            {
                int credits;
                if (int.TryParse(xCredits.Value, out credits))
                {
                    task.Credits = credits;
                }
            }

            XAttribute xDescription = xTask.Attribute("description");

            if (xDescription != null)
            {
                task.Description = xDescription.Value;
            }

            XAttribute xResultUrl = xTask.Attribute("resultUrl");

            if (xResultUrl != null)
            {
                task.DownloadUrls = new List <string> {
                    xResultUrl.Value
                };
                for (int i = 2; i < 10; i++)
                {
                    XAttribute xResultUrlI = xTask.Attribute("resultUrl" + i);
                    if (xResultUrlI != null)
                    {
                        task.DownloadUrls.Add(xResultUrlI.Value);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            XAttribute xError = xTask.Attribute("error");

            if (xError != null)
            {
                task.Error = xError.Value;
            }

            return(task);
        }