@xtaff

Как реализовать автоматизированное скачивание присланных фотографий из группы WhatsApp с помощью Python?

66fea49892dba756220401.png
Существует группа в WhatsApp в которую присылают подписанные фотографии, к примеру это будут разные виды овощей.
66fea4fb2f664591800012.png
Подскажите как можно написать скрипт на Python, который будет скачивать данные фотографии с названием, которым подписали фотографию при отправке в группу WhatsApp, по указанному пути на компьютер. Буду рад если подскажите как написать скрипт чтобы данные сообщения с фотографиями переотправлялись в группу телеграмм.
p.s. у меня есть работающий скрипт, который скачивает фотографии только работает он через телеграмм с помощью библиотеки telebot (TelegramBotAPI). Есть ли подобные библиотеки для WhatsApp?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@JhonLee
Была как-то похожая задача для WhatsApp, нашёл тогда рабочее решение для Python: https://pypi.org/project/whatsapp-api-client-python/.

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

from datetime import datetime
from json import dumps
import requests
import os
from whatsapp_api_client_python import API

instance = API.GreenAPI(
    "instance_id", "api_token"
)

def main():
    instance.webhooks.startReceivingNotifications(handler)

def handler(type_webhook: str, body: dict) -> None:
    if type_webhook == "incomingMessageReceived":
        incoming_message_received(body)

def get_notification_time(timestamp: int) -> str:
    return str(datetime.fromtimestamp(timestamp))

def save_file(download_url: str, filename: str) -> None:
    response = requests.get(download_url)
    if response.status_code == 200:
        with open(filename, 'wb') as file:
            file.write(response.content)
        print(f"File saved as {filename}")
    else:
        print(f"Failed to download file: {response.status_code}")

def incoming_message_received(body: dict) -> None:
    timestamp = body["timestamp"]
    time = get_notification_time(timestamp)
    data = dumps(body, ensure_ascii=False, indent=4)

    # Full notification log
    print(f"New incoming message at {time} with data: {data}", end="\n\n")

    chat_id = body["senderData"]["chatId"]
    message_type = body["messageData"]["typeMessage"]
    acceptable_types = ("imageMessage", "videoMessage", "documentMessage", "audioMessage")

    # chat_id.endswith("@g.us"): all group chats
    # chat_id == "xxx@g.us"    : one group chat, you can get this id with GetContacts method
    if chat_id.endswith("@g.us") and message_type in acceptable_types:
        download_url = body["messageData"]["fileMessageData"]["downloadUrl"]
        filename = os.path.basename(body["messageData"]["fileMessageData"]["fileName"])
        save_file(download_url, filename)

if __name__ == '__main__':
    main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы