-
Notifications
You must be signed in to change notification settings - Fork 0
/
__init__.py
58 lines (48 loc) · 1.71 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import re
from normalize_lists import normalize_lists
import pandas as pd
def decoder(x):
try:
return x.decode("utf-8", "ignore")
except Exception:
return ""
def get_bst_config_df(conffile=r"C:\ProgramData\BlueStacks_nxt\bluestacks.conf"):
updatedlines = []
with open(conffile, mode="rb") as f:
data = f.read()
updatedlines.extend(
[
list(
(
y.split(b"=", maxsplit=1)[-1],
*y.split(b"=", maxsplit=1)[0].split(b"."),
)
)
for y in data.splitlines()
]
)
normli = normalize_lists(*updatedlines, fill_value=None)
df = pd.DataFrame([[decoder(d) for d in o] for o in normli])
df = df.rename(columns={0: len(df.columns)})
df = df.filter((sorted(df.columns))).fillna("")
df.columns = [f"aa_key_{x}" for x in df.columns[:-1]] + ["aa_values"]
df["aa_values_stripped"] = df.aa_values.str.strip().str.strip('"')
return df
def write_df_to_bstcfg(df, conffile, value_column="aa_values"):
allkeys = [
re.sub(r"\.+", ".", ".".join(list(i))).strip(".").strip().strip(".")
for i in zip(
*[
df[q].__array__().tolist()
for q in df[[x for x in df.columns if "key" in x]]
]
)
]
if value_column == "aa_values":
allvalues = [f"={x}" for x in df[value_column].__array__().tolist()]
else:
allvalues = [f'="{x}"' for x in df[value_column].__array__().tolist()]
newcfg = "\n".join(["".join(list(r)) for r in (zip(allkeys, allvalues))]).strip()
with open(conffile, mode="w", encoding="utf-8", newline="\n") as f:
f.write(newcfg)
return newcfg