Пример #1
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Regex r in Contains)
            {
                if (!r.IsMatch(article.Text))
                    return false;
            }

            return true;
        }
Пример #2
0
        public override bool Check(ArticleInfo article)
        {
            DateTime timestamp;

            if (DateTime.TryParse(article.Timestamp, out timestamp))
            {
                return((DateTime.Compare(timestamp, From) >= 0) && (DateTime.Compare(timestamp, To) <= 0));
            }
            return(false);
        }
Пример #3
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Regex r in Contains)
            {
                if (!r.IsMatch(article.Text))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #4
0
        private void ScanArticle(ArticleInfo ai)
        {
            foreach (Scan z in Scanners)
            {
                if (!z.Check(ref ai.Text, ref ai.Title, ai.Timestamp, ai.Restrictions))
                {
                    return;
                }
            }

            OutputQueue.Add(ai.Title);
        }
Пример #5
0
        public override bool Check(ArticleInfo article)
        {
            Actual = WikiRegexes.SimpleWikiLink.Matches(article.Text).Count;

            if (M == MoreLessThan.MoreThan)
            {
                return(Actual > Test);
            }
            if (M == MoreLessThan.LessThan)
            {
                return(Actual < Test);
            }
            return(Actual == Test);
        }
Пример #6
0
        public override bool Check(ArticleInfo article)
        {
            Actual = Tools.WordCount(article.Text);

            if (M == MoreLessThan.MoreThan)
            {
                return(Actual > Test);
            }
            if (M == MoreLessThan.LessThan)
            {
                return(Actual < Test);
            }
            return(Actual == Test);
        }
Пример #7
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Match m in WikiRegexes.SimpleWikiLink.Matches(article.Text))
            {
                string y = System.Web.HttpUtility.UrlDecode(m.Value.Replace("+", "%2B"));

                if (m.Value != y)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #8
0
        public override bool Check(ArticleInfo article)
        {
            Actual = article.Text.Length;

            if (M == MoreLessThan.MoreThan)
            {
                return(Actual > Test);
            }
            if (M == MoreLessThan.LessThan)
            {
                return(Actual < Test);
            }

            return(Actual == Test);
        }
Пример #9
0
        public override bool Check(ArticleInfo article)
        {
            if (WikiRegexes.Category.IsMatch(article.Text))
            {
                return(false);
            }

            foreach (Match m in WikiRegexes.Template.Matches(article.Text))
            {
                if (!m.Value.Contains("stub"))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #10
0
        private void ScanArticle(ArticleInfo ai)
        {
            if (IgnoreComments)
            {
                ai.Text = WikiRegexes.Comments.Replace(ai.Text, "");
            }

            foreach (Scan z in Scanners)
            {
                if (!z.Check(ai))
                {
                    return;
                }
            }

            OutputQueue.Add(ai.Title);
        }
Пример #11
0
        private void SecondaryThread()
        {
            try
            {
                bool sleep;
                int  sleeps = 0;
                while (Run)
                {
                    if (PendingArticles.Count > 0)
                    {
                        lock (PendingArticles)
                        {
                            if (PendingArticles.Count > 0)
                            {
                                ArticleInfo ai = PendingArticles.Remove();
                                ScanArticle(ai);
                                sleep = false;
                            }
                            else
                            {
                                sleep = true;
                            }
                        }
                    }
                    else
                    {
                        sleep = true;
                    }

                    if (sleep)
                    {
                        Thread.Sleep(1);
                        sleeps++;
                    }
                }
                //System.Windows.Forms.MessageBox.Show(sleeps.ToString());
            }
            catch (ThreadAbortException)
            { }
            catch (Exception ex)
            {
                //TODO:
                ErrorHandler.Handle(ex);
            }
        }
Пример #12
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Match m in WikiRegexes.PipedWikiLink.Matches(article.Text))
            {
                string a = m.Groups[1].Value;
                string b = m.Groups[2].Value;

                if (a == b || Tools.TurnFirstToLower(a) == b)
                {
                    return(true);
                }
                if (a + "s" == b || Tools.TurnFirstToLower(a) + "s" == b)
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #13
0
        public override bool Check(ArticleInfo article)
        {
            bool restrictionStringEmpty = (string.IsNullOrEmpty(article.Restrictions));
            bool noEditRestriction      = string.IsNullOrEmpty(Edit);
            bool noMoveRestriction      = string.IsNullOrEmpty(Move);

            if (restrictionStringEmpty)
            {
                return(noEditRestriction && noMoveRestriction);
            }

            if (!noEditRestriction && !article.Restrictions.Contains(EditRest + Edit))
            {
                return(false);
            }

            return(noMoveRestriction || article.Restrictions.Contains(MoveRest + Move));
        }
Пример #14
0
        private void SecondaryThread()
        {
            try
            {
                while (Run)
                {
                    bool sleep;
                    if (PendingArticles.Count > 0)
                    {
                        lock (PendingArticles)
                        {
                            if (PendingArticles.Count > 0)
                            {
                                ArticleInfo ai = PendingArticles.Remove();
                                ScanArticle(ai);
                                sleep = false;
                            }
                            else
                            {
                                sleep = true;
                            }
                        }
                    }
                    else
                    {
                        sleep = true;
                    }

                    if (sleep)
                    {
                        Thread.Sleep(1);
                    }
                }
            }
            catch (ThreadAbortException)
            { }
            catch (Exception ex)
            {
                ErrorHandler.Handle(ex);
            }
        }
Пример #15
0
        /// <summary>
        /// Reads a page from the reader, returns ArticleInfo or null if EOF
        /// </summary>
        private ArticleInfo ReadArticle(XmlReader reader)
        {
            do
            {
                if (!reader.ReadToFollowing("page"))
                {
                    return(null);
                }
            }while (!reader.IsStartElement());

            ArticleInfo ai = new ArticleInfo();

            while (reader.Read() && reader.Name != "page") // stop on closing element
            {
                if (!reader.IsStartElement())
                {
                    continue;
                }
                switch (reader.Name)
                {
                case "title":
                    ai.Title = reader.ReadString();
                    break;

                case "timestamp":
                    ai.Timestamp = reader.ReadString();
                    break;

                case "restrictions":
                    ai.Restrictions = reader.ReadString();
                    break;

                case "text":
                    ai.Text = reader.ReadString();
                    break;
                }
            }

            return(ai.IsFullyRead ? ai : null);
        }
Пример #16
0
 public override bool Check(ArticleInfo article)
 {
     return(!Tools.IsRedirect(article.Text));
 }
Пример #17
0
 public override bool Check(ArticleInfo article)
 {
     return(BulletRegex.IsMatch(article.Text));
 }
Пример #18
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Match m in WikiRegexes.SimpleWikiLink.Matches(article.Text))
            {
                string y = System.Web.HttpUtility.UrlDecode(m.Value.Replace("+", "%2B"));

                if (m.Value != y)
                    return false;
            }

            return true;
        }
Пример #19
0
        public override bool Check(ArticleInfo article)
        {
            int bracketLength = 0;

            return(Parsers.UnbalancedBrackets(article.Text, ref bracketLength) != -1);
        }
Пример #20
0
 public override bool Check(ArticleInfo article)
 {
     return(!base.Check(article));
 }
Пример #21
0
        /// <summary>
        /// Reads a page from the reader, returns ArticleInfo or null if EOF
        /// </summary>
        private ArticleInfo ReadArticle(XmlReader reader)
        {
            do
                if (!reader.ReadToFollowing("page")) return null;
            while (!reader.IsStartElement());

            ArticleInfo ai = new ArticleInfo();
            while (reader.Read() && reader.Name != "page") // stop on closing element
            {
                if (!reader.IsStartElement()) continue;
                switch (reader.Name)
                {
                    case "title":
                        ai.Title = reader.ReadString();
                        break;
                    case "timestamp":
                        ai.Timestamp = reader.ReadString();
                        break;
                    case "restrictions":
                        ai.Restrictions = reader.ReadString();
                        break;
                    case "text":
                        ai.Text = reader.ReadString();
                        break;
                }
            }

            return ai.IsFullyRead ? ai : null;
        }
Пример #22
0
 public override bool Check(ArticleInfo article)
 {
     return (BulletRegex.IsMatch(article.Text));
 }
Пример #23
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.ChangeToDefaultSort(article.Text, article.Title, out Skip);

            return !Skip;
        }
Пример #24
0
        public override bool Check(ArticleInfo article)
        {
            foreach (Match m in WikiRegexes.PipedWikiLink.Matches(article.Text))
            {
                string a = m.Groups[1].Value;
                string b = m.Groups[2].Value;

                if (a == b || Tools.TurnFirstToLower(a) == b)
                    return true;
                if (a + "s" == b || Tools.TurnFirstToLower(a) + "s" == b)
                    return true;
            }
            return false;
        }
Пример #25
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.FixHeadings(article.Text, article.Title, out Skip);

            return !Skip;
        }
Пример #26
0
        public override bool Check(ArticleInfo article)
        {
            P.Unicodify(article.Text, out Skip);

            return !Skip;
        }
Пример #27
0
 public virtual bool Check(ArticleInfo article)
 {
     return true;
 }
Пример #28
0
        public override bool Check(ArticleInfo article)
        {
            int bracketLength = 0;

            return (Parsers.UnbalancedBrackets(article.Text, ref bracketLength) != -1);
        }
Пример #29
0
 public override bool Check(ArticleInfo article)
 {
     return(Retf.DetectTypo(article.Text, article.Title));
 }
Пример #30
0
 public override bool Check(ArticleInfo article)
 {
     return Retf.DetectTypo(article.Text, article.Title);
 }
Пример #31
0
        public override bool Check(ArticleInfo article)
        {
            Actual = Tools.WordCount(article.Text);

            if (M == MoreLessThan.MoreThan)
                return (Actual > Test);
            if (M == MoreLessThan.LessThan)
                return (Actual < Test);
            return (Actual == Test);
        }
Пример #32
0
 public override bool Check(ArticleInfo article)
 {
     return (!Tools.IsRedirect(article.Text));
 }
Пример #33
0
        private void Process()
        {
            string articleTitle = "";

            try
            {
                using (XmlTextReader reader = new XmlTextReader(stream))
                {
                    reader.WhitespaceHandling = WhitespaceHandling.None;

                    if (From.Length > 0)
                    {
                        //move to start from article
                        while (reader.Read() && mRun)
                        {
                            if (reader.Name == "page")
                            {
                                reader.ReadToFollowing("title");
                                articleTitle = reader.ReadString();

                                if (From == articleTitle)
                                {
                                    break;
                                }
                            }
                        }
                    }

                    while (reader.Read() && mRun)
                    {
                        if (reader.Name == "page")
                        {
                            ArticleInfo ai = new ArticleInfo();

                            reader.ReadToFollowing("title");
                            ai.Title = articleTitle = reader.ReadString();

                            //reader.ReadToFollowing(restriction); //TODO:This is wrong. Only want to read the restriction if in that <page></page>

                            if (reader.Name == "restrictions")
                            {
                                ai.Restrictions = reader.ReadString();
                            }
                            else
                            {
                                ai.Restrictions = "";
                            }

                            reader.ReadToFollowing("timestamp");
                            ai.Timestamp = reader.ReadString();
                            reader.ReadToFollowing("text");
                            ai.Text = reader.ReadString();

                            if (IgnoreComments)
                            {
                                ai.Text = WikiRegexes.Comments.Replace(ai.Text, "");
                            }

                            if (MultiThreaded)
                            {
                                if (PendingArticles.Count < ProcessorCount * 4 + 5)
                                {
                                    PendingArticles.Add(ai);
                                }
                                else
                                {
                                    ScanArticle(ai);
                                }
                            }
                            else
                            {
                                ScanArticle(ai);
                            }
                        }
                    }

                    lock (ScanThread)
                    {
                        stream = null;
                    }

                    if (MultiThreaded)
                    {
                        while (PendingArticles.Count > 0)
                        {
                            Thread.Sleep(10);
                        }

                        mRun = false;

                        foreach (Thread thr in SecondaryThreads)
                        {
                            thr.Join();
                        }
                    }
                }
            }
            catch (ThreadAbortException) { }
            catch (Exception ex)
            {
                if (boolMessage)
                {
                    //System.Windows.Forms.MessageBox.Show("Problem on " + articleTitle + "\r\n\r\n" + ex.Message);
                    ErrorHandler.Handle(ex);
                }
            }
            finally
            {
                if (boolMessage)
                {
                    context.Post(SOPCstopped, articleTitle);
                }
            }
        }
Пример #34
0
 public override bool Check(ArticleInfo article)
 {
     DateTime timestamp;
     if (DateTime.TryParse(article.Timestamp, out timestamp))
         return ((DateTime.Compare(timestamp, From) >= 0) && (DateTime.Compare(timestamp, To) <= 0));
     return false;
 }
Пример #35
0
        public override bool Check(ArticleInfo article)
        {
            Actual = article.Text.Length;

            if (M == MoreLessThan.MoreThan)
                return (Actual > Test);
            if (M == MoreLessThan.LessThan)
                return (Actual < Test);
            
            return (Actual == Test);
        }
Пример #36
0
        public override bool Check(ArticleInfo article)
        {
            bool restrictionStringEmpty = (string.IsNullOrEmpty(article.Restrictions));
            bool noEditRestriction = string.IsNullOrEmpty(Edit);
            bool noMoveRestriction = string.IsNullOrEmpty(Move);

            if (restrictionStringEmpty)
            {
                return (noEditRestriction && noMoveRestriction);
            }

            if (!noEditRestriction && !article.Restrictions.Contains(EditRest + Edit))
                return false;

            return noMoveRestriction || article.Restrictions.Contains(MoveRest + Move);
        }
Пример #37
0
        public override bool Check(ArticleInfo article)
        {
            P.FixPeopleCategories(article.Text, article.Title, false, out Skip);

            return !Skip;
        }
Пример #38
0
        public override bool Check(ArticleInfo article)
        {
            if (WikiRegexes.Category.IsMatch(article.Text))
                return false;

            foreach (Match m in WikiRegexes.Template.Matches(article.Text))
            {
                if (!m.Value.Contains("stub"))
                    return false;
            }

            return true;
        }
Пример #39
0
        public override bool Check(ArticleInfo article)
        {
            P.Unicodify(article.Text, out Skip);

            return(!Skip);
        }
Пример #40
0
 public override bool Check(ArticleInfo article)
 {
     return !base.Check(article);
 }
Пример #41
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.FixHeadings(article.Text, article.Title, out Skip);

            return(!Skip);
        }
Пример #42
0
        public override bool Check(ArticleInfo article)
        {
            P.CiteTemplateDates(article.Text, out Skip);

            return !Skip;
        }
Пример #43
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.LivingPeople(article.Text, out Skip);

            return(!Skip);
        }
Пример #44
0
        private void ScanArticle(ArticleInfo ai)
        {
            foreach (Scan z in Scanners)
            {
                if (!z.Check(ref ai.Text, ref ai.Title, ai.Timestamp, ai.Restrictions))
                {
                    return;
                }
            }

            OutputQueue.Add(ai.Title);
        }
Пример #45
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.ChangeToDefaultSort(article.Text, article.Title, out Skip);

            return(!Skip);
        }
Пример #46
0
        public override bool Check(ArticleInfo article)
        {
            P.BoldTitle(article.Text, article.Title, out Skip);

            return !Skip;
        }
Пример #47
0
 public override bool Check(ArticleInfo article)
 {
     return (Namespaces.Contains(Namespace.Determine(article.Title)));
 }
Пример #48
0
 public override bool Check(ArticleInfo article)
 {
     return (Contains.IsMatch(article.Title));
 }
Пример #49
0
        public override bool Check(ArticleInfo article)
        {
            Parsers.LivingPeople(article.Text, out Skip);

            return !Skip;
        }
Пример #50
0
        public override bool Check(ArticleInfo article)
        {
            P.BoldTitle(article.Text, article.Title, out Skip);

            return(!Skip);
        }
Пример #51
0
        private void Process()
        {
            string articleTitle = "";

            try
            {
                using (XmlTextReader reader = new XmlTextReader(stream))
                {
                    reader.WhitespaceHandling = WhitespaceHandling.None;

                    if (From.Length > 0)
                    {
                        //move to start from article
                        while (reader.Read() && mRun)
                        {
                            if (reader.Name == "page")
                            {
                                reader.ReadToFollowing("title");
                                articleTitle = reader.ReadString();

                                if (From == articleTitle)
                                    break;
                            }
                        }
                    }

                    while (reader.Read() && mRun)
                    {
                        if (reader.Name == "page")
                        {
                            ArticleInfo ai = new ArticleInfo();

                            reader.ReadToFollowing("title");
                            ai.Title = articleTitle = reader.ReadString();

                            //reader.ReadToFollowing(restriction); //TODO:This is wrong. Only want to read the restriction if in that <page></page>

                            if (reader.Name == "restrictions")
                                ai.Restrictions = reader.ReadString();
                            else
                                ai.Restrictions = "";

                            reader.ReadToFollowing("timestamp");
                            ai.Timestamp = reader.ReadString();
                            reader.ReadToFollowing("text");
                            ai.Text = reader.ReadString();

                            if (IgnoreComments)
                                ai.Text = WikiRegexes.Comments.Replace(ai.Text, "");

                            if (MultiThreaded)
                            {
                                if (PendingArticles.Count < ProcessorCount * 4 + 5)
                                {
                                    PendingArticles.Add(ai);
                                }
                                else
                                {
                                    ScanArticle(ai);
                                }
                            }
                            else
                            {
                                ScanArticle(ai);
                            }
                        }
                    }

                    lock (ScanThread)
                    {
                        stream = null;
                    }

                    if (MultiThreaded)
                    {
                        while (PendingArticles.Count > 0)
                            Thread.Sleep(10);

                        mRun = false;

                        foreach (Thread thr in SecondaryThreads)
                            thr.Join();
                    }
                }
            }
            catch (ThreadAbortException) { }
            catch (Exception ex)
            {
                if (boolMessage)
                    //System.Windows.Forms.MessageBox.Show("Problem on " + articleTitle + "\r\n\r\n" + ex.Message);
                    ErrorHandler.Handle(ex);
            }
            finally
            {
                if (boolMessage)
                    context.Post(SOPCstopped, articleTitle);
            }
        }
Пример #52
0
        public override bool Check(ArticleInfo article)
        {
            P.CiteTemplateDates(article.Text, out Skip);

            return(!Skip);
        }
Пример #53
0
        public override bool Check(ArticleInfo article)
        {
            Actual = WikiRegexes.SimpleWikiLink.Matches(article.Text).Count;

            if (M == MoreLessThan.MoreThan)
                return (Actual > Test);
            if (M == MoreLessThan.LessThan)
                return (Actual < Test);
            return (Actual == Test);
        }
Пример #54
0
        public override bool Check(ArticleInfo article)
        {
            string articleTextAfter = Parsers.ReorderReferences(article.Text);

            return(!articleTextAfter.Equals(article.Text));
        }
Пример #55
0
        private void ScanArticle(ArticleInfo ai)
        {
            if (IgnoreComments)
                ai.Text = WikiRegexes.Comments.Replace(ai.Text, "");

            foreach (Scan z in Scanners)
            {
                if (!z.Check(ai))
                {
                    return;
                }
            }

            OutputQueue.Add(ai.Title);
        }
Пример #56
0
 public virtual bool Check(ArticleInfo article)
 {
     return(true);
 }
Пример #57
0
        private void Process()
        {
            string articleTitle = "";

            try
            {
                using (XmlTextReader reader = new XmlTextReader(stream))
                {
                    reader.WhitespaceHandling = WhitespaceHandling.None;

                    if (From.Length > 0)
                    {
                        //move to start from article
                        while (Run && reader.Read())
                        {
                            if (reader.NodeType != XmlNodeType.Element)
                            {
                                continue;
                            }

                            if (reader.Name != "title")
                            {
                                reader.ReadToFollowing("page");
                                continue;
                            }

                            //reader.ReadToFollowing("title");
                            articleTitle = reader.ReadString();

                            if (From == articleTitle)
                            {
                                break;
                            }
                        }
                    }

                    while (Run)
                    {
                        ArticleInfo ai = ReadArticle(reader);
                        if (ai == null)
                        {
                            break;
                        }
                        articleTitle = ai.Title;

                        // we must maintain a huge enough buffer to safeguard against fluctuations
                        // of page size
                        if (MultiThreaded && (PendingArticles.Count < ProcessorCount * 10))
                        {
                            PendingArticles.Add(ai);
                        }
                        else
                        {
                            ScanArticle(ai);
                        }
                    }

                    lock (ScanThread)
                    {
                        stream = null;
                    }

                    if (MultiThreaded)
                    {
                        while (PendingArticles.Count > 0)
                        {
                            Thread.Sleep(10);
                        }

                        Run = false;

                        foreach (Thread thr in SecondaryThreads)
                        {
                            thr.Join();
                        }
                    }
                }
            }
            catch (ThreadAbortException) { }
            catch (Exception ex)
            {
                if (Message)
                {
                    //System.Windows.Forms.MessageBox.Show("Problem on " + articleTitle + "\r\n\r\n" + ex.Message);
                    ErrorHandler.Handle(ex);
                }
            }
            finally
            {
                if (Message)
                {
                    Context.Post(SOPCstopped, articleTitle);
                }
            }
        }
Пример #58
0
        public override bool Check(ArticleInfo article)
        {
            P.FixPeopleCategories(article.Text, article.Title, false, out Skip);

            return(!Skip);
        }
Пример #59
0
 public override bool Check(ArticleInfo article)
 {
     return Parsers.MissingDefaultSort(article.Text, article.Title);
 }
Пример #60
0
        public override bool Check(ArticleInfo article)
        {
            string articleTextAfter = Parsers.ReorderReferences(article.Text);

            return !articleTextAfter.Equals(article.Text);
        }