kopia lustrzana https://github.com/bellingcat/auto-archiver
Download correct gecko-driver for the platform + fix setting executable path when running in Docker
Fixes #232pull/233/head
rodzic
011ded2bde
commit
dea0a49600
16
Dockerfile
16
Dockerfile
|
@ -7,16 +7,26 @@ ENV RUNNING_IN_DOCKER=1 \
|
||||||
PYTHONFAULTHANDLER=1 \
|
PYTHONFAULTHANDLER=1 \
|
||||||
PATH="/root/.local/bin:$PATH"
|
PATH="/root/.local/bin:$PATH"
|
||||||
|
|
||||||
|
|
||||||
|
ARG TARGETARCH
|
||||||
|
|
||||||
# Installing system dependencies
|
# Installing system dependencies
|
||||||
RUN add-apt-repository ppa:mozillateam/ppa && \
|
RUN add-apt-repository ppa:mozillateam/ppa && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y --no-install-recommends gcc ffmpeg fonts-noto exiftool && \
|
apt-get install -y --no-install-recommends gcc ffmpeg fonts-noto exiftool && \
|
||||||
apt-get install -y --no-install-recommends firefox-esr && \
|
apt-get install -y --no-install-recommends firefox-esr && \
|
||||||
ln -s /usr/bin/firefox-esr /usr/bin/firefox && \
|
ln -s /usr/bin/firefox-esr /usr/bin/firefox
|
||||||
wget https://github.com/mozilla/geckodriver/releases/download/v0.35.0/geckodriver-v0.35.0-linux64.tar.gz && \
|
|
||||||
|
ARG GECKODRIVER_VERSION=0.35.0
|
||||||
|
|
||||||
|
RUN if [ $(uname -m) = "aarch64" ]; then \
|
||||||
|
GECKODRIVER_ARCH=linux-aarch64; \
|
||||||
|
else \
|
||||||
|
GECKODRIVER_ARCH=linux64; \
|
||||||
|
fi && \
|
||||||
|
wget https://github.com/mozilla/geckodriver/releases/download/v${GECKODRIVER_VERSION}/geckodriver-v${GECKODRIVER_VERSION}-${GECKODRIVER_ARCH}.tar.gz && \
|
||||||
tar -xvzf geckodriver* -C /usr/local/bin && \
|
tar -xvzf geckodriver* -C /usr/local/bin && \
|
||||||
chmod +x /usr/local/bin/geckodriver && \
|
chmod +x /usr/local/bin/geckodriver && \
|
||||||
rm geckodriver-v* && \
|
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|
|
@ -105,8 +105,8 @@ class BaseModule(ABC):
|
||||||
for key in self.authentication.keys():
|
for key in self.authentication.keys():
|
||||||
if key in site or site in key:
|
if key in site or site in key:
|
||||||
logger.debug(f"Could not find exact authentication information for site '{site}'. \
|
logger.debug(f"Could not find exact authentication information for site '{site}'. \
|
||||||
did find information for '{key}' which is close, is this what you meant? \
|
did find information for '{key}' which is close, is this what you meant? \
|
||||||
If so, edit your authentication settings to make sure it exactly matches.")
|
If so, edit your authentication settings to make sure it exactly matches.")
|
||||||
|
|
||||||
def get_ytdlp_cookiejar(args):
|
def get_ytdlp_cookiejar(args):
|
||||||
import yt_dlp
|
import yt_dlp
|
||||||
|
|
|
@ -1,18 +1,22 @@
|
||||||
""" This Webdriver class acts as a context manager for the selenium webdriver. """
|
""" This Webdriver class acts as a context manager for the selenium webdriver. """
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from selenium import webdriver
|
|
||||||
from selenium.common.exceptions import TimeoutException
|
|
||||||
from selenium.webdriver.common.proxy import Proxy, ProxyType
|
|
||||||
from selenium.webdriver.common.print_page_options import PrintOptions
|
|
||||||
|
|
||||||
from loguru import logger
|
import os
|
||||||
from selenium.webdriver.common.by import By
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
#import domain_for_url
|
#import domain_for_url
|
||||||
from urllib.parse import urlparse, urlunparse
|
from urllib.parse import urlparse, urlunparse
|
||||||
from http.cookiejar import MozillaCookieJar
|
from http.cookiejar import MozillaCookieJar
|
||||||
|
|
||||||
|
from selenium import webdriver
|
||||||
|
from selenium.common.exceptions import TimeoutException
|
||||||
|
from selenium.webdriver.common.proxy import Proxy, ProxyType
|
||||||
|
from selenium.webdriver.common.print_page_options import PrintOptions
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
|
|
||||||
class CookieSettingDriver(webdriver.Firefox):
|
class CookieSettingDriver(webdriver.Firefox):
|
||||||
|
|
||||||
facebook_accept_cookies: bool
|
facebook_accept_cookies: bool
|
||||||
|
@ -20,6 +24,10 @@ class CookieSettingDriver(webdriver.Firefox):
|
||||||
cookiejar: MozillaCookieJar
|
cookiejar: MozillaCookieJar
|
||||||
|
|
||||||
def __init__(self, cookies, cookiejar, facebook_accept_cookies, *args, **kwargs):
|
def __init__(self, cookies, cookiejar, facebook_accept_cookies, *args, **kwargs):
|
||||||
|
if os.environ.get('RUNNING_IN_DOCKER'):
|
||||||
|
# Selenium doesn't support linux-aarch64 driver, we need to set this manually
|
||||||
|
kwargs['service'] = webdriver.FirefoxService(executable_path='/usr/local/bin/geckodriver')
|
||||||
|
|
||||||
super(CookieSettingDriver, self).__init__(*args, **kwargs)
|
super(CookieSettingDriver, self).__init__(*args, **kwargs)
|
||||||
self.cookies = cookies
|
self.cookies = cookies
|
||||||
self.cookiejar = cookiejar
|
self.cookiejar = cookiejar
|
||||||
|
@ -90,7 +98,6 @@ class Webdriver:
|
||||||
setattr(self.print_options, k, v)
|
setattr(self.print_options, k, v)
|
||||||
|
|
||||||
def __enter__(self) -> webdriver:
|
def __enter__(self) -> webdriver:
|
||||||
|
|
||||||
options = webdriver.FirefoxOptions()
|
options = webdriver.FirefoxOptions()
|
||||||
options.add_argument("--headless")
|
options.add_argument("--headless")
|
||||||
options.add_argument(f'--proxy-server={self.http_proxy}')
|
options.add_argument(f'--proxy-server={self.http_proxy}')
|
||||||
|
|
Ładowanie…
Reference in New Issue