aboutsummaryrefslogtreecommitdiff
path: root/ignis/github.py
blob: a4cae4bf6d02271300112ad83b0f3239df28bc25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import requests
from dotenv import load_dotenv
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from io import BytesIO
from PIL import Image

load_dotenv()

def get_cover(url):
    image = requests.get(url).content
    chrome_options = ChromeOptions()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-gpu")

    firefox_options = FirefoxOptions()
    firefox_options.add_argument("--headless")

    driver = webdriver.Chrome(options=chrome_options) if os.getenv("ENVIRONMENT") == 'development' else webdriver.Firefox(options=firefox_options)

    driver.get(url)
    try:
        # take screenshot of page - 1280x640
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.TAG_NAME, 'svg'))
        )
        driver.set_window_size(1280, 640)
        image = driver.get_screenshot_as_png()
    finally:
        driver.quit()

    # resize image to 640x320
    image = Image.open(BytesIO(image))
    image = image.resize((640, 320))
    output = BytesIO()
    image.save(output, format='PNG')
    return output.getvalue()