mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Add more logs to the scanner (and fix ignore pattern for the monitor) (#492)
This commit is contained in:
parent
afa57df5c2
commit
a978e99e8a
@ -46,8 +46,10 @@ class Subscriber(RabbitBase):
|
||||
case _:
|
||||
logger.error(f"Invalid action: {msg.action}")
|
||||
if ack:
|
||||
logger.info("finished processing %s", msg)
|
||||
await message.ack()
|
||||
else:
|
||||
logger.warn("failed to process %s", msg)
|
||||
await message.reject()
|
||||
except Exception as e:
|
||||
logger.exception("Unhandled error", exc_info=e)
|
||||
|
@ -2,23 +2,30 @@ from logging import getLogger
|
||||
from os.path import isdir
|
||||
from watchfiles import awatch, Change
|
||||
from .publisher import Publisher
|
||||
from .scanner import scan
|
||||
from .scanner import scan, get_ignore_pattern
|
||||
from providers.kyoo_client import KyooClient
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
async def monitor(path: str, publisher: Publisher, client: KyooClient):
|
||||
ignore_pattern = get_ignore_pattern()
|
||||
async for changes in awatch(path, ignore_permission_denied=True):
|
||||
for event, file in changes:
|
||||
if event == Change.added:
|
||||
if isdir(file):
|
||||
if ignore_pattern.match(file):
|
||||
logger.info(
|
||||
"Ignoring event %s for file %s (due to IGNORE_PATTERN)", event, file
|
||||
)
|
||||
continue
|
||||
logger.info("Change %s occured for file %s", event, file)
|
||||
match event:
|
||||
case Change.added if isdir(file):
|
||||
await scan(file, publisher, client)
|
||||
else:
|
||||
case Change.added:
|
||||
await publisher.add(file)
|
||||
elif event == Change.deleted:
|
||||
await publisher.delete(file)
|
||||
elif event == Change.modified:
|
||||
pass
|
||||
else:
|
||||
logger.info(f"Change {event} occured for file {file}")
|
||||
case Change.deleted:
|
||||
await publisher.delete(file)
|
||||
case Change.modified:
|
||||
pass
|
||||
case _:
|
||||
logger.warn("Unknown file event %s (for file %s)", event, file)
|
||||
|
@ -13,4 +13,6 @@ async def refresh(publisher: Publisher, client: KyooClient):
|
||||
# Check for updates every 4 hours
|
||||
await asyncio.sleep(60 * 60 * 4)
|
||||
todo = await client.get("refreshables")
|
||||
logger.info("Refreshing %d items", len(todo))
|
||||
await asyncio.gather(*(publisher.refresh(**x) for x in todo))
|
||||
logger.info("Refresh finish. Will check for new items to refresh in 4 hours")
|
||||
|
@ -10,18 +10,21 @@ from providers.kyoo_client import KyooClient
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
def get_ignore_pattern():
|
||||
try:
|
||||
return re.compile(os.environ.get("LIBRARY_IGNORE_PATTERN", ""))
|
||||
except Exception as e:
|
||||
logger.error(f"Invalid ignore pattern. Ignoring. Error: {e}")
|
||||
return re.compile("")
|
||||
|
||||
|
||||
async def scan(
|
||||
path_: Optional[str], publisher: Publisher, client: KyooClient, remove_deleted=False
|
||||
):
|
||||
path = path_ or os.environ.get("SCANNER_LIBRARY_ROOT", "/video")
|
||||
|
||||
logger.info("Starting the scan. It can take some times...")
|
||||
ignore_pattern = None
|
||||
try:
|
||||
ignore_pattern = re.compile(os.environ.get("LIBRARY_IGNORE_PATTERN", ""))
|
||||
except Exception as e:
|
||||
ignore_pattern = re.compile("")
|
||||
logger.error(f"Invalid ignore pattern. Ignoring. Error: {e}")
|
||||
ignore_pattern = get_ignore_pattern()
|
||||
|
||||
registered = await client.get_registered_paths()
|
||||
videos = [
|
||||
@ -33,6 +36,7 @@ async def scan(
|
||||
|
||||
if remove_deleted:
|
||||
deleted = [x for x in registered if x not in videos]
|
||||
logger.info("Found %d stale files to remove.", len(deleted))
|
||||
if len(deleted) != len(registered):
|
||||
await asyncio.gather(*map(publisher.delete, deleted))
|
||||
elif len(deleted) > 0:
|
||||
@ -43,5 +47,6 @@ async def scan(
|
||||
if x not in videos:
|
||||
await client.delete_issue(x)
|
||||
|
||||
logger.info("Found %d new files (counting non-video files)", len(to_register))
|
||||
await asyncio.gather(*map(publisher.add, to_register))
|
||||
logger.info(f"Scan finished for {path}.")
|
||||
logger.info("Scan finished for %s.", path)
|
||||
|
Loading…
x
Reference in New Issue
Block a user