This commit is contained in:
nose
2025-12-11 19:04:02 -08:00
parent 6863c6c7ea
commit 16d8a763cd
103 changed files with 4759 additions and 9156 deletions

View File

@@ -18,7 +18,7 @@ from typing import Optional, Callable, Any
from pathlib import Path
import sys
from helper.logger import log
from SYS.logger import log
import json
# Add parent directory to path for imports
@@ -327,7 +327,7 @@ class DownloadModal(ModalScreen):
else:
# Fallback if helper not available
import uuid
from helper.worker_manager import Worker
from SYS.worker_manager import Worker
worker_id = f"dl_{uuid.uuid4().hex[:8]}"
worker = Worker(worker_id, "download", f"Download: {url[:50]}",
f"Tags: {', '.join(tags) if tags else 'None'}", None)
@@ -688,7 +688,6 @@ class DownloadModal(ModalScreen):
'target': str(filepath),
'path': str(filepath),
'media_kind': 'audio',
'hash_hex': None,
'hash': None,
'url': [],
'title': filepath_obj.stem

View File

@@ -15,7 +15,7 @@ from datetime import datetime
# Add parent directory to path for imports
sys.path.insert(0, str(Path(__file__).parent.parent))
from helper.utils import format_metadata_value
from SYS.utils import format_metadata_value
from config import load_config
logger = logging.getLogger(__name__)
@@ -69,7 +69,7 @@ class ExportModal(ModalScreen):
"""
ext_lower = ext.lower() if ext else ''
from helper.utils_constant import mime_maps
from SYS.utils_constant import mime_maps
found_type = "unknown"
@@ -404,9 +404,9 @@ class ExportModal(ModalScreen):
metadata = self.result_data.get('metadata', {})
# Extract file source info from result_data (passed by hub-ui)
file_hash = self.result_data.get('hash') or self.result_data.get('file_hash')
file_url = self.result_data.get('url') or self.result_data.get('file_url')
file_path = self.result_data.get('path') or self.result_data.get('file_path') # For local files
file_hash = self.result_data.get('hash')
file_url = self.result_data.get('url')
file_path = self.result_data.get('path')
source = self.result_data.get('source', 'unknown')
# Prepare export data
@@ -420,11 +420,8 @@ class ExportModal(ModalScreen):
'metadata': metadata,
'original_data': self.result_data,
'hash': file_hash,
'file_hash': file_hash,
'url': file_url,
'file_url': file_url,
'path': file_path,
'file_path': file_path, # Pass file path for local files
'source': source,
}

View File

@@ -16,7 +16,7 @@ import asyncio
sys.path.insert(0, str(Path(__file__).parent.parent))
from config import load_config
from result_table import ResultTable
from helper.provider import get_provider
from Provider.registry import get_search_provider
logger = logging.getLogger(__name__)
@@ -158,7 +158,7 @@ class SearchModal(ModalScreen):
self.current_worker.log_step(f"Connecting to {source}...")
try:
provider = get_provider(source)
provider = get_search_provider(source)
if not provider:
logger.error(f"[search-modal] Provider not available: {source}")
if self.current_worker:
@@ -282,7 +282,7 @@ class SearchModal(ModalScreen):
# Handle both SearchResult objects and dicts
if hasattr(result, 'full_metadata'):
metadata = result.full_metadata or {}
source = result.origin
source = result.table
title = result.title
else:
# Handle dict (legacy or from to_dict)
@@ -293,7 +293,7 @@ class SearchModal(ModalScreen):
else:
metadata = result
source = result.get('origin', result.get('source', ''))
source = result.get('table', '')
title = result.get('title', '')
# Format tags based on result source
@@ -332,7 +332,7 @@ class SearchModal(ModalScreen):
async def _download_book(self, result: Any) -> None:
"""Download a book from OpenLibrary using unified downloader."""
try:
from helper.unified_book_downloader import UnifiedBookDownloader
from Provider.unified_book_downloader import UnifiedBookDownloader
from config import load_config
# Convert SearchResult to dict if needed

View File

@@ -25,7 +25,7 @@ for path in (ROOT_DIR, BASE_DIR):
import pipeline as ctx
from cmdlets import REGISTRY
from config import get_local_storage_path, load_config
from helper.worker_manager import WorkerManager
from SYS.worker_manager import WorkerManager
try: # Reuse the CLI selection parser instead of reimplementing it.
from CLI import _parse_selection_syntax