コード例 #1
0
        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;
        }
コード例 #2
0
        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;
            }
              }
        }
コード例 #3
0
 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;
     }
       }
 }
コード例 #4
0
        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);
        }