public void Execute(JobExecutionContext context) { try { log.Info("AllListJob开始更新"); var videos = ListCache.Instance.Items[new VideoNodeKey(null, 0, null)].Ver1; var root = new XElement("vlist"); int num = 0; foreach (var video in videos) { root.Add(ResponseUtils.ResponseBack(ListCache.Instance.Dictionary[video])); num++; } root.AddFirst(new XElement("count", num)); ResponseUtils.SaveXml("all.xml", root); YesterdayListCache.Instance.Refresh(videos); SerizlizerUtils <YesterdayVideoNode> .SerializeSplitCache(YesterdayListCache.Instance.Items, _buffername); //SerizlizerUtils<VideoNode>.SerializeSplitCache(videos, _buffername); } catch (Exception ex) { log.Error(ex); } finally { log.Info("AllListJob结束更新"); } }
public void Execute(JobExecutionContext context) { try { log.Info("UpdateListJob开始更新"); var yesterday = YesterdayListCache.Instance.Items; var todaylist = ListCache.Instance.Items[new VideoNodeKey(null, 0, null)].Ver1; var today = VideoUtils.ConvertVodIenum(todaylist); var root = new XElement("vlist"); root.Add(new XElement("count", todaylist.Count())); XElement updatexml; XElement deletexml; if (yesterday != null) { var updatevideo = today.Intersect(yesterday, new YesterdayModifyCompare()); var addvideo = today.Except(yesterday, new YesterdayVidCompare()); var deletevideo = yesterday.Except(today, new YesterdayVidCompare()); updatexml = new XElement("v-update", new XAttribute("count", updatevideo.Count() + addvideo.Count())); foreach (var uv in updatevideo) { updatexml.Add(ResponseUtils.ResponseBack(ListCache.Instance.Dictionary[uv.ChannelId])); } foreach (var av in addvideo) { updatexml.Add(ResponseUtils.ResponseBack(ListCache.Instance.Dictionary[av.ChannelId])); } deletexml = new XElement("v-delete", new XAttribute("count", deletevideo.Count())); foreach (var dv in deletevideo) { var v = new XElement("vid", dv.ChannelId); deletexml.Add(v); } } else { updatexml = new XElement("v-update", new XAttribute("count", 0)); deletexml = new XElement("v-delete", new XAttribute("count", 0)); } root.Add(updatexml); root.Add(deletexml); string fileName = string.Format("delta_{0}.xml", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); ResponseUtils.SaveXml(fileName, root); } catch (Exception ex) { log.Error(ex); } finally { log.Info("UpdateListJob结束更新"); } }
public string TodayUpdate(UpdateFilter filter) { try { var nowvideos = VideoUtils.ConvertVodIenum(ListCache.Instance.Items[new VideoNodeKey(null, 0, null)].Ver1); var updatevideos = nowvideos.Where(video => video.ModifyTime >= filter.lasttime); //.ToList(); var deletevideos = YesterdayListCache.Instance.Items.Except(nowvideos, new YesterdayVidCompare()); //.ToList(); int count = updatevideos.Count(); string lasttime = filter.lasttime.ToString("HH:mm:ss"); if (count > 0) { lasttime = updatevideos.Max(video => video.ModifyTime).ToString("HH:mm:ss"); } //var currentvideos = updatevideos.Skip(filter.c * (filter.s - 1)).Take(filter.c); var xml = new XElement("vlist", //new XElement("count", count), //new XElement("page_count", PageUtils.PageCount(count, filter.c)), new XElement("latest_time", lasttime), new XElement("v-update", new XAttribute("count", count), from video in updatevideos select ResponseUtils.ResponseBack(ListCache.Instance.Dictionary[video.ChannelId]) ), new XElement("v-delete", new XAttribute("count", deletevideos.Count()), from dv in deletevideos select new XElement("vid", dv.ChannelId) ) ); return(xml.ToString(SaveOptions.DisableFormatting)); } catch (Exception ex) { return(BoxUtils.FormatErrorMsg(ex)); } }