| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from pathlib import Path
- from watchdog.events import FileSystemEvent, FileSystemEventHandler
- from watchdog.observers import Observer
- from move_files import refresh_and_move
- class XmlChangeHandler(FileSystemEventHandler):
- def __init__(
- self,
- directory: Path,
- files_csv: Path,
- clients_csv: Path,
- desktop_directory: Path,
- ignore_timestamp: bool,
- ) -> None:
- self.directory = directory
- self.files_csv = files_csv
- self.clients_csv = clients_csv
- self.desktop_directory = desktop_directory
- self.ignore_timestamp = ignore_timestamp
- def on_created(self, event: FileSystemEvent) -> None:
- self.process_xml(event)
- def on_modified(self, event: FileSystemEvent) -> None:
- self.process_xml(event)
- def on_moved(self, event: FileSystemEvent) -> None:
- self.process_xml(event)
- def process_xml(self, event: FileSystemEvent) -> None:
- if event.is_directory or not Path(event.src_path).suffix.lower() == ".xml":
- return
- refresh_and_move(
- self.directory,
- self.files_csv,
- self.clients_csv,
- self.desktop_directory,
- self.ignore_timestamp,
- )
- def run(
- directory: Path,
- files_csv: Path,
- clients_csv: Path,
- desktop_directory: Path,
- ignore_timestamp: bool = False,
- ) -> None:
- if not directory.is_dir():
- raise ValueError(f"Das Verzeichnis existiert nicht: {directory}")
- observer = Observer()
- observer.schedule(
- XmlChangeHandler(directory, files_csv, clients_csv, desktop_directory, ignore_timestamp),
- str(directory),
- recursive=True,
- )
- print(f"Überwachung des XML-Verzeichnisses gestartet: {directory}")
- print("Mit Strg+C kann die Überwachung beendet werden.")
- observer.start()
- try:
- while observer.is_alive():
- observer.join(1)
- except KeyboardInterrupt:
- observer.stop()
- print("Überwachung wurde manuell mit Strg+C beendet.")
- observer.join()
|