From 93aa0791922e4714e1f4c7343551089ebcc6738e Mon Sep 17 00:00:00 2001 From: DUB1401 Date: Tue, 25 Jul 2023 13:30:23 +0300 Subject: [PATCH] Add: doc attachments support --- README.md | 14 +++++++++----- Settings.json | 1 + Source/Callback.py | 26 +++++++++++++++++++++----- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 732ced4..451100c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Для отправки сообщений используется буфер ожидания, что позволяет автопостеру корректно работать с включённым медленным режимом группы (чтобы игнорировать медленный режим или отправлять сообщения в канал, бот должен иметь права администратора). -Автопостер поддерживает пересылку следующих типов вложений: _photo_, _video_. Подробнее [здесь](https://dev.vk.com/reference/objects/attachments-wall). +Автопостер поддерживает пересылку следующих типов вложений: _doc_, _photo_, _video_. Подробнее [здесь](https://dev.vk.com/reference/objects/attachments-wall). ## Порядок установки и использования 1. Загрузить последний релиз. Распаковать. @@ -28,7 +28,7 @@ pip install -r requirements.txt ```JSON "token": "" ``` -Сюда необходимо занести токен бота Telegram (можно узнать у [@BotFather](https://t.me/BotFather)). +Сюда необходимо занести токен бота Telegram (можно узнать у [BotFather](https://t.me/BotFather)). ___ ```JSON "target-id": "" @@ -64,9 +64,10 @@ ___ ___ ```JSON "attachments": { - "photo": true, - "video": true - } + "doc": true, + "photo": true, + "video": true +} ``` В данной секции можно указать, какие типы вложений требуется пересылать в Telegram. @@ -88,4 +89,7 @@ ___ ``` Включает отладочный режим логгирования. +# Благодарность +* [@yt-dlp](https://github.com/yt-dlp) – библиотека загрузки видео из ВКонтакте. + _Copyright © DUB1401. 2022-2023._ diff --git a/Settings.json b/Settings.json index 3451728..9efad93 100644 --- a/Settings.json +++ b/Settings.json @@ -7,6 +7,7 @@ "disable-web-page-preview": true, "blacklist": [], "attachments": { + "doc": true, "photo": true, "video": true }, diff --git a/Source/Callback.py b/Source/Callback.py index def3521..8bc6591 100644 --- a/Source/Callback.py +++ b/Source/Callback.py @@ -1,4 +1,4 @@ -from telebot.types import InputMediaPhoto, InputMediaVideo +from telebot.types import InputMediaDocument, InputMediaPhoto, InputMediaVideo from MessageEditor import MessageEditor from threading import Thread from time import sleep @@ -83,6 +83,11 @@ def __GetAttachements(self, PostAttachements: dict) -> list: "url": None, "filename": None } + + # Получение URL вложения и названия файла (doc). + if Bufer["type"] == "doc": + Bufer["url"] = Attachment[Type]["url"] + Bufer["filename"] = Attachment[Type]["url"].split('?')[0].split('/')[-1] + "." + Attachment[Type]["ext"] # Получение URL вложения и названия файла (photo). if Bufer["type"] == "photo": @@ -98,9 +103,9 @@ def __GetAttachements(self, PostAttachements: dict) -> list: if os.path.exists("Temp/" + Bufer["filename"]) == False: # Запись в лог отладочной информации: URL загружаемого вложения. logging.debug("Downloading attachment (\"" + Type + "\"): " + Bufer["url"]) - - # Загрузка вложения (photo). - if Bufer["type"] == "photo": + + # Загрузка вложения (doc, photo). + if Bufer["type"] in ["doc", "photo"]: # Запрос вложения. Response = requests.get(Bufer["url"]) @@ -108,7 +113,7 @@ def __GetAttachements(self, PostAttachements: dict) -> list: if Response.status_code == 200: # Запись описания вложения в список вложений. Attachements.append(Bufer) - + # Сохранить вложение в файл. with open("Temp/" + Bufer["filename"], "wb") as FileWriter: FileWriter.write(Response.content) @@ -152,6 +157,17 @@ def __SenderThread(self): # Для каждого вложения. for Index in range(0, len(self.__MessagesBufer[0]["attachments"])): + # Если тип вложения – doc. + if self.__MessagesBufer[0]["attachments"][Index]["type"] == "doc": + # Дополнить медиа группу вложением (doc). + MediaGroup.append( + InputMediaDocument( + open("Temp/" + self.__MessagesBufer[0]["attachments"][Index]["filename"], "rb"), + caption = self.__MessagesBufer[0]["text"] if Index == 0 else "", + parse_mode = self.__Settings["parse-mode"] if Index == 0 else None + ) + ) + # Если тип вложения – photo. if self.__MessagesBufer[0]["attachments"][Index]["type"] == "photo": # Дополнить медиа группу вложением (photo).