Как извлечь аудио с WhatsApp Web с использованием парсера?

  • 4 сентября 2023 г. 10:07
Ответы на вопрос 2
1. Установите необходимые библиотеки:
```
pip install selenium
```

2. Зарегистрируйтесь на сайте https://my.telegram.org/auth и создайте свое приложение для получения API_ID и API_HASH.

3. Установите библиотеку telethon:
```
pip install telethon
```

4. Создайте скрипт для извлечения аудио-сообщений с WhatsApp Web:

```python
from telethon import TelegramClient
from telethon.tl.types import DocumentAttributeAudio
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary


# Ваши данные для авторизации Telegram API
API_ID = 'YOUR_API_ID'
API_HASH = 'YOUR_API_HASH'


def extract_audio_from_whatsapp(url, phone_number, password):
    # Настройка WebDriver Firefox
    binary = FirefoxBinary('/usr/bin/firefox')
    options = webdriver.FirefoxOptions()
    options.add_argument('--headless')  # запуск браузера в фоновом режиме
    driver = webdriver.Firefox(firefox_binary=binary, options=options)
    driver.get(url)

    # Авторизация в WhatsApp Web
    driver.find_element_by_tag_name('input').send_keys(phone_number)
    driver.find_element_by_xpath('//div[text()="Далее"]').click()
    driver.find_element_by_tag_name('input').send_keys(password)
    driver.find_element_by_xpath('//div[text()="Войти"]').click()

    # Ожидание загрузки страницы
    driver.implicitly_wait(10)

    # Извлечение аудио-сообщений
    audio_messages = driver.find_elements_by_class_name('message-in')  # получение всех входящих сообщений
    for message in audio_messages:
        try:
            audio_element = message.find_element_by_tag_name('audio')  # поиск элемента аудио
            audio_url = audio_element.get_attribute('src')  # получение URL аудио-файла
            driver.get(audio_url)  # загрузка аудио-файла
            driver.save_screenshot('audio.png')  # сохранение скриншота страницы (опционально)
        except Exception as e:
            print('Ошибка при извлечении аудио:', str(e))

    driver.quit()  # закрытие браузера


if __name__ == '__main__':
    phone_number = 'YOUR_PHONE_NUMBER'
    password = 'YOUR_PASSWORD'
    url = 'https://web.whatsapp.com'

    # Извлечение аудио-сообщений с WhatsApp Web
    extract_audio_from_whatsapp(url, phone_number, password)

    # Загрузка аудио-сообщений в Telegram
    with TelegramClient('session', API_ID, API_HASH) as client:
        client.send_file('telegram_channel', 'audio.png')
```
В коде используется Selenium для авторизации в WhatsApp Web и извлечения аудио-сообщений с помощью веб-скрейпинга. Вы также можете сохранить скриншоты страницы для отладки (строка 36). Файлы с аудио-сообщениями сохраняются в текущую директорию с именем 'audio.png'.

5. Запустите скрипт и введите свой номер телефона и пароль для авторизации в WhatsApp Web. Это делается только для одноразовой авторизации и не требуется для каждого запуска скрипта.

6. Скрипт также загрузит скриншоты ваших аудио-сообщений в указанный Telegram канал. Замените 'telegram_channel' на имя вашего канала в коде.

Обратите внимание, что использование парсера для извлечения данных с WhatsApp Web может нарушать правила использования WhatsApp и может быть незаконным или нарушать политику конфиденциальности.
Blob не нужно скачивать. Он уже находится в памяти. Просто прочитай его с помощью fetch. Важно запускать fetch в контексте страницы, а не пытаться загрузить его через бэкенд, как, возможно, ты сейчас делаешь. Не нужно использовать прокси.
Похожие вопросы