Skip to content

Commit

Permalink
Add: blacklist by regex
Browse files Browse the repository at this point in the history
  • Loading branch information
DUB1401 committed Oct 11, 2023
1 parent 30cc7fe commit d27bd79
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 46 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ ___
```JSON
"blacklist": []
```
Здесь можно перечислить запрещённые слова, при наличии которых пост будет игнорироваться. Настройка нечувствительна к регистру.
Здесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.
___
```JSON
"attachments": {
Expand Down Expand Up @@ -178,7 +178,7 @@ ___
```JSON
"blacklist": []
```
Здесь можно перечислить запрещённые слова, при наличии которых пост будет игнорироваться. Настройка нечувствительна к регистру.
Здесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.
___
```JSON
"attachments": {
Expand Down
19 changes: 9 additions & 10 deletions Source/Callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ def __SenderThread(self):

# Отправляет сообщение в группу Telegram через буфер ожидания.
def __SendMessage(self, PostObject: dict, Source: str, LaunchSenderThread: bool = True):
# Состояние: есть ли запрещённые слова в посте.
HasBlacklistWords = False
# Состояние: есть ли запрещённые конструкции в посте.
HasBlacklistRegex = False
# Конфигурация источника.
Config = self.__Configurations.getConfig(Source)
# Объект сообщения.
Expand All @@ -141,16 +141,15 @@ def __SendMessage(self, PostObject: dict, Source: str, LaunchSenderThread: bool
# Обработка текста поста пользовательским скриптом.
PostObject["text"] = MessageEditor(PostObject["text"] if PostObject["text"] != None else "", Source)

# Для каждого запрещённого слова проверить соответствие словам поста.
for ForbiddenWord in Config["blacklist"]:
for Word in PostObject["text"].split():

# Если пост содержит запрещённое слово, то игнорировать его.
if ForbiddenWord.lower() == Word.lower():
HasBlacklistWords = True
# Для каждого регулярного выражения запрещённой конструкции.
for ForbiddenRegex in Config["blacklist"]:

# Если в тексте сообщения найдено совпадение с запрещённой конструкцией, игнорировать его.
if re.search(ForbiddenRegex, PostObject["text"], re.IGNORECASE) != None:
HasBlacklistRegex = True

# Если сообщение не игнорируется.
if PostObject["text"] != None and PostObject["text"] != "" and HasBlacklistWords == False:
if PostObject["text"] != None and PostObject["text"] != "" and HasBlacklistRegex == False:

# Если включена очистка тегов, то удалить упоминания из них.
if Config["clean-tags"] == True:
Expand Down
14 changes: 10 additions & 4 deletions Source/Functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,21 @@ def GetAttachments(PostAttachements: dict, Source: str, SupportedTypes: list[str
# Получение URL вложения и названия файла (photo).
if Bufer["type"] == "photo":

# Для каждого размера изображения.
# Для каждого разрешения изображения.
for Size in Attachment[Type]["sizes"]:

# Если обнаружен максимальный размер фотографии.
# Если обнаружено максимальное разрешение фотографии.
if Size["type"] == "w":
# Записать URL фотографии.
Bufer["url"] = Size["url"]
# Запись названия файла изображения.
Bufer["filename"] = Bufer["url"].split('?')[0].split('/')[-1]

# Если не найдено максимальное разрешение.
if Bufer["url"] == None:
# Записать URL последнего в списке размера.
Bufer["url"] = Attachment[Type]["sizes"][-1]["url"]

# Запись названия файла изображения.
Bufer["filename"] = Bufer["url"].split('?')[0].split('/')[-1]

# Получение URL вложения и названия файла (video).
if Bufer["type"] == "video":
Expand Down
21 changes: 10 additions & 11 deletions Source/Open.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ def __SenderThread(self):

# Отправляет сообщение в группу Telegram через буфер ожидания.
def __SendMessage(self, PostObject: dict, Source: str, LaunchSenderThread: bool = True):
# Состояние: есть ли запрещённые слова в посте.
HasBlacklistWords = False
# Состояние: есть ли запрещённые конструкции в посте.
HasBlacklistRegex = False
# Конфигурация источника.
Config = self.__Configurations.getConfig(Source)
# Объект сообщения.
Expand All @@ -244,16 +244,15 @@ def __SendMessage(self, PostObject: dict, Source: str, LaunchSenderThread: bool
# Обработка текста поста пользовательским скриптом.
PostObject["text"] = MessageEditor(PostObject["text"] if PostObject["text"] != None else "", Source)

# Для каждого запрещённого слова проверить соответствие словам поста.
for ForbiddenWord in Config["blacklist"]:
for Word in PostObject["text"].split():

# Если пост содержит запрещённое слово, то игнорировать его.
if ForbiddenWord.lower() == Word.lower():
HasBlacklistWords = True
# Для каждого регулярного выражения запрещённой конструкции.
for ForbiddenRegex in Config["blacklist"]:

# Если в тексте сообщения найдено совпадение с запрещённой конструкцией, игнорировать его.
if re.search(ForbiddenRegex, PostObject["text"], re.IGNORECASE) != None:
HasBlacklistRegex = True

# Если сообщение не игнорируется.
if PostObject["text"] != None and PostObject["text"] != "" and HasBlacklistWords == False:
if PostObject["text"] != None and PostObject["text"] != "" and HasBlacklistRegex == False:

# Если включена очистка тегов, то удалить упоминания из них.
if Config["clean-tags"] == True:
Expand Down Expand Up @@ -337,7 +336,7 @@ def __UpdaterThread(self, ImmediatelyUpdate: bool = False):
# Переформатирование сообщения исключения.
ExceptionData = str(ExceptionData).split('\n')[0].rstrip(".:")
# Запись в лог ошибки: исключение во время проверки обновлений.
logging.error("[Open API] Exception while checking updates: \"" + ExceptionData + "\".")
logging.error("[Open API] Updater exception: \"" + ExceptionData + "\".")

# Записывает ID последнего отправленного поста.
def __WriteLastPostID(self, Source: str, ID: int):
Expand Down
21 changes: 2 additions & 19 deletions vtp.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,30 +43,13 @@
#==========================================================================================#

# Версия скрипта.
Version = "1.2.0"
Version = "1.3.0"
# Текст копирайта.
Copyright = "Copyright © DUB1401. 2022-2023."
# Обработчик запросов FastAPI.
App = FastAPI()
# Глобальные настройки.
Settings = {
"token": "",
"target-id": "",
"source": "vk-group-wall",
"clean-tags": True,
"parse-mode": None,
"disable-web-page-preview": True,
"blacklist": list(),
"attachments": {
"audio": True,
"doc": True,
"photo": True,
"video": True
},
"confirmation-code": "",
"logging": False,
"debug": False
}
Settings = None
# Запись в лог сообщения: версия скрипта.
logging.info("====== VK-Telegram Poster v" + Version + " ======")
# Запись в лог сообщения: используемая версия Python и платформа.
Expand Down

0 comments on commit d27bd79

Please sign in to comment.