This commit is contained in:
Gigi
2025-03-29 19:43:42 +00:00
2 changed files with 133 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ import os
import sys
from pathlib import Path
import ollama
import time
def read_transcript(transcript_file: Path) -> str:
"""Read the content of a transcript file."""
@@ -57,25 +58,44 @@ def main():
# Create summaries directory if it doesn't exist
summary_dir.mkdir(parents=True, exist_ok=True)
# Get list of all transcript files
transcript_files = list(transcript_dir.glob("*.txt"))
total_files = len(transcript_files)
print(f"Found {total_files} transcript(s) to process")
# Process all transcript files
for transcript_file in transcript_dir.glob("*.txt"):
print(f"Processing {transcript_file.name}...")
for idx, transcript_file in enumerate(transcript_files, 1):
print(f"\nProcessing {transcript_file.name} ({idx}/{total_files})...")
# Read transcript
transcript_text = read_transcript(transcript_file)
# Skip if summary already exists
summary_file = summary_dir / f"{transcript_file.stem}_summary.txt"
if summary_file.exists():
print(" Summary already exists, skipping...")
continue
# Generate summary
try:
# Read transcript
transcript_text = read_transcript(transcript_file)
print(f" Read transcript ({len(transcript_text)} characters)")
# Generate summary
summary = process_transcript(transcript_text)
# Save summary
summary_file = summary_dir / f"{transcript_file.stem}_summary.txt"
save_summary(summary, summary_file)
print(f" Summary saved to {summary_file}")
print(f"Summary saved to {summary_file}")
# Add a small delay between files to avoid overloading
if idx < total_files:
time.sleep(1)
except Exception as e:
print(f"Error processing {transcript_file.name}: {str(e)}")
print(f" Failed to process {transcript_file.name}")
print(f" Error: {str(e)}")
continue
print("\nDone! All transcripts processed.")
if __name__ == "__main__":
main()

105
watch_voice_memos.py Executable file
View File

@@ -0,0 +1,105 @@
#!/usr/bin/env python3
import sys
import time
import subprocess
from pathlib import Path
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class VoiceMemoHandler(FileSystemEventHandler):
def __init__(self, voice_memo_dir: Path, transcript_dir: Path):
self.voice_memo_dir = voice_memo_dir
self.transcript_dir = transcript_dir
self.processing_lock = False
def on_created(self, event):
if self.processing_lock:
return
if not event.is_directory:
file_path = Path(event.src_path)
# Handle new voice memo
if file_path.parent == self.voice_memo_dir and file_path.suffix.lower() == '.m4a':
print(f"\nNew voice memo detected: {file_path.name}")
self.process_voice_memo()
# Handle new transcript
elif file_path.parent == self.transcript_dir and file_path.suffix.lower() == '.txt':
print(f"\nNew transcript detected: {file_path.name}")
self.process_transcript()
def process_voice_memo(self):
"""Run the voice memo processing script"""
try:
self.processing_lock = True
print("Processing voice memo...")
result = subprocess.run(['./process_voice_memos.sh'],
capture_output=True,
text=True)
if result.returncode == 0:
print("Voice memo processing completed successfully")
else:
print(f"Error processing voice memo: {result.stderr}")
except Exception as e:
print(f"Error running voice memo script: {str(e)}")
finally:
self.processing_lock = False
def process_transcript(self):
"""Run the transcript summarization script"""
try:
self.processing_lock = True
print("Processing transcript...")
result = subprocess.run(['./summarize_transcripts.py'],
capture_output=True,
text=True)
if result.returncode == 0:
print("Transcript processing completed successfully")
else:
print(f"Error processing transcript: {result.stderr}")
except Exception as e:
print(f"Error running summarization script: {str(e)}")
finally:
self.processing_lock = False
def main():
# Set up directory paths
voice_memo_dir = Path("VoiceMemos")
transcript_dir = voice_memo_dir / "transcripts"
# Verify directories exist
if not voice_memo_dir.exists():
print(f"Error: {voice_memo_dir} directory does not exist")
sys.exit(1)
if not transcript_dir.exists():
print(f"Error: {transcript_dir} directory does not exist")
sys.exit(1)
# Set up event handler and observer
event_handler = VoiceMemoHandler(voice_memo_dir, transcript_dir)
observer = Observer()
# Watch both directories
observer.schedule(event_handler, str(voice_memo_dir), recursive=False)
observer.schedule(event_handler, str(transcript_dir), recursive=False)
# Start the observer
observer.start()
print(f"\nWatching for changes in:")
print(f"- Voice memos: {voice_memo_dir}")
print(f"- Transcripts: {transcript_dir}")
print("\nPress Ctrl+C to stop...")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
print("\nStopping file watcher...")
observer.join()
if __name__ == "__main__":
main()