From e364bd36577ff697078b1bd8d3cb3a57d3bda103 Mon Sep 17 00:00:00 2001 From: Artemis Tosini Date: Wed, 27 Mar 2024 01:24:24 +0000 Subject: [PATCH] do some terrible things to selenium so devtools might work --- flake.nix | 47 +++++++++++++++++++++++++----- scripts/emoji/.envrc | 1 + scripts/emoji/.gitignore | 1 + scripts/emoji/get_discord_emoji.py | 3 +- scripts/emoji/scrape_guilds.py | 18 ++++++++++++ 5 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 scripts/emoji/.envrc create mode 100644 scripts/emoji/.gitignore create mode 100755 scripts/emoji/scrape_guilds.py diff --git a/flake.nix b/flake.nix index c450873..36abdb4 100644 --- a/flake.nix +++ b/flake.nix @@ -78,18 +78,49 @@ rust-form svd2rust svdtools - + ]; RUST_SRC_PATH = "${rust}/lib/rustlib/src/rust/library"; }; - devShells.avr = with pkgs; pkgsCross.avr.mkShell { - packages = [ - avrdude - gnumake - ]; + devShells.avr = with pkgs; + pkgsCross.avr.mkShell { + packages = [ avrdude gnumake ]; - LIBC = pkgsCross.avr.avrlibc; - }; + LIBC = pkgsCross.avr.avrlibc; + }; + devShells.emoji = with pkgs; + mkShell { + packages = [ + chromedriver + chromium + python3 + python3Packages.black + python3Packages.ipython + (python3Packages.selenium.overrideAttrs (old: { + postInstall = old.postInstall + '' + for ver in v85 v120 v121 v122; do + DEVTOOLS=../common/devtools/chromium/$ver + for proto in js browser; do + python3 ../common/devtools/convert_protocol_to_json.py \ + $DEVTOOLS/"$proto"_protocol.pdl \ + --map_binary_to_string=true \ + $DEVTOOLS/"$proto"_protocol.json + done + mkdir -p $DST_PREFIX/common/devtools/$ver + python3 generate.py \ + $DEVTOOLS/browser_protocol.json \ + $DEVTOOLS/js_protocol.json \ + $DST_PREFIX/common/devtools/$ver + done + ''; + + nativeBuildInputs = old.nativeBuildInputs + ++ [ python3Packages.inflection ]; + })) + ]; + + CHROME = "${chromium}/bin/chromium"; + }; devShells.typst = with pkgs; mkShell { packages = [ typst ]; }; formatter = pkgs.nixfmt; }); diff --git a/scripts/emoji/.envrc b/scripts/emoji/.envrc new file mode 100644 index 0000000..2842ef0 --- /dev/null +++ b/scripts/emoji/.envrc @@ -0,0 +1 @@ +use flake ../..#emoji diff --git a/scripts/emoji/.gitignore b/scripts/emoji/.gitignore new file mode 100644 index 0000000..1fcb152 --- /dev/null +++ b/scripts/emoji/.gitignore @@ -0,0 +1 @@ +out diff --git a/scripts/emoji/get_discord_emoji.py b/scripts/emoji/get_discord_emoji.py index e8ad9cd..dcf3bc6 100755 --- a/scripts/emoji/get_discord_emoji.py +++ b/scripts/emoji/get_discord_emoji.py @@ -1,5 +1,4 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i python3 -p python3 +#!/usr/bin/env python3 import json import zlib import sys diff --git a/scripts/emoji/scrape_guilds.py b/scripts/emoji/scrape_guilds.py new file mode 100755 index 0000000..f80f308 --- /dev/null +++ b/scripts/emoji/scrape_guilds.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +import os.path +import os +from selenium import webdriver + +options = webdriver.ChromeOptions() +if location := os.getenv("CHROME"): + options.binary_location = location +options.add_argument("--start-maximized") +options.add_argument( + "--user-data-dir=" + os.path.expanduser("~/.cache/chromium-emoji-script") +) +options.add_experimental_option("detach", True) +driver = webdriver.Chrome(options=options) + +# Selenium says this API is deprecated but there's no better working option in Python +# (okay, maybe there is but they don't really have docs) +