@NikitaTim123

ТГ бот как лучше сделать отправку фото/файла?

Я хочу сделать ТГ бота для своей шараги, Роль бота будет отправлять расписания. Бота я уже сделал, только одно не могу понять. Можно ли как то сделать чтобы бот отправлял фото расписания, Ну тут тоже проблема на самом сайте расписания в Таблице а не фотки. Ссылка'https://time.spetpro.ru/s/OB-2101.htm', ТГ бот чтобы увидеть работу: @SPET1_BOT,
Сейчас бот может только отправлять ссылку, Я могу конечно скачать фото расписания и залить в бота, ну мне надо будет каждый раз менять фотку, так что это не подходит.
Бот написан на: Python
Библиотека: pyTelegramBotAPi
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
В интернете нашёл такое решение. Через selenium и браузер Chrome. Думаю, основываясь на этом, можно переделать под этот случай.
Я даже нашёл скрипт для автоматической установки драйвера
https://pypi.org/project/chromedriver-autoinstaller/
# pip install selenium

import os
from pathlib import Path
from platform import system
from urllib.parse import urlparse

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")

exec_path = os.path.join(os.getcwd(), 'driver', 'chromedriver.exe') if system() == "Windows" else \
    os.path.join(os.getcwd(), 'driver', 'chromedriver')

driver = webdriver.Chrome(options=options, service=Service(log_path=os.devnull, executable_path=exec_path))

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    'source': '''
        delete window.cdc_adoQpoasnfa76pfcZLmcfl_Array;
        delete window.cdc_adoQpoasnfa76pfcZLmcfl_Promise;
        delete window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol;
  '''
})


def screen_sait(url) -> None:
    path = str(urlparse(url).hostname).replace(Path(str(urlparse(url).hostname)).suffix, ".png")
    driver.get(url)
    s = lambda x: driver.execute_script('return document.body.parentNode.scroll' + x)
    driver.set_window_size(s('Width'), s('Height'))
    driver.find_element(By.TAG_NAME, 'body').screenshot(path)
    driver.close()
    driver.quit()


screen_sait('https://codeby.net/')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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