- 解码gfwlist.txt文件
- 编码pac规则为gfwlist格式
main.py -l inFile outFile
main.py -b inFile outFile
#!/usr/local/bin/python3 | |
import re, base64, sys, os | |
def outList(fileUrl, outUrl): | |
inFile = open(fileUrl, 'r') | |
content = base64.b64decode(inFile.read().encode()).decode() | |
inFile.close() | |
outFile = open(outUrl, 'w') | |
outFile.write(content) | |
outFile.close() | |
def listToGFWList(fileUrl, outUrl): | |
inFile = open(fileUrl, 'r') | |
content = base64.b64encode(inFile.read().encode()).decode() | |
inFile.close() | |
outFile = open(outUrl, 'w') | |
# 每行长度64 | |
partten = re.compile(r'.{64}') | |
lines = partten.findall(content) | |
for line in lines: | |
outFile.write(line + '\n') | |
# 剩下最后一行不足64长度 | |
index = len(lines) * 64 | |
outFile.write(content[index:] + '\n') | |
outFile.close() | |
def argvCheck(): | |
if len(sys.argv) != 4: | |
print('Error: params incorrect.') | |
return False | |
return True | |
if len(sys.argv) >= 1: | |
if sys.argv[1] in ('-l', 'list'): | |
if argvCheck(): | |
outList(sys.argv[2], sys.argv[3]) | |
elif sys.argv[1] in ('-b', 'build'): | |
if argvCheck(): | |
listToGFWList(sys.argv[2], sys.argv[3]) | |
else: | |
print('''\ | |
Usage: %s [-l list] | |
%s [-b build]\ | |
''' % ((os.path.basename(sys.argv[0]), ) * 2)) | |