コード例 #1
0
ファイル: C9EvnentTask.cs プロジェクト: ProximaB/WebAdmin
        /// <summary>
        /// 获取并保存事件视频详情
        /// </summary>
        public async Task GetVideoDetailAsync()
        {
            //读取数据
            var content     = File.ReadAllText("C9EventVideos.json", Encoding.UTF8);
            var eventVideos = JsonConvert.DeserializeObject <List <C9Articles> >(content);
            //eventVideos = eventVideos.Take(20).ToList();
            var allVideoDetail = new ConcurrentBag <EventVideo>();

            int totalNumber = eventVideos.Count;

            Console.WriteLine($"共 {totalNumber} 个视频");

            int i     = 1;
            var tasks = new List <Task>();

            foreach (var item in eventVideos)
            {
                int currentIndex = i;
                var task         = Task.Run(() => getEventVideoDetailAsync(currentIndex, item));
                tasks.Add(task);
                i++;
            }
            async Task getEventVideoDetailAsync(int currentIndex, C9Articles item)
            {
                Console.WriteLine($"开始获取第 {currentIndex} 个视频");
                var videoDetail = await _helper.GetEventVideoPage(item);

                Console.WriteLine($"获取第 {currentIndex} 个视频完成");
                if (videoDetail != null)
                {
                    allVideoDetail.Add(videoDetail);
                }
            }

            //TODO 去重
            Task.WaitAll(tasks.ToArray());
            var wrongData = new EventVideo();

            try
            {
                Console.WriteLine("开始入库");
                foreach (var item in allVideoDetail)
                {
                    Context.EventVideo.AddRange(item);
                    wrongData = item;
                    await Context.SaveChangesAsync();
                }
                Console.WriteLine("入库完成");
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.Message);
                Console.WriteLine("Wrong Data:" + JsonConvert.SerializeObject(wrongData));
            }
        }
コード例 #2
0
 public void AddVideo(EventVideo eventVideo)
 {
     Db.EventVideos.Add(eventVideo);
     Db.SaveChanges();
 }
コード例 #3
0
 public static EventVideo ToEntity(this EventVideoModel model, EventVideo destination)
 {
     return(model.MapTo(destination));
 }
コード例 #4
0
 public static EventVideoModel ToModel(this EventVideo entity)
 {
     return(entity.MapTo <EventVideo, EventVideoModel>());
 }
コード例 #5
0
 public void UpdateEventVideo(EventVideo eventVideo)
 {
     _eventVideoRepository.Update(eventVideo);
 }
コード例 #6
0
 public void InsertEventVideo(EventVideo eventVideo)
 {
     _eventVideoRepository.Insert(eventVideo);
 }