/
update_prefs.py
117 lines (87 loc) · 3.55 KB
/
update_prefs.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
#!/usr/bin/python
# Simple script to gather used preferences from the code and make sure they are present in preferences.json, and/or filter for defaults.json
import re, glob, os, sys
import preferences
print "Loading preferences"
preferences.load("preferences.json")
prefre = re.compile('(?:pref|prefDir)\("([^"]*)", *"([^"]*)"')
found = {}
for f in glob.glob("*.py"):
lines = open(f,"r").readlines()
for l in lines:
for m in prefre.findall(l):
if m[0] != '':
mod = m[0]
val = m[1]
else:
mod = m[2]
val = m[3]
if not found.has_key(mod):
found[mod] = {}
found[mod][val] = "found"
if not preferences.hasPref(mod, val):
print "Found new %s:%s, adding." % (mod, val)
preferences.setValue(mod, val, "**UNSET**")
# Find settings that are in prefs.json but not in code.
print "Finding orphans:"
for m in preferences.allprefs.keys():
# Skip version info
if m == "Version":
continue
if not m in found.keys():
print "Module %s is orphaned, removed." % m
del preferences.allprefs[m]
continue
pv = preferences.allprefs[m]
cv = found[m]
for n in pv.keys():
if not n in cv.keys():
print "Value %s:%s is orphaned, removed." % (m, n)
del pv[n]
# Decide what to do: write defaults or prefs
if len(sys.argv) > 1 and sys.argv[1] == "--defaults":
# Remove personal values
for m,v in [("jsit","username"), ("jsit","password"), ("yajsis","username"), ("yajsis","password"), ("autoDownload", "types"), ("autoDownload", "giveUpIfNotCompletedAfter")]:
try:
del preferences.allprefs[m][v]
except KeyError:
pass
# Set log levels to defaults
preferences.setValue("yajsig", "logLevel", 3)
preferences.setValue("yajsig", "fileLogLevel", 4)
preferences.setValue("yajsis", "logLevel", 3)
preferences.setValue("yajsis", "fileLogLevel", 4)
preferences.setValue("yajsis", "port", 8282)
# Reset paths to defaults
preferences.setValue("jsit", "torrentDirectory", "intorrents")
preferences.setValue("downloads", "basedir", "downloads")
preferences.setValue("downloads", "completedDirectory", "completed")
# Remove label options
preferences.setValue("autoDownload", "skipLabels", [])
preferences.setValue("autoDownload", "checkAutoDownloadPieces", False)
preferences.setValue("autoDownload", "deleteSkippedAndStopped", False)
preferences.setValue("autoDownload", "trackers", [])
preferences.setValue("downloads", "setCompletedLabel", None)
preferences.setValue("downloads", "unpackArchives", False)
print "Updating defaults.json..."
preferences.save("defaults.json")
# Add some demo options
preferences.setValue("autoDownload", "types",
{ "Movies" : {
"completedDirectory": "completed/Movies",
"matchLabels": [
"Movies"
],
"matchNames": []
},
"JohnSteward" : {
"completedDirectory": "completed/JohnSteward",
"matchLabels": [],
"matchNames": [ "The\.Daily\.Show" ]
}
}
)
print "Updating example.json..."
preferences.save("example.json")
else:
preferences.save("preferences.json")