-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_chrome_files.py
141 lines (111 loc) · 4.05 KB
/
update_chrome_files.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import json
import sys
import os
from glob import glob
from distutils.version import StrictVersion
def env_error():
with open('errors.txt', 'w') as log:
log.write('''Local App Data Enviornment Variable Not Found. \n
Please place your chrome intsall directory in the config.txt file.''')
return
def stream_keys_error():
with open('errors.txt', 'w') as log:
log.write('Stream Keys install directory not found.\n Please make sure this is the directory for your current chrome installation')
return
def chrome_dir_error():
with open('errors.txt', 'w') as log:
log.write('Chrome directory not found.\n Please place your chrome directory in the config.txt file.')
return
def find_chrome_default():
try:
local_app_data = os.environ.get('LOCALAPPDATA')
except KeyError:
env_error()
return False
default_chrome = os.path.join(local_app_data,'Google','Chrome','User Data', 'Default')
if not os.path.exists(default_chrome):
chrome_dir_error()
return False
return default_chrome
def find_json_files(default_chrome):
if not os.path.exists(default_chrome):
chrome_dir_error()
return False
stream_keys_default = os.path.join(default_chrome,'Extensions','ekpipjofdicppbepocohdlgenahaneen')
if not os.path.exists(stream_keys_default):
stream_keys_error()
return False
versions = []
for version_directory in glob(os.path.join(stream_keys_default,'*','')):
version = os.path.basename(os.path.normpath(version_directory))
version = version[:version.find('_')]
versions.append(StrictVersion(version))
if not bool(versions):
stream_keys_error()
return False
stream_keys_manifest = os.path.join(stream_keys_default, str(max_version(versions)), 'manifest.json')
if not os.path.exists(stream_keys_manifest):
stream_keys_error()
return False
preferences = os.path.join(default_chrome, 'Preferences')
if not os.path.exists(preferences):
chrome_dir_error()
return False
return (stream_keys_default,preferences)
def chrome_dir_config():
if not os.path.exists('config'):
with open('config.txt' ,'w') as config:
config.write('Chrome=\n')
config.write('Plexamp=\n')
with open('config.txt', 'r') as config:
paths = config.readlines()
plexamp_dir = ''
chrome_dir = ''
for path in paths:
if 'Plexamp' in path:
plexamp_dir = path[path.find('=')+1:].strip()
if 'Chrome' in path:
chrome_dir = path[path.find('=')+1:].strip()
with open('config.txt', 'w') as config:
config.write('Chrome=%s\n'%chrome_dir)
config.write('Plexamp=%s\n'%plexamp_dir)
return chrome_dir
def max_version(versions):
for i,version in enumerate(versions):
if i == 0:
max_vers = version
if version > max_vers:
max_vers = version
return max_vers
def main():
chrome_dir = chrome_dir_config()
print (chrome_dir)
if not bool(chrome_dir):
chrome_dir = find_chrome_default()
print (chrome_dir)
if not bool(chrome_dir):
return
paths = find_json_files(chrome_dir)
if not bool(paths):
return
streamkeys_manifest, preferences = paths
if sys.argv[1] == 'start':
val = False
if sys.argv[1] == 'close':
val = True
with open(streamkeys_manifest, 'r+') as sk:
data = json.load(sk)
for _,item in data['commands'].items():
item['global'] = val
sk.seek(0)
json.dump(data, sk, indent=4)
sk.truncate()
with open(preferences, 'r+') as pref:
data = json.load(pref)
for _, item in data['extensions']['commands'].items():
item['global'] = val
pref.seek(0)
json.dump(data, pref)
pref.truncate()
if __name__ == '__main__':
main()