widevine-cdm: refactor

fmbearmf ecec1b74 88a118c3

+17 -40
+4 -36
pkgs/by-name/wi/widevine-cdm/update-x86_64.py
··· 2 #! nix-shell -i python3 -p python3 3 4 from __future__ import annotations 5 - import sys, os, json, base64, re, subprocess, shutil, argparse, urllib.request, time 6 from typing import Dict, Optional, Tuple 7 from pathlib import Path 8 ··· 66 67 sri = hex_to_sri(hv) 68 version = extract_ver_from_url(url) 69 - return {"platform_key": pkey, "url": url, "hashValue": hv, "sri": sri, "version": version} 70 - 71 - def subst_version(file: str, new_version: str) -> str: 72 - return re.sub( 73 - r'(?m)^(?P<ind>\s*)version\s*=\s*(?P<q>["\'])(?P<v>[^"\']*)(?P=q)\s*;', 74 - lambda m: f'{m.group("ind")}version = {m.group("q")}{new_version}{m.group("q")};', 75 - file, 76 - count=1 77 - ) 78 - 79 - def subst_src_url(file: str, new_url: str) -> str: 80 - return re.sub( 81 - r'(?m)^(?P<ind>\s*)url\s*=\s*(?P<q>["\'])(?P<v>[^"\']*)(?P=q)\s*;', 82 - lambda m: f'{m.group("ind")}url = {m.group("q")}{new_url}{m.group("q")};', 83 - file, 84 - count=1 85 - ) 86 - 87 - def subst_src_hash(file: str, new_hash: str) -> str: 88 - return re.sub( 89 - r'(?m)^(?P<ind>\s*)hash\s*=\s*(?P<q>["\'])(?P<v>[^"\']*)(?P=q)\s*;', 90 - lambda m: f'{m.group("ind")}hash = {m.group("q")}{new_hash}{m.group("q")};', 91 - file, 92 - count=1 93 - ) 94 95 def main(): 96 WIDEVINE_DIR = Path(__file__).resolve().parent 97 - DEFAULT_FILE = WIDEVINE_DIR / "x86_64-linux.nix" 98 99 ap = argparse.ArgumentParser() 100 ap.add_argument("file", type=Path, nargs="?", default=DEFAULT_FILE) ··· 124 125 linux_x64 = results["linux_x86_64"] 126 127 - txt = args.file.read_text(encoding="utf-8") 128 - 129 - txt = subst_version(txt, linux_x64["version"]) 130 - 131 - txt = subst_src_url(txt, linux_x64["url"]) 132 - 133 - txt = subst_src_hash(txt, linux_x64["sri"]) 134 - 135 - args.file.write_text(txt, encoding="utf-8") 136 print("# updated", file=sys.stderr) 137 138 if __name__ == "__main__":
··· 2 #! nix-shell -i python3 -p python3 3 4 from __future__ import annotations 5 + import sys, os, json, base64, re, argparse, urllib.request, time 6 from typing import Dict, Optional, Tuple 7 from pathlib import Path 8 ··· 66 67 sri = hex_to_sri(hv) 68 version = extract_ver_from_url(url) 69 + return {"platform_key": pkey, "url": url, "sri": sri, "version": version} 70 71 def main(): 72 WIDEVINE_DIR = Path(__file__).resolve().parent 73 + DEFAULT_FILE = WIDEVINE_DIR / "x86_64-manifest.json" 74 75 ap = argparse.ArgumentParser() 76 ap.add_argument("file", type=Path, nargs="?", default=DEFAULT_FILE) ··· 100 101 linux_x64 = results["linux_x86_64"] 102 103 + args.file.write_text(json.dumps(linux_x64, indent=2) + "\n", encoding="utf-8") 104 print("# updated", file=sys.stderr) 105 106 if __name__ == "__main__":
+7 -4
pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix
··· 5 go-crx3, 6 }: 7 8 stdenv.mkDerivation (finalAttrs: { 9 - # version, src.url, and src.hash generated by update-x86_64.py 10 pname = "widevine-cdm"; 11 - version = "4.10.2891.0"; 12 13 src = fetchurl { 14 - url = "https://edgedl.me.gvt1.com/edgedl/release2/chrome_component/aclxnidwwkj5di3vduduj2gqpgpq_4.10.2891.0/oimompecagnajdejgnnjijobebaeigek_4.10.2891.0_linux_b4hin3q5s66ws2322cyyfp35lu.crx3"; 15 - hash = "sha512-8S/4FRQQmQAO9wJ7QGJg8KUVxUQgm5/oEl6l9N2/WGAdMCIqxBoBPrCkPadrpwQUpK0WYX2fIZ8Zzfx3lNm8lA=="; 16 }; 17 18 nativeBuildInputs = [ go-crx3 ];
··· 5 go-crx3, 6 }: 7 8 + let 9 + manifest = builtins.fromJSON (builtins.readFile ./x86_64-manifest.json); 10 + in 11 + 12 stdenv.mkDerivation (finalAttrs: { 13 pname = "widevine-cdm"; 14 + version = manifest.version; 15 16 src = fetchurl { 17 + url = manifest.url; 18 + hash = manifest.sri; 19 }; 20 21 nativeBuildInputs = [ go-crx3 ];
+6
pkgs/by-name/wi/widevine-cdm/x86_64-manifest.json
···
··· 1 + { 2 + "platform_key": "Linux_x86_64-gcc3", 3 + "url": "https://edgedl.me.gvt1.com/edgedl/release2/chrome_component/aclxnidwwkj5di3vduduj2gqpgpq_4.10.2891.0/oimompecagnajdejgnnjijobebaeigek_4.10.2891.0_linux_b4hin3q5s66ws2322cyyfp35lu.crx3", 4 + "sri": "sha512-8S/4FRQQmQAO9wJ7QGJg8KUVxUQgm5/oEl6l9N2/WGAdMCIqxBoBPrCkPadrpwQUpK0WYX2fIZ8Zzfx3lNm8lA==", 5 + "version": "4.10.2891.0" 6 + }