Форум сайта python.su
0
Ребята, приветствую!
Подскажите пожалуйста, можно ли включить данный код в теллеграм бот?
Если да, не могли бы вы поделиться примером?
Который день ломаю голову
import asyncio
import pyppeteer
import time
async def main():
browser = await pyppeteer.launch()
page = await browser.newPage()
await page.goto('https://google.com')
await page.setViewport(dict(width=1860, height=1085))
time.sleep(1)
await page.screenshot(path=“/Users/MainUser/desktop/screenshot.png”, fullPage=False)
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
p.s. Код открывает сайт, делает скриншот, и сохраняет в виде png.
Офлайн
9
Как-нибудь так:
from aiogram import Bot, Dispatcher, executor, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher.filters.state import StatesGroup, State from aiogram.dispatcher import FSMContext from pyppeteer import launch from pyppeteer.errors import PyppeteerError, TimeoutError from tempfile import NamedTemporaryFile API_TOKEN = 'BOT TOKEN HERE' bot = Bot(token=API_TOKEN) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) class ScreenshotForm(StatesGroup): url = State() @dp.message_handler(commands=['screen']) async def send_site_screenshot(message: types.Message): await ScreenshotForm.url.set() await message.reply('Какой адрес у нужной страницы?') @dp.message_handler(state=ScreenshotForm.url) async def process_url(message: types.Message, state: FSMContext): await message.reply('Минутку...') browser = await launch() try: page = await browser.newPage() url = message.text # TODO Сделать проверку адреса await page.goto(url) await page.setViewport(viewport=dict(width=1860, height=1085)) with NamedTemporaryFile() as fp: await page.screenshot(path=fp.name, type='jpeg', quality=100, fullPage=False) await message.reply_photo(fp.file) except (PyppeteerError, TimeoutError) as e: await message.reply('Что-то внутри меня умерло :(\n' + str(e)) finally: await state.finish() await browser.close() if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
Офлайн
0
Спасибо!
Офлайн