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