public void RecordStatsWotLK() { if (ItemType != "Armor" && ItemType != "Weapon") { return; } string stats = Lua.LuaDoString <string>($@" local itemstats=GetItemStats(""{ItemLink.Replace("\"", "\\\"")}"") local stats = """" for stat, value in pairs(itemstats) do stats = stats.._G[stat]..""§""..value..""$"" end return stats"); //Logger.Log("stats -> " + stats); if (stats.Length < 1) { return; } List <string> statsPairs = stats.Split('$').ToList(); foreach (string pair in statsPairs) { if (pair.Length > 0) { string[] statsPair = pair.Split('§'); string statName = statsPair[0]; float statValue = float.Parse(statsPair[1], CultureInfo.InvariantCulture); if (!ItemStats.ContainsKey(statName)) { ItemStats.Add(statName, statValue); } } } RecordWeightScore(); }
public void ProcessUrlEx(int Level, String DestFolder, String url, Label Status, TextBox Results) // Recursive processing of a URL { String ItemName, ItemImage, ItemLink; int ItemIndex = 0; HtmlAgilityPack.HtmlNodeCollection ItemNodes; String SaveFile; if (fWasCancelled) { return; } using (WebClient Client = new WebClient()) // IDisposable { url = URLAppend(url, "page=all"); String Page = Client.DownloadString(url); HtmlAgilityPack.HtmlDocument Doc = new HtmlAgilityPack.HtmlDocument(); Doc.LoadHtml(Page); ItemNodes = Doc.DocumentNode.SelectNodes("//td[@class='thumbnail']"); if (ItemNodes == null) { Results.AppendText(">> No images or folders\r\n"); } else { fTotalItems += ItemNodes.Count; File.WriteAllText(DestFolder + "Description.txt", ExtractUserDesc(Page)); // Save the Description text to txt file // Iterate items on the page (assume < 1000 items) foreach (HtmlNode Node in ItemNodes) { ItemIndex++; ItemName = FilenameSafe(ItemIndex.ToString("D3") + "-" + ExtractString(Node.InnerHtml, "alt=")); // force 3-digit prefix to maintian order ItemImage = ExtractString(Node.InnerHtml, "src="); ItemLink = ExtractString(Node.InnerHtml, "href="); if (ItemLink.IndexOf(SourceURL + "/image/") > -1) // Is the item a link to an image? If so, download and save data { //Load the Image page SaveFile = DestFolder + ItemIndex.ToString("D3") + ".jpg"; HtmlAgilityPack.HtmlDocument ImageDoc = new HtmlAgilityPack.HtmlDocument(); if (!File.Exists(SaveFile)) { ItemLink = ItemLink + "/original&exif=Y"; Page = Client.DownloadString(ItemLink); ImageDoc.LoadHtml(Page); HtmlNode jpgnode = ImageDoc.DocumentNode.SelectSingleNode("//div[@id='imgdiv']"); if (jpgnode != null) { String jpgLink = ExtractString(jpgnode.InnerHtml, "src="); Client.DownloadFile(jpgLink, SaveFile); } } // Iterate the Title and EXIF data if available, and save to txt file SaveFile = DestFolder + ItemIndex.ToString("D3") + ".txt"; if (!File.Exists(SaveFile)) { String EXIF = ""; HtmlNode TitleNode = ImageDoc.DocumentNode.SelectSingleNode("//span[@class='title']"); if (TitleNode != null) { EXIF = "Title=" + TitleNode.InnerText + "\n"; } HtmlNodeCollection ExifNodes = ImageDoc.DocumentNode.SelectNodes("//td[@class='lid']"); Boolean first = true; if (ExifNodes != null) { foreach (HtmlNode ExifNode in ExifNodes) { if (first) { EXIF = EXIF + ExifNode.InnerText; } else { EXIF = EXIF + "=" + ExifNode.InnerText + "\n"; } first = !first; } } File.WriteAllText(SaveFile, EXIF); } } else // Is the item a link to a gallery or image page? If so, explore it { Results.AppendText("Processing folder " + ItemLink.Replace(SourceURL, "") + "\r\n"); ItemLink = URLAppend(ItemLink, "page=all"); if (!Directory.Exists(DestFolder + ItemName)) // Create folder and store thumbnail { Directory.CreateDirectory(DestFolder + ItemName); } Client.DownloadFile(ItemImage, DestFolder + ItemName + "/Thumbnail.jpg"); fProcessedFolders++; ProcessUrlEx(Level + 1, DestFolder + ItemName + '\\', ItemLink, Status, Results); } fProcessedItems++; if (!SetStatus(Status, "Processed " + fProcessedItems.ToString() + " of " + fTotalItems.ToString() + " discovered items")) { break; } } } } }
public void CreateRss(DataSet ds) { XmlDocument domDoc = new XmlDocument(); //XmlDeclaration nodeDeclar = domDoc.CreateXmlDeclaration("1.0 ", System.Text.Encoding.UTF8.BodyName, "yes "); XmlDeclaration nodeDeclar = domDoc.CreateXmlDeclaration("1.0", "UTF-8", string.Empty); domDoc.AppendChild(nodeDeclar); //如果rss有样式表文件的话,加上这两句 //XmlProcessingInstruction nodeStylesheet = domDoc.CreateProcessingInstruction("xml-stylesheet", @"type='text/css' href='rss.css' "); //domDoc.AppendChild(nodeStylesheet); XmlElement root = domDoc.CreateElement("rss"); root.SetAttribute("version", RssVersion); //添加属性结点 domDoc.AppendChild(root); XmlElement chnode = domDoc.CreateElement("channel"); root.AppendChild(chnode); XmlElement element = domDoc.CreateElement("title"); XmlNode textNode = domDoc.CreateTextNode(RssTitle); //文本结点 element.AppendChild(textNode); chnode.AppendChild(element); element = domDoc.CreateElement("link"); textNode = domDoc.CreateTextNode(RssLink); element.AppendChild(textNode); chnode.AppendChild(element); element = domDoc.CreateElement("description"); //引用结点 XmlNode cDataNode = domDoc.CreateTextNode(RssDescription); element.AppendChild(cDataNode); chnode.AppendChild(element); DataTable dt = ds.Tables[0]; //访问数据库,获取要在rss中显示的记录 foreach (DataRow dr in dt.Rows) { //element = domDoc.CreateElement("item"); ////... ////创建内容结点,常见的如title,description,link,pubDate,创建方法同上 ////... XmlElement item = domDoc.CreateElement("item"); chnode.AppendChild(item); ////chnode.AppendChild(element); XmlElement element1 = domDoc.CreateElement("title"); XmlNode textNode1 = domDoc.CreateTextNode(dr[ItemTitle].ToString()); //文本结点 element1.AppendChild(textNode1); item.AppendChild(element1); element1 = domDoc.CreateElement("link"); textNode1 = domDoc.CreateTextNode(ItemLink.Replace("[ItemID]", dr[ItemID].ToString())); element1.AppendChild(textNode1); item.AppendChild(element1); element1 = domDoc.CreateElement("description"); //引用结点 textNode1 = domDoc.CreateTextNode(dr[ItemDescription].ToString()); element1.AppendChild(textNode1); item.AppendChild(element1); element1 = domDoc.CreateElement("pubDate"); //日期 textNode1 = domDoc.CreateTextNode(DateTime.Parse(dr[ItemDate].ToString()).ToString("yyyy-MM-dd")); element1.AppendChild(textNode1); item.AppendChild(element1); } //输出 //XmlTextWriter objTextWrite = new XmlTextWriter(this.Response.OutputStream, System.Text.Encoding.UTF8); //string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(); domDoc.Save(System.Web.HttpContext.Current.Server.MapPath("~/Feeds/" + RssFileName)); //objTextWrite.Flush(); //objTextWrite.Close(); }