distribusi now only removes indexes that are created by distribusi

This commit is contained in:
RRA 2019-09-15 14:29:16 +02:00
parent d5335f3212
commit e21a78324f
3 changed files with 40 additions and 22 deletions

View File

@ -49,21 +49,23 @@ def build_argparser():
parser.add_argument( parser.add_argument(
'-c', '-c',
'--captions', '--captions',
help="Adds image captions based on EXIF metadata", help="Adds image captions based on EXIF metadata, requires 'exiftool'",
action="store_true", action="store_true",
) )
parser.add_argument( parser.add_argument(
'-r', '-r',
'--remove-index', '--remove-index',
help="Removes previously made index.html. Warning: this will remove ALL index.html files in the directories listed", help="Recursively removes all instances of index.html that have been previously made by distribusi",
action="store_true") action="store_true")
parser.add_argument( parser.add_argument(
'-e', '-e',
'--exclude-directory', '--exclude-directory',
help="Exclude one or multiple directories from indexing", help="Exclude one or multiple directories from indexing",
nargs="*") nargs="*",
metavar='DIR'
)
return parser return parser

View File

@ -68,6 +68,17 @@ def div(args, type_, subtype, tag, name):
return html.format(id_name, subtype, tag) return html.format(id_name, subtype, tag)
def check_distribusi_index(args, index):
with open(index, 'r') as f:
if '<meta name="generator" content="distribusi" />' in f.read():
return True
else:
if args.verbose:
print(index, 'not generated by distribusi, skipping')
return False
def distribusify(args, directory): # noqa def distribusify(args, directory): # noqa
for root, dirs, files in os.walk(directory): for root, dirs, files in os.walk(directory):
@ -75,8 +86,6 @@ def distribusify(args, directory): # noqa
if args.verbose: if args.verbose:
print('Excluding directory:', ", ".join(args.exclude_directory)) print('Excluding directory:', ", ".join(args.exclude_directory))
dirs[:] = [d for d in dirs if d not in args.exclude_directory] dirs[:] = [d for d in dirs if d not in args.exclude_directory]
if not args.remove_index: if not args.remove_index:
html = [] html = []
@ -141,28 +150,34 @@ def distribusify(args, directory): # noqa
a = "<a href='{}'>{}/</a>".replace('{}', name) a = "<a href='{}'>{}/</a>".replace('{}', name)
html.append(div(args, 'dir', 'dir', a, 'folder')) html.append(div(args, 'dir', 'dir', a, 'folder'))
with open(os.path.join(root, 'index.html'), 'w') as f: index = os.path.join(root, 'index.html')
if not args.no_template: if os.path.exists(index):
if args.style: if check_distribusi_index(args, index):
fs = open(args.style, "r") pass
style = fs.read() else:
styled_html_head = html_head % style with open(os.path.join(root, 'index.html'), 'w') as f:
else: if not args.no_template:
styled_html_head = html_head % '' if args.style:
f.write(styled_html_head) fs = open(args.style, "r")
style = fs.read()
styled_html_head = html_head % style
else:
styled_html_head = html_head % ''
f.write(styled_html_head)
for line in html: for line in html:
f.write(line + '\n') f.write(line + '\n')
if not args.no_template: if not args.no_template:
f.write(html_footer) f.write(html_footer)
if args.remove_index: if args.remove_index:
index = os.path.join(root, 'index.html') index = os.path.join(root, 'index.html')
if 'index.html' in files: if 'index.html' in files:
if args.verbose:
print('Removing index.html from', root)
try: try:
os.remove(index) if check_distribusi_index(args, index):
if args.verbose:
print('Removing index.html from', root)
os.remove(index)
except Exception as e: except Exception as e:
print(e) print(e)

View File

@ -3,7 +3,8 @@ html_head = """
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated with distribusi https://git.vvvvvvaria.org/varia/distribusi --> <!-- Generated with distribusi https://git.vvvvvvaria.org/varia/distribusi -->
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="generator" content="distribusi" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style> <style>
.image{max-width: 100%%;} .image{max-width: 100%%;}
.pdf object{width:100%%;} .pdf object{width:100%%;}