public List<Revision> getRevisions(string title) { // prepare string url = this.baseUrl + "api.php?action=query&prop=revisions&titles=" + Uri.EscapeDataString(title) + "&rvlimit=500&format=xml&rvprop=ids|timestamp|flags|comment|user|size"; if (continueStr != null) url += continueStr; else url += "&continue="; // load WebClient client1 = new WebClient(); XmlDocument xmlDoc = new XmlDocument(); List<Revision> revisions = new List<Revision>(); client1.Encoding = Encoding.UTF8; client1.Headers.Add("User-Agent", "WikiHistory (http://de.wikipedia.org/wiki/Benutzer:APPER/WikiHistory) [he]"); try { xmlDoc.LoadXml( client1.DownloadString(url)); } catch { return revisions; } XmlNode xmlRevisions = xmlDoc.DocumentElement; XmlNode currentNode; this.ready = true; // query currentNode = xmlRevisions.SelectSingleNode("query"); if (currentNode == null) return revisions; currentNode = currentNode.SelectSingleNode("pages"); if (currentNode == null) return revisions; currentNode = currentNode.SelectSingleNode("page"); if (currentNode == null) return revisions; if (currentNode.Attributes.GetNamedItem("missing") != null) return revisions; currentNode = currentNode.SelectSingleNode("revisions"); if (currentNode == null) return revisions; foreach (XmlNode rev in currentNode.SelectNodes("rev")) { Revision newRevision = new Revision(); XmlNode attribute; attribute = rev.Attributes.GetNamedItem("revid"); if (attribute != null) { try { newRevision.id = Convert.ToInt64(attribute.Value); } catch { newRevision.id = -1; } } attribute = rev.Attributes.GetNamedItem("minor"); if (attribute != null) { newRevision.minor = true; } attribute = rev.Attributes.GetNamedItem("user"); if (attribute != null) { newRevision.user = attribute.Value; } attribute = rev.Attributes.GetNamedItem("anon"); if (attribute != null) { newRevision.anon = true; } attribute = rev.Attributes.GetNamedItem("timestamp"); if (attribute != null) { newRevision.timestamp = ConvertTimestampToDateTime(attribute.Value); } attribute = rev.Attributes.GetNamedItem("comment"); if (attribute != null) { newRevision.comment = attribute.Value; } attribute = rev.Attributes.GetNamedItem("size"); if (attribute != null) { newRevision.size = Convert.ToInt32(attribute.Value); } if (newRevision.user != null || newRevision.anon) revisions.Add(newRevision); } // query-continue currentNode = xmlRevisions.SelectSingleNode("continue"); if (currentNode != null) { this.ready = false; if (currentNode != null) { this.continueStr = "&" + string.Join("&", currentNode.Attributes .Cast<XmlAttribute>() .Select(a => Uri.EscapeDataString(a.Name) + "=" + Uri.EscapeDataString(a.Value)) .ToArray() ); } } return revisions; }
private void findRevisionSuccess(Revision rev) { findRevisionEnded(); tabControl1.SelectedIndex = 1; comboBoxUser1.Text = ""; showProgress("", -1); foreach (ListViewItem lvi in listViewEdits.Items) { if ((Revision)lvi.Tag == rev) { lvi.Selected = true; lvi.EnsureVisible(); break; } } }
private void showRevisionState(Revision rev, bool found) { if (found) rev.displayColor = Color.LightGreen; else rev.displayColor = Color.LightPink; foreach (ListViewItem lvi in listViewEdits.Items) { if ((Revision)lvi.Tag == rev) { lvi.BackColor = rev.displayColor; break; } } }
public List <Revision> getRevisions(string title) { // prepare string url = this.baseUrl + "api.php?action=query&prop=revisions&titles=" + Uri.EscapeDataString(title) + "&rvlimit=500&format=xml&rvprop=ids|timestamp|flags|comment|user|size"; if (continueStr != null) { url += continueStr; } else { url += "&continue="; } // load WebClient client1 = new WebClient(); XmlDocument xmlDoc = new XmlDocument(); List <Revision> revisions = new List <Revision>(); client1.Encoding = Encoding.UTF8; client1.Headers.Add("User-Agent", "WikiHistory (http://de.wikipedia.org/wiki/Benutzer:APPER/WikiHistory) [he]"); try { xmlDoc.LoadXml(client1.DownloadString(url)); } catch { return(revisions); } XmlNode xmlRevisions = xmlDoc.DocumentElement; XmlNode currentNode; this.ready = true; // query currentNode = xmlRevisions.SelectSingleNode("query"); if (currentNode == null) { return(revisions); } currentNode = currentNode.SelectSingleNode("pages"); if (currentNode == null) { return(revisions); } currentNode = currentNode.SelectSingleNode("page"); if (currentNode == null) { return(revisions); } if (currentNode.Attributes.GetNamedItem("missing") != null) { return(revisions); } currentNode = currentNode.SelectSingleNode("revisions"); if (currentNode == null) { return(revisions); } foreach (XmlNode rev in currentNode.SelectNodes("rev")) { Revision newRevision = new Revision(); XmlNode attribute; attribute = rev.Attributes.GetNamedItem("revid"); if (attribute != null) { try { newRevision.id = Convert.ToInt64(attribute.Value); } catch { newRevision.id = -1; } } attribute = rev.Attributes.GetNamedItem("minor"); if (attribute != null) { newRevision.minor = true; } attribute = rev.Attributes.GetNamedItem("user"); if (attribute != null) { newRevision.user = attribute.Value; } attribute = rev.Attributes.GetNamedItem("anon"); if (attribute != null) { newRevision.anon = true; } attribute = rev.Attributes.GetNamedItem("timestamp"); if (attribute != null) { newRevision.timestamp = ConvertTimestampToDateTime(attribute.Value); } attribute = rev.Attributes.GetNamedItem("comment"); if (attribute != null) { newRevision.comment = attribute.Value; } attribute = rev.Attributes.GetNamedItem("size"); if (attribute != null) { newRevision.size = Convert.ToInt32(attribute.Value); } if (newRevision.user != null || newRevision.anon) { revisions.Add(newRevision); } } // query-continue currentNode = xmlRevisions.SelectSingleNode("continue"); if (currentNode != null) { this.ready = false; if (currentNode != null) { this.continueStr = "&" + string.Join("&", currentNode.Attributes .Cast <XmlAttribute>() .Select(a => Uri.EscapeDataString(a.Name) + "=" + Uri.EscapeDataString(a.Value)) .ToArray() ); } } return(revisions); }