Files
Scrapling/scrapling/cli.py
T
2025-04-13 17:32:00 +02:00

59 lines
1.4 KiB
Python

import os
import subprocess
import sys
from pathlib import Path
import click
def get_package_dir():
return Path(os.path.dirname(__file__))
def run_command(command, line):
print(f"Installing {line}...")
_ = subprocess.check_call(" ".join(command), shell=True)
# I meant to not use try except here
@click.command(help="Install all Scrapling's Fetchers dependencies")
@click.option(
"-f",
"--force",
"force",
is_flag=True,
default=False,
type=bool,
help="Force Scrapling to reinstall all Fetchers dependencies",
)
def install(force):
if (
force
or not get_package_dir().joinpath(".scrapling_dependencies_installed").exists()
):
run_command(
[sys.executable, "-m", "playwright", "install", "chromium"],
"Playwright browsers",
)
run_command(
[sys.executable, "-m", "playwright", "install-deps", "chromium", "firefox"],
"Playwright dependencies",
)
run_command(
[sys.executable, "-m", "camoufox", "fetch", "--browserforge"],
"Camoufox browser and databases",
)
# if no errors raised by above commands, then we add below file
get_package_dir().joinpath(".scrapling_dependencies_installed").touch()
else:
print("The dependencies are already installed")
@click.group()
def main():
pass
# Adding commands
main.add_command(install)