Как я могу отслеживать сообщения на форуме, чтобы проверять только новые сообщения, а не проверять каждый раз весь список? - PullRequest
0 голосов
/ 12 февраля 2010

Im разработки программного обеспечения, которое отслеживает сообщения на форумах и предупреждают администратор / Супермодераторы, когда ключевые слова подбирается в названии поста (бранные слова, порно и т.д.).

Я установил таймер, каждые 30 секунд он будет следить за занятостью форума. Моя проблема в том, как сохранить «последнее проверенное сообщение», чтобы при следующем запуске оно не проходило по всему форуму.

Не знаю, как это сделать. Я пробовал несколько вещей, которые, кажется, не работают. Я становлюсь действительно раздраженным на себя больше, чем на что-либо, поскольку я прошел университет (разработка программного обеспечения) и не смог решить простую проблему.

Любой совет приветствуется.

Редактировать: парсинг HTML как владелец форума не хочет, чтобы приложение подключалось к базе данных.

Ответы [ 8 ]

2 голосов
/ 12 февраля 2010

Почему бы вам не внедрить ненормативную лексику? Теперь, прежде чем я проголосую за это, я полностью против них и считаю, что это ужасно глупая идея, но я знаю, что многие клиенты требуют их в целях законности.

Но вместо того, чтобы проверять форум по факту, почему бы вам не проверить нецензурные слова перед отправкой сообщения?

1 голос
/ 12 февраля 2010

Вам нужно сохранить идентификатор последнего поста, который вы проверили, затем при каждом запуске проверять только посты с идентификатором выше, чем сохраненный идентификатор. Вы можете сохранить этот идентификатор в текстовом файле или в таблице базы данных.

Вот краткий обзор о том, как читать и записывать файлы, которые могут помочь вам начать работу.

1 голос
/ 12 февраля 2010

Какой у вас доступ к таким вещам, как посты? Если вы можете выполнить простой запрос, такой как «SELECT * FROM [ForumPosts] Где PostTimeStamp> @lastChecked», с какой проблемой вы столкнетесь?

0 голосов
/ 12 февраля 2010

Метод 1: если у вас есть доступ к записям (сообщениям) в базе данных, используйте эти

Method2" Если вы используете контент, такой как RSS-лента, вам придется хранить записи с последней проверки и сравнивать их с новыми записями, если они были просмотрены.

что-то подобное:

    public class PostCompareManager
        {
            public void ComparePosts()
            {
                // may use url(string) of the post as ID or replace 
                // it with something unique, representing each post
                Dictionary<string, Post> revPost = new Dictionary<string,Post>(); // replace with you HTTP get logic
                Dictionary<string, Post> newPost = new Dictionary<string, Post>(); // replace with you HTTP get logic
                // compare keys in Dictionaries
                var oldKeys = revPost.Keys;
                foreach (var k in newPost.Keys)
                { oldKeys.Contains(k); }  //do something
            }
        }
        class Post
        { string title; string description; string url;  }

Надеюсь, это поможет

0 голосов
/ 12 февраля 2010

У каждого форума есть идентификатор? Если это так, вы можете отслеживать идентификаторы, которые вы уже проверили (или, если идентификаторы являются инкрементными, то проверять только идентификаторы> последний проверенный идентификатор).

0 голосов
/ 12 февраля 2010

Я не уверен, как вы реализовали свое решение, но если в сообщениях был номер, например, вы могли бы сохранить последнее число в переменной и затем проверить значение переменной при повторной проверке.

Это предполагает, что у вас есть ваши номера в порядке.

0 голосов
/ 12 февраля 2010

Не плохо себя чувствую. Большинство университетов, по крайней мере, в США, не знают, как научить своих студентов современным навыкам разработки программного обеспечения.

Что если вы сохранили последний пост, отмеченный в таблице в вашей базе данных, а затем, когда пришло время сканировать форум, прочитайте номер последнего поста (или что вы там храните) и перейдите оттуда , Затем, когда закончите, обновите эту таблицу, указав номер последнего сообщения.

0 голосов
/ 12 февраля 2010

Звучит так, будто вы делаете это, анализируя HTML, верно?

Если у вас есть доступ к хранилищу внутренних данных форума, это будет намного проще. Например, если у них есть таблица Posts, вы просто сохраняете последний проверенный вами идентификатор. Если вам придется работать с HTML-результатом, это будет намного сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...