#!/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())