#!/usr/bin/env python3 """ Encode/decode HTML entities in stdin or given file(s). """ import argparse import fileinput import html from html.entities import entitydefs ENTITIES = {value: key for key, value in entitydefs.items()} def encode(text): t = "" for c in text: if c in ENTITIES: t += "&" + ENTITIES[c] + ";" else: t += c return t def decode(text): return html.unescape(text) if __name__ == '__main__': opts = argparse.ArgumentParser(description="Encodes (or decodes) HTML entities in text.") opts.add_argument('file', type=str, nargs="*", help="File to encode/decode") opts.add_argument('-d', '--decode', action='store_true', help="Decode the given files/input") args = opts.parse_args() text = [line for line in fileinput.input(args.file)] action = decode if args.decode else encode print(action("\n".join(text).strip()))