72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
import os
|
|
import datetime
|
|
|
|
from selenium import webdriver
|
|
from PIL import Image
|
|
import shutil
|
|
from screenshotone import Client, TakeOptions
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
load_dotenv(Path('../.env'))
|
|
|
|
|
|
def screenshot_api(url, generated_image_filepath):
|
|
""" Use screenshotone API to take company webpage screenshots """
|
|
try:
|
|
# create API client
|
|
client = Client(os.getenv('SCREENSHOTONE_ACCESS_KEY'), os.getenv('SCREENSHOTONE_SECRET_KEY'))
|
|
|
|
# set up options
|
|
options = (TakeOptions.url(url)
|
|
.format("png")
|
|
.viewport_width(1024)
|
|
.viewport_height(768)
|
|
.block_cookie_banners(True)
|
|
.block_chats(True))
|
|
|
|
# generate the screenshot URL and share it with a user
|
|
#url = client.generate_take_url(options)
|
|
# or render a screenshot and download the image as stream
|
|
image = client.take(options)
|
|
|
|
# store the screenshot the example.png file
|
|
with open(generated_image_filepath, 'wb') as result_file:
|
|
shutil.copyfileobj(image, result_file)
|
|
|
|
# Display the screenshot using Image.show
|
|
image = Image.open(generated_image_filepath)
|
|
image.show()
|
|
|
|
except Exception as err:
|
|
print(f"Failed in screenshotone api: {err}")
|
|
generated_image_filepath = take_screenshot(url, generated_image_filepath)
|
|
|
|
return generated_image_filepath
|
|
|
|
def take_screenshot(url, generated_image_filepath):
|
|
# Create a webdriver instance
|
|
driver = webdriver.Chrome()
|
|
|
|
# Navigate to the given url
|
|
driver.get(url)
|
|
|
|
# Set a fixed window size (you can adjust this as needed)
|
|
driver.set_window_size(800, 600)
|
|
|
|
# Take a screenshot of the webpage
|
|
screenshot = driver.get_screenshot_as_png()
|
|
|
|
# Close the webdriver instance
|
|
driver.quit()
|
|
|
|
# Save the screenshot to a file
|
|
with open(generated_image_filepath, "wb") as f:
|
|
f.write(screenshot)
|
|
|
|
# Display the screenshot using Image.show
|
|
image = Image.open(generated_image_filepath)
|
|
image.show()
|
|
|
|
return generated_image_filepath
|