В первом посте я хочу рассказать о своём «проекте». VeriComm — программа модератор. Идея создания такого приложения возникла у меня в апреле этого года. Серфил по просторам сообществ «ВКонтакте». В одном из N сообществ происходили перепалки двух сторон. И бедный модератор пытался уследить за всем. Почему бы не взять и не написать свою программу для модерации?
Я познакомился с такими словами как API, «Standalone-приложение», посмотрел примеры библиотеки для .Net C#. Google мне быстро выдал github.com/vknet/vk — у неё была документация, что меня очень порадовало.
Для начала я ознакомился с методами:
Затем необходимо было придумать логику удаления. Так как мы люди умные и хитрые, найдём же способ «кхм-кхм». Необходимо было написать не просто базу, содержащую элементы матов, но и сделать её «универсальной». Для этого я просто обрезал «нецензурные» слова до корня, чтобы при склонении их можно было отследить. А также создал их транслит-аналоги — vot tak. Но, опять же, вдруг там вставят пробел или любой другой символ типа !@#$%^&*()…
Первое
Если вставили пробел.
Второе
Если один текст имеет разный регистр.
Наконец-то мы получили нашу «заготовку» — чистая строка. Проверяем каждый текст сообщения:
Циклом задаем параметр, какую подстроку мы должны найти. Идём дальше!
Если нам нужно запретить ссылки от «грязной» рекламы, люди или боты, которые пишут ссылки на свои группы. Тут два пути: либо мы делаем всё так же и не беспокоимся, либо нам уже необходимо проверять по сайту, например: ()com.
Некоторые группы имеют свойство запрещать ссылки на другие группы или сайты. Так же можно определить сайты с тем или иным доменом. Тот же самый цикл, только сопоставление «имитатора» точки и домен @ com (.)ru и так далее.
В создании этой программы вроде бы ничего сложного нету. Используются обычные стандартные методы класса String и одна SDK. Как же сейчас работает проверка на не цензурные выражения?
Общим словом — никак. Как я думаю, она разделяет сообщение по словам — по пробелам. Только затем она проверяет:
Никаких Contains. Проверка «ВКонтакте» работает, если слово написано правильно, без пробелов между буквами, без транслита. И конечно нечего тут говорить о проверке нежелательных ссылок в группе. А база со словами была очень мала: примерно 70% слов он пропускал, пришлось добавлять их вручную.
Мне кажется, это можно было бы сделать куда лучше.
Итог
Проект был придуман и разработан исключительно для саморазвития и моего интереса «смогу ли я». Я узнал, что такое API, «Standalone-приложение». И победил в конкурсе проектов IT-START, в городе Улан-Удэ.
Я познакомился с такими словами как API, «Standalone-приложение», посмотрел примеры библиотеки для .Net C#. Google мне быстро выдал github.com/vknet/vk — у неё была документация, что меня очень порадовало.
Для начала я ознакомился с методами:
- Авторизация
- Получение списка групп где я имею права – модератора
- Получение постов / комментариев на стене / фотографиях / обсуждениях
Затем необходимо было придумать логику удаления. Так как мы люди умные и хитрые, найдём же способ «кхм-кхм». Необходимо было написать не просто базу, содержащую элементы матов, но и сделать её «универсальной». Для этого я просто обрезал «нецензурные» слова до корня, чтобы при склонении их можно было отследить. А также создал их транслит-аналоги — vot tak. Но, опять же, вдруг там вставят пробел или любой другой символ типа !@#$%^&*()…
Первое
Если вставили пробел.
text.Trim(new char[] {' ', '!', '@', '#', '$', '%', '^', '&v*', '(', ')' })
Второе
Если один текст имеет разный регистр.
text.ToLower();
Наконец-то мы получили нашу «заготовку» — чистая строка. Проверяем каждый текст сообщения:
text.Contains();
Циклом задаем параметр, какую подстроку мы должны найти. Идём дальше!
Если нам нужно запретить ссылки от «грязной» рекламы, люди или боты, которые пишут ссылки на свои группы. Тут два пути: либо мы делаем всё так же и не беспокоимся, либо нам уже необходимо проверять по сайту, например: ()com.
Некоторые группы имеют свойство запрещать ссылки на другие группы или сайты. Так же можно определить сайты с тем или иным доменом. Тот же самый цикл, только сопоставление «имитатора» точки и домен @ com (.)ru и так далее.
В создании этой программы вроде бы ничего сложного нету. Используются обычные стандартные методы класса String и одна SDK. Как же сейчас работает проверка на не цензурные выражения?
Общим словом — никак. Как я думаю, она разделяет сообщение по словам — по пробелам. Только затем она проверяет:
If (mywords == Badword)
Никаких Contains. Проверка «ВКонтакте» работает, если слово написано правильно, без пробелов между буквами, без транслита. И конечно нечего тут говорить о проверке нежелательных ссылок в группе. А база со словами была очень мала: примерно 70% слов он пропускал, пришлось добавлять их вручную.
Мне кажется, это можно было бы сделать куда лучше.
Итог
Проект был придуман и разработан исключительно для саморазвития и моего интереса «смогу ли я». Я узнал, что такое API, «Standalone-приложение». И победил в конкурсе проектов IT-START, в городе Улан-Удэ.