Init
This commit is contained in:
95
old_scripts/generate_index.py
Normal file
95
old_scripts/generate_index.py
Normal file
@@ -0,0 +1,95 @@
|
||||
import os
|
||||
import json
|
||||
import gzip
|
||||
from string import Template
|
||||
from collections import defaultdict
|
||||
from fnmatch import fnmatch
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
env = Environment(loader=FileSystemLoader('.'))
|
||||
template = env.get_template('templates/index.j2')
|
||||
|
||||
directory = '/data/html_data' # Change this to your directory path
|
||||
rocky_version = "8.10"
|
||||
|
||||
def generate_sitemap(directory):
|
||||
links = defaultdict(lambda: defaultdict(dict))
|
||||
for root, _, files in os.walk(directory):
|
||||
for file in files:
|
||||
full_filepath = os.path.join(root, file)
|
||||
filepath = full_filepath.split(rocky_version, 1)[-1]
|
||||
|
||||
if any(fnmatch(filepath, pattern) for pattern in ['/index.html', '/links.html','/list.json*', '/sitemap*']):
|
||||
continue
|
||||
|
||||
filepath_parts = filepath.split('/')
|
||||
package_name = filepath_parts[1]
|
||||
man_type = filepath_parts[2]
|
||||
man_type_number = man_type.lstrip('man') if man_type.startswith('man') else man_type
|
||||
command_file = filepath_parts[3]
|
||||
command = command_file.split('.html', 1)[0]
|
||||
|
||||
if filepath.startswith('/'):
|
||||
filepath = filepath[1:]
|
||||
|
||||
fullname = f"{package_name} - {command}({man_type_number})"
|
||||
|
||||
links[package_name][command] = {
|
||||
"url": filepath,
|
||||
"man_type": man_type,
|
||||
"man_type_number": man_type_number,
|
||||
"fullname": fullname
|
||||
}
|
||||
|
||||
return links
|
||||
|
||||
def generate_links_html(links):
|
||||
links_html = ""
|
||||
|
||||
for package_name in links.keys():
|
||||
links_html += f"<h2>package_name</h2>"
|
||||
links_html += "<ul>"
|
||||
for command in links[package_name]:
|
||||
url = links[package_name][command]['url']
|
||||
man_type_number = links[package_name][command]['man_type_number']
|
||||
links_html += f"<li><a href='{url}'>{command}</a>({man_type_number})</li>"
|
||||
links_html += "</ul>"
|
||||
|
||||
data = {
|
||||
'title': f"Rocky Man Page - {rocky_version}",
|
||||
'header_title': f"Rocky Man Page - {rocky_version}",
|
||||
'main_content': f"{links_html}"
|
||||
}
|
||||
|
||||
return template.render(data)
|
||||
|
||||
def convert_sitemap_to_json(links, minify=False):
|
||||
# data
|
||||
# for package_name in links.keys():
|
||||
# for command in links[package_name]:
|
||||
|
||||
# # Add command details to sitemap
|
||||
# sitemap[package_name][command] = {
|
||||
# "url": filepath,
|
||||
# "mantype": man_type,
|
||||
# "fullname": fullname
|
||||
# }
|
||||
|
||||
if minify:
|
||||
return json.dumps(links, separators=(',', ':'))
|
||||
return json.dumps(links, indent=4)
|
||||
|
||||
if __name__ == "__main__":
|
||||
sitemap = generate_sitemap(directory)
|
||||
|
||||
# Output the links HTML page to a file
|
||||
with open(f"{directory}/{rocky_version}/links.html", "w") as file:
|
||||
file.write(generate_links_html(sitemap))
|
||||
|
||||
# Output the list JSON to a file
|
||||
with open(f"{directory}/{rocky_version}/list.json", "w") as file:
|
||||
file.write(convert_sitemap_to_json(sitemap, minify=True))
|
||||
|
||||
# Gzip the JSON file
|
||||
with gzip.open(f"{directory}/{rocky_version}/list.json.gz", "wb") as f_out:
|
||||
f_out.write(convert_sitemap_to_json(sitemap, minify=True).encode('utf-8'))
|
||||
Reference in New Issue
Block a user