Set up inotify watch
This commit is contained in:
parent
3b4b017322
commit
9e58429aae
@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
from rich.logging import RichHandler
|
from rich.logging import RichHandler
|
||||||
from rich.traceback import install
|
from rich.traceback import install
|
||||||
import configparser
|
import configparser
|
||||||
@ -21,8 +22,7 @@ class CONST(object):
|
|||||||
CFG_DEFAULT_ABS_PATH = os.path.join(CFG_THIS_FILE_DIRNAME, CFG_DEFAULT_FILENAME)
|
CFG_DEFAULT_ABS_PATH = os.path.join(CFG_THIS_FILE_DIRNAME, CFG_DEFAULT_FILENAME)
|
||||||
CFG_KNOWN_DEFAULTS = [
|
CFG_KNOWN_DEFAULTS = [
|
||||||
{"key": "self_name", "value": "kodi-nfo-feeder"},
|
{"key": "self_name", "value": "kodi-nfo-feeder"},
|
||||||
{"key": "watch_dir", "value": os.path.join(CFG_THIS_FILE_DIRNAME, "data/var/lib/%(self_name)s/watch")},
|
{"key": "watch_dir", "value": os.path.join(CFG_THIS_FILE_DIRNAME, "data/var/lib/%(self_name)s/watch")}
|
||||||
{"key": "output_dir", "value": os.path.join(CFG_THIS_FILE_DIRNAME, "data/var/lib/%(self_name)s/output")}
|
|
||||||
]
|
]
|
||||||
CFG_KNOWN_SECTION = [
|
CFG_KNOWN_SECTION = [
|
||||||
{"key": "watch_dir", "is_mandatory": True},
|
{"key": "watch_dir", "is_mandatory": True},
|
||||||
@ -136,6 +136,23 @@ def validate_config_sections(
|
|||||||
log.debug(f"{kv_prefix} {key} = {config_obj[this_section][key]}")
|
log.debug(f"{kv_prefix} {key} = {config_obj[this_section][key]}")
|
||||||
|
|
||||||
|
|
||||||
|
def setup_watch(
|
||||||
|
watch_this: str) -> INotify:
|
||||||
|
|
||||||
|
if not os.path.exists(watch_this):
|
||||||
|
os.makedirs(watch_this, exist_ok=False)
|
||||||
|
inotify = INotify()
|
||||||
|
watch_flags = flags.MOVED_TO
|
||||||
|
try:
|
||||||
|
inotify.add_watch(watch_this, watch_flags)
|
||||||
|
log.debug(f"Watching for files moved to '{watch_this}' ...")
|
||||||
|
except FileNotFoundError:
|
||||||
|
log.error(f"Watch directory '{watch_this}' does not exist. Please create it. Exiting 3 ...")
|
||||||
|
sys.exit(4)
|
||||||
|
else:
|
||||||
|
return inotify
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
validate_default_section(config)
|
validate_default_section(config)
|
||||||
if config_has_valid_section(config):
|
if config_has_valid_section(config):
|
||||||
@ -149,3 +166,24 @@ if __name__ == '__main__':
|
|||||||
log.debug(f"Iterating over config sections ...")
|
log.debug(f"Iterating over config sections ...")
|
||||||
for section in config.sections():
|
for section in config.sections():
|
||||||
log.debug(f"Processing section '[{section}]' ...")
|
log.debug(f"Processing section '[{section}]' ...")
|
||||||
|
|
||||||
|
watch_dir = config.get(section, "watch_dir")
|
||||||
|
inotify_watch = setup_watch(watch_dir)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
time.sleep(0.2)
|
||||||
|
for event in inotify_watch.read():
|
||||||
|
events = [str(flags) for flags in flags.from_mask(event.mask)]
|
||||||
|
if "flags.MOVED_TO" in events:
|
||||||
|
file_name = event.name
|
||||||
|
log.info(f"File '{file_name}' was moved to watch directory '{watch_dir}', processing ...")
|
||||||
|
|
||||||
|
# is_xauth = xauth_pattern.findall(event.name)
|
||||||
|
#if is_xauth and "flags.CREATE" in events:
|
||||||
|
# log.info(f"New .Xauthority file '{event.name}' detected")
|
||||||
|
# react_to_cec = True
|
||||||
|
# xauth_abs_path = xauth_dir + "/" + event.name
|
||||||
|
# set_xauth_env(xauth_abs_path)
|
||||||
|
#elif is_xauth and "flags.DELETE" in events:
|
||||||
|
# log.info(f".Xauthority file '{event.name}' was deleted")
|
||||||
|
# react_to_cec = False
|
Loading…
x
Reference in New Issue
Block a user