#!/usr/bin/env python3
import sys
import os
import xml.etree.ElementTree as ET


def delete_pages(input_qet, output_qet, start_page, end_page):
    # Lade XML-Datei
    tree = ET.parse(input_qet)
    root = tree.getroot()

    # Namespace feststellen
    ns_uri = ''
    if root.tag.startswith('{'):
        ns_uri = root.tag[1:].split('}')[0]
    tag_name = 'diagram'
    if ns_uri:
        tag_name = f"{{{ns_uri}}}diagram"

    # Parent-Map erstellen
    parent_map = {child: parent for parent in tree.iter() for child in parent}

    # Sammle zu löschende Diagramme
    to_remove = []
    for diagram in root.iter(tag_name):
        # Attribut 'order' kann lowercase oder uppercase sein
        order_attr = diagram.get('order') or diagram.get('Order')
        if not order_attr:
            continue
        try:
            order_val = int(order_attr)
        except ValueError:
            continue
        if start_page <= order_val <= end_page:
            to_remove.append(diagram)

    # Entferne gefundene Diagramme
    for diagram in to_remove:
        parent = parent_map.get(diagram, root)
        parent.remove(diagram)

    removed = len(to_remove)
    if removed == 0:
        print(f"Keine Seiten mit Order zwischen {start_page} und {end_page} gefunden.")
    else:
        print(f"{removed} Seiten gelöscht (Order {start_page}-{end_page}).")

    # Geänderte Datei speichern
    tree.write(output_qet, encoding='utf-8', xml_declaration=True)


if __name__ == '__main__':
    # Erwartet 4 Argumente: input, output, start, end
    if len(sys.argv) != 5:
        print("Usage: python3 Seiten_loeschen.py <input.qet> <output.qet> <start_page> <end_page>")
        sys.exit(1)

    _, input_qet, output_qet, start, end = sys.argv

    # Prüfen auf gültige Ganzzahlen
    try:
        start_page = int(start)
        end_page = int(end)
    except ValueError:
        print("Start- und Endseite müssen ganze Zahlen sein.")
        sys.exit(1)

    if not os.path.isfile(input_qet):
        print(f"Input-Datei '{input_qet}' nicht gefunden.")
        sys.exit(1)

    delete_pages(input_qet, output_qet, start_page, end_page)

