hosts/updateReadme.py
funilrys 4cd4b8167a
Deletion of decode_line() as it is not required anymore in python 3
Also:
  * Deletion of any PY3 references
2018-09-05 23:51:28 -04:00

92 lines
3.2 KiB
Python

#!/usr/bin/env python
# Script by Steven Black
# https://github.com/StevenBlack
#
# This Python script will update the readme files in this repo.
import json
import os
import sys
import time
from string import Template
# Project Settings
BASEDIR_PATH = os.path.dirname(os.path.realpath(__file__))
README_TEMPLATE = os.path.join(BASEDIR_PATH, 'readme_template.md')
README_FILENAME = 'readme.md'
README_DATA_FILENAME = "readmeData.json"
def main():
s = Template('${description} | [Readme](https://github.com/StevenBlack/'
'hosts/blob/master/${location}readme.md) | '
'[link](https://raw.githubusercontent.com/StevenBlack/'
'hosts/master/${location}hosts) | '
'${fmtentries} | '
'[link](http://sbc.io/hosts/${location}hosts)')
with open(README_DATA_FILENAME, 'r') as f:
data = json.load(f)
keys = list(data.keys())
# Sort by the number of en-dashes in the key
# and then by the key string itself.
keys.sort(key=lambda item: (item.count("-"), item))
toc_rows = ""
for key in keys:
data[key]["fmtentries"] = "{:,}".format(data[key]["entries"])
if key == "base":
data[key]["description"] = 'Unified hosts = **(adware + malware)**'
else:
data[key]["description"] = ('Unified hosts **+ ' +
key.replace("-", " + ") + '**')
toc_rows += s.substitute(data[key]) + "\n"
row_defaults = {
"name": "",
"description": "",
"homeurl": "",
"frequency": "",
"issues": "",
"url": "",
"license": "",
"issues": ""}
t = Template('${name} | ${description} |[link](${homeurl})'
' | [raw](${url}) | ${frequency} | ${license} | [issues](${issues}) ')
for key in keys:
extensions = key.replace("-", ", ")
extensions_str = "* Extensions: **" + extensions + "**."
extensions_header = "with " + extensions + " extensions"
source_rows = ""
source_list = data[key]["sourcesdata"]
for source in source_list:
this_row = {}
this_row.update(row_defaults)
this_row.update(source)
source_rows += t.substitute(this_row) + "\n"
with open(os.path.join(data[key]["location"],
README_FILENAME), "wt") as out:
for line in open(README_TEMPLATE):
line = line.replace('@GEN_DATE@', time.strftime("%B %d %Y",
time.gmtime()))
line = line.replace('@EXTENSIONS@',extensions_str)
line = line.replace('@EXTENSIONS_HEADER@', extensions_header))
line = line.replace('@NUM_ENTRIES@',
"{:,}".format(data[key]["entries"]))
line = line.replace('@SUBFOLDER@', os.path.join(
data[key]["location"], ''))
line = line.replace('@TOCROWS@', toc_rows)
line = line.replace('@SOURCEROWS@', source_rows)
out.write(line)
if __name__ == "__main__":
main()