#!/usr/bin/python3 import glob, fileinput, os, re, shutil, sys, tempfile, time import pprint year = 2023 webfile_dir = "~/public_html/GunRun{}/".format(year) print("NOTE: year is {}".format(year)) def natural_sort(l): convert = lambda text: int(text) if text.isdigit() else text.lower() alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] return sorted(l, key=alphanum_key) webfile_dir = os.path.expanduser(webfile_dir) for root, dirs, files in os.walk(webfile_dir): documents=[] for file in files: if re.search('.(pdf|png|jpg|jpeg|htm|html|mp4|pptx)$', file) and not re.search('index.html', file): try: documents.append(os.path.join(file)) except OSError: pass canonical=[] archive=[] marshals=[] for file in documents: name=os.path.basename(file) if re.search('^\d{8}', name): archive.append(name) elif re.search('_marshal_map_', name): marshals.append(name) else: canonical.append(name) most_recent = {} for file in natural_sort(archive): m = re.search("^(\d{{8}}) - (Gun Run {} - .*?)(?:\s*\d+(?:\.\d+)?)?(\.\S+)$".format(year), file, re.IGNORECASE) if m: date = m.group(1) name = m.group(2) + m.group(3) current = most_recent.get(name) if current is None or date >= current.get('date'): most_recent[name] = { 'date': date, 'file': file } for k, v in most_recent.items(): canon = os.path.join(webfile_dir, k) #file = os.path.join(webfile_dir, v.get('file')) # No need for directory, since it's in the same directory file = v.get('file') #print("Creating symlink from {} to {}".format(file, canon)) if os.path.isfile(canon): os.unlink(canon) os.symlink(file, canon) if k not in canonical: canonical.append(k) indexfile = open(os.path.join(webfile_dir, root, "index.html"), "w") output = """
Maps
Clubs
Source Maps
Marshal maps
{} | """.format(day) output += """{} | """.format(num) for link in ext.values(): output += """{} | """.format(link, link) output += """