#!/usr/bin/env python3

# Copyright (c) 2025 Amin Bandali <[email protected]>
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.

import argparse
import os
import sys

import lxml.html
import lxml.html.defs


BASE_URL = 'https://kelar.org/~bandali'
LANGS = ['fa']

def main() -> int:
   parser = argparse.ArgumentParser()
   parser.add_argument('filename')
   parser.add_argument('-u', '--base-url')
   args = parser.parse_args()

   base_url = args.base_url or BASE_URL

   body = ''
   if not sys.stdin.isatty():
       body = sys.stdin.read()
   else:
       try:
           with open(args.filename, 'r') as file:
               body = file.read()
       except FileNotFoundError:
           print(f'error: file not found: {args.filename}')
           return 1
   body = body.rstrip()

   link_attrs = set(lxml.html.defs.link_attrs)
   link_attrs.add('poster')
   lxml.html.defs.link_attrs = frozenset(link_attrs)

   html = ''
   for frag in lxml.html.fragments_fromstring(body):
       frag.make_links_absolute(base_url=os.path.join(base_url, args.filename))
       encoding = None
       for lang in LANGS:
           if args.filename.startswith(lang + os.sep):
               encoding = 'utf-8'
               break
       html += lxml.html.tostring(frag, encoding=encoding).decode()
   print(html)
   return 0

if __name__ == '__main__':
   sys.exit(main())