import os
import requests

def fetch_text(source):
    # Detect URL vs local file
    if source.lower().startswith("http://") or source.lower().startswith("https://"):
        response = requests.get(source)
        response.raise_for_status()
        return response.text.splitlines()
    else:
        with open(source, "r", encoding="utf-8", errors="ignore") as f:
            return f.readlines()

def search_keywords(lines, keywords):
    results = []
    for line_number, line in enumerate(lines, start=1):
        lower_line = line.lower()
        for kw in keywords:
            if kw.lower() in lower_line:
                results.append((line_number, kw, line.rstrip("\n")))
    return results

def write_log(log_path, source, keywords, results):
    os.makedirs(os.path.dirname(log_path), exist_ok=True)

    with open(log_path, "w", encoding="utf-8") as log:
        log.write("=== searchFor.exe LOG REPORT ===\n")
        log.write(f"Source: {source}\n")
        log.write(f"Keywords: {', '.join(keywords)}\n")
        log.write(f"Total Matches: {len(results)}\n")
        log.write("----------------------------------------\n\n")

        for line_number, keyword, text in results:
            entry = f"[Line {line_number}] (keyword: {keyword}) -> {text}\n"
            log.write(entry)
            print(entry, end="")  # console/log parity

def main():
    source = "https://belliniseven.store/caseOrganizer/20260112/elizondoMonica/projectGoogle/SQL/1-createDatabaseFamily.sql"
    keywords = ["delacruz", "elizondo", "DominiqueAngel", "MichaelEric"]
    log_path = r"c:\Temp\projectGoogle\LOG\searchForLogReport-202601131701.log"
    print(f"Fetching source: {source}")
    lines = fetch_text(source)

    print("Searching for keywords...")
    results = search_keywords(lines, keywords)

    print(f"Writing log to: {log_path}")
    write_log(log_path, source, keywords, results)

    print("\nSearch complete.")

if __name__ == "__main__":
    main()
