import PyPDF2
import re
import os
import sys

def extract_information(pdf_path):
    extracted_data = []

    # Öffne die PDF-Datei
    with open(pdf_path, 'rb') as pdf_file:
        pdf_reader = PyPDF2.PdfReader(pdf_file)

        # Iteriere über alle Seiten der PDF
        for page_num in range(len(pdf_reader.pages)):
            page = pdf_reader.pages[page_num]
            text = page.extract_text()

            # Suche nach dem Muster "Arbeitgeber:" gefolgt von dem Unternehmensnamen
            employer_matches = re.finditer(r'Arbeitgeber:\s*(.*?)\n', text, re.IGNORECASE)
            for employer_match in employer_matches:
                employer = employer_match.group(1).strip()

                # Suche nach dem Muster "Ort:" gefolgt von Straße, Postleitzahl und Stadt
                location_match = re.search(r'Ort:\s*(.*?)\n', text[employer_match.end():], re.IGNORECASE)
                if location_match:
                    location = location_match.group(1).strip()
                else:
                    location = None

                # Füge die extrahierten Informationen zur Liste hinzu
                extracted_data.append({'Arbeitgeber': employer, 'Ort': location})

    return extracted_data

def scan_directory(directory_path):
    all_extracted_info = []

    # Iteriere über alle Dateien und Unterordner im angegebenen Verzeichnis
    for root, _, files in os.walk(directory_path):
        for file in files:
            if file.endswith('.pdf'):
                file_path = os.path.join(root, file)
                extracted_info = extract_information(file_path)
                all_extracted_info.extend(extracted_info)

    return all_extracted_info

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Verwendung: python script.py <Verzeichnis>")
        sys.exit(1)

    directory_path = sys.argv[1]

    # Extrahiere die Informationen aus PDF-Dateien im angegebenen Verzeichnis und Unterordnern
    extracted_info = scan_directory(directory_path)

    # Gib nur die extrahierten Arbeitgeber und Orte aus
    #for info in extracted_info:
    #    if info['Arbeitgeber']:
    #        print("Arbeitgeber:", info['Arbeitgeber'])
    #    if info['Ort']:
    #        print("Ort:", info['Ort'])
    #    print("-------------------------")
    # Gib nur die extrahierten Arbeitgeber und Orte aus
    print("[")
    for info in extracted_info:
        if info['Arbeitgeber'] and info['Ort']:
            print(f'  {{ name: "{info["Arbeitgeber"]}", location: "{info["Ort"]}" }},')
    print("]")