Spaces:
Runtime error
Runtime error
Download modules/parser.py from rahimizadeh/Log_Assistant_Application: direct link, hf CLI and curl.
- Browser
- Download file 1.52 kB
-
https://huggingface.co/spaces/rahimizadeh/Log_Assistant_Application/resolve/main/modules/parser.py
- Command line
-
hf download hf://spaces/rahimizadeh/Log_Assistant_Application/modules/parser.py
-
curl -L -o parser.py https://huggingface.co/spaces/rahimizadeh/Log_Assistant_Application/resolve/main/modules/parser.py
1.52 kB
| import os | |
| import re | |
| import fitz # PyMuPDF for reading PDFs | |
| from typing import List | |
| def extract_text_from_pdf(file_path: str) -> str: | |
| """ | |
| Extracts plain text from a PDF file using PyMuPDF. | |
| """ | |
| doc = fitz.open(file_path) | |
| text = "" | |
| for page in doc: | |
| text += page.get_text() # Extract text from each page | |
| return text | |
| def read_log_file(file_path: str) -> str: | |
| """ | |
| Reads a .log or .txt file and returns its content as text. | |
| """ | |
| with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: | |
| return f.read() | |
| def detect_log_format(text: str) -> str: | |
| """ | |
| Detects the log format using basic pattern matching. | |
| Returns one of: 'syslog', 'json', 'cef', or 'unknown'. | |
| """ | |
| if re.search(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}", text): | |
| return "syslog" | |
| elif re.search(r"\{.*\}", text): | |
| return "json" | |
| elif "CEF:" in text: | |
| return "cef" | |
| else: | |
| return "unknown" | |
| def parse_uploaded_files(files: List[str]) -> str: | |
| """ | |
| Accepts a list of uploaded files, extracts content from each, | |
| and returns all logs as one combined string. | |
| """ | |
| all_logs = "" | |
| for file_obj in files: | |
| file_path = file_obj.name | |
| if file_path.endswith('.pdf'): | |
| all_logs += extract_text_from_pdf(file_path) + "\n" | |
| elif file_path.endswith(('.log', '.txt')): | |
| all_logs += read_log_file(file_path) + "\n" | |
| return all_logs | |