private void StudyCourse(CourseDetailInfo curCourseDetail)
        {
            var playFrameUrl = "http://" + HttpUtility.HOST + curCourseDetail.Url;
            var pageHtmlStr  = HttpUtility.HttpGet(playFrameUrl, Encoding.UTF8);
            var document     = new HtmlParser().Parse(pageHtmlStr);
            var playFrameDom = document.QuerySelector("iframe[id=iframe]");

            var playUrl = playFrameDom.Attributes["src"].Value;

            pageHtmlStr = HttpUtility.HttpGet(playUrl, Encoding.UTF8);

            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add("businessId", "gp5");
            parameters.Add("time", "24000");

            var recordIdStartIndex = pageHtmlStr.IndexOf("attrset.recordId=\"");
            var recordId           = pageHtmlStr.Substring(recordIdStartIndex + "attrset.recordId=\"".Length, 32);

            parameters.Add("recordId", recordId);

            var updateRedisMapIndex = pageHtmlStr.IndexOf("attrset.updateRedisMap=\"");
            var updateRedisMap      = pageHtmlStr.Substring(updateRedisMapIndex + "attrset.updateRedisMap=\"".Length, 1);

            parameters.Add("updateRedisMap", updateRedisMap);

            var studyCodeIndex = pageHtmlStr.IndexOf("attrset.studyCode=\"");
            var studyCode      = pageHtmlStr.Substring(studyCodeIndex + "attrset.studyCode=\"".Length, 32);

            parameters.Add("studyCode", studyCode);

            var sectionIdIndex = pageHtmlStr.IndexOf("attrset.sectionId=\"");
            var sectionId      = pageHtmlStr.Substring(sectionIdIndex + "attrset.sectionId=\"".Length, 36);

            parameters.Add("sectionId", sectionId);

            var signIdIndex = pageHtmlStr.IndexOf("attrset.signId=\"");
            var signId      = pageHtmlStr.Substring(signIdIndex + "attrset.signId=\"".Length);

            signIdIndex = signId.IndexOf("\";");
            signId      = signId.Substring(0, signIdIndex);
            parameters.Add("signId", signId);

            var takeRecordUrl = "http://videoadmin.chinahrt.com.cn/videoPlay/takeRecord";
            var result        = HttpUtility.HttpPost(takeRecordUrl, null, parameters);

            var curCourse = this._vm.CourseInfos.FirstOrDefault(x => x.Guid.Equals(curCourseDetail.ParentGuid));

            LoadCourseDetailInfos(curCourse);

            parameters.Clear();
            parameters.Add("recordId", recordId);
            parameters.Add("time", "100");
            parameters.Add("studyCode", studyCode);
            parameters.Add("viewTime", "100");

            var endPalyUrl = "http://videoadmin.chinahrt.com.cn/videoPlay/endPlay";

            HttpUtility.HttpGet(endPalyUrl, null, parameters);
        }
        private void LoadCourseDetailInfos(CourseInfo curCourse)
        {
            var detailListUrl = "http://" + HttpUtility.HOST + curCourse.DetailUrl;
            var pageHtmlStr   = HttpUtility.HttpGet(detailListUrl, Encoding.UTF8);

            var document         = new HtmlParser().Parse(pageHtmlStr);
            var courseDetailDoms = document.QuerySelectorAll("div.memu-in ul li");

            this.Dispatcher.Invoke(new Action(() =>
            {
                this._vm.CourseDetailInfos.Clear();

                foreach (var item in courseDetailDoms)
                {
                    CourseDetailInfo detailInfo = new CourseDetailInfo();
                    var aDom        = item.QuerySelector("a");
                    detailInfo.Name = aDom.TextContent.Trim();
                    detailInfo.Url  = aDom.Attributes["href"].Value;

                    detailInfo.Guid       = Guid.NewGuid().ToString();
                    detailInfo.ParentGuid = curCourse.Guid;

                    detailInfo.Status = item.QuerySelector("span").TextContent.Trim();;
                    this._vm.CourseDetailInfos.Add(detailInfo);
                }
            }));
        }
        /// <summary>
        /// 获取课程详情
        /// </summary>
        /// <param name="courseList"></param>
        private void GetDetail(List <Course> courseList)
        {
            int count = courseList.Count;

            //System.Threading.Tasks.Parallel.For(0, count, (i, state) =>
            //{
            //    using (var wc = new WebClient())
            //    {
            //        Console.WriteLine("\n" + courseList[i].name + "开始分析...");
            //        string jsonString = wc.DownloadString(string.Format(DetailInfoUrl, courseList[i]._id));
            //        CourseDetailInfo detail = JsonConvert.DeserializeObject<CourseDetailInfo>(jsonString);
            //        if (detail != null && detail.treeData.Length > 0)
            //        {
            //            CategoryNameTarget = "";
            //            ScanChildren(detail.treeData[0]);
            //        }
            //    }

            //    Console.WriteLine(courseList[i].name + "download complete...");
            //});

            foreach (var item in courseList)
            {
                using (var wc = new WebClient())
                {
                    Console.WriteLine("\n" + item.name + "开始分析...");
                    string           jsonString = wc.DownloadString(string.Format(DetailInfoUrl, item._id));
                    CourseDetailInfo detail     = JsonConvert.DeserializeObject <CourseDetailInfo>(jsonString);
                    if (detail != null && detail.treeData.Length > 0)
                    {
                        ScanChildren(detail.treeData[0]);
                    }
                }

                Console.WriteLine(item.name + "download complete...");
            }
        }