import logging import os import subprocess import sys from sqlalchemy.sql import operators logger = logging.getLogger(__name__) def find_fulltext_macos(query): import settings from item.models import File prefix = os.path.join(os.path.expanduser(settings.preferences['libraryPath']), 'Books/') cmd = ["mdfind", "-onlyin", prefix, query] books = subprocess.check_output(cmd).decode().strip().split('\n') books = [path[len(prefix):] for path in books] ids = [b[0] for b in File.query.filter(operators.in_op(File.path, books)).values('sha1')] return ids def find_fulltext(query): ids = [] if sys.platform == 'darwin': ids = find_fulltext_macos(query) else: logger.debug('missing fulltext search implementation for %s', sys.platform) return ids def platform_supported(): return sys.platform == 'darwin'