예제 #1
0
 /// <summary>
 /// 新建 HTML 文件处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void onCreatedHtml(object sender, FileSystemEventArgs e)
 {
     try
     {
         FileInfo htmlFile = new FileInfo(e.FullPath);
         Html     newHtml  = getHtml(htmlFile);
         if (newHtml != null)
         {
             Html   html;
             string url = htmlFile.FullName.Substring(AutoCSer.Web.Config.Search.HtmlPath.Length).Replace('\\', '/'), lowerUrl = url.FileNameToLower();
             Monitor.Enter(htmlLock);
             if (urls.TryGetValue(lowerUrl, out html) && html != Null)
             {
                 Monitor.Exit(htmlLock);
                 if (html.Title != newHtml.Title)
                 {
                     Searcher.SearchTaskQueue.Add(new Queue.Update(new DataKey {
                         Type = DataType.HtmlTitle, Id = html.Id
                     }, newHtml.Title, html.Title));
                     html.Title = newHtml.Title;
                 }
                 if (html.Text != newHtml.Text)
                 {
                     Searcher.SearchTaskQueue.Add(new Queue.Update(new DataKey {
                         Type = DataType.HtmlBodyText, Id = html.Id
                     }, newHtml.Text, html.Text));
                     html.Text = newHtml.Text;
                 }
                 HtmlImage.Free(ref html.Images);
                 html.Images = newHtml.Images;
             }
             else
             {
                 try
                 {
                     urls[lowerUrl] = newHtml;
                 }
                 finally { Monitor.Exit(htmlLock); }
                 newHtml.Url = url;
                 newHtml.Id  = Cache.GetIndex(newHtml);
                 Searcher.SearchTaskQueue.Add(new Queue.Append(new DataKey {
                     Id = newHtml.Id, Type = DataType.HtmlTitle
                 }, newHtml.Title));
                 Searcher.SearchTaskQueue.Add(new Queue.Append(new DataKey {
                     Id = newHtml.Id, Type = DataType.HtmlBodyText
                 }, newHtml.Text));
                 html = newHtml;
             }
             foreach (HtmlImage image in html.Images)
             {
                 image.GetIndex(html.Id);
                 Searcher.SearchTaskQueue.Add(new Queue.Append(new DataKey {
                     Id = image.Id, Type = DataType.HtmlImage
                 }, image.Title));
             }
         }
     }
     catch (Exception error)
     {
         AutoCSer.Log.Pub.Log.Add(AutoCSer.Log.LogType.Error, error);
     }
 }