Демон Python для просмотра папки и обновления базы данных

Это специально предназначено для управления файлами MP3, но оно должно легко работать для любой структуры каталогов с большим количеством файлов.

Я хочу найти или написать демона (желательно на Python), который будет смотреть папку со многими вложенными папками, которые должны содержать X-число MP3-файлов. Каждый раз, когда файл добавляется, обновляется или удаляется, он должен отражать это в базе данных (желательно PostgreSQL). Я готов принять, если файл просто перемещен, что соответствующие строки удаляются и воссоздаются заново, но обновление существующих строк сделает меня самым счастливым.

  • Почему использование threading.Event приводит к тому, что SIGTERM не попадает?
  • Ведение журнала и / или stdout / stderr в Python Daemon
  • Вопрос о переполнении стека Управление большой коллекцией музыки имеет немного того, что я хочу.

    Я просто хочу, чтобы база данных могла делать то, что я хочу. Моя самая современная база данных на данный момент является моим файлом iTunes.xml , но я не хочу полагаться на это слишком сильно, так как не всегда хочу полагаться на iTunes для управления музыкой. Я вижу много проектов, которые делают немного того, что я хочу, но в формате, который либо я не могу получить, либо просто сложнее, чем я хочу. Если есть какой-то медиа-плеер, который может просматривать папку и обновлять базу данных, которая легко доступна, то я все для этого.

    Причина, по которой я склоняюсь к написанию собственного, заключается в том, что было бы неплохо выбрать мою базу данных и схему.

  • Почему использование threading.Event приводит к тому, что SIGTERM не попадает?
  • Список файлов в папке как поток для немедленного начала процесса
  • Как проверить тип файлов без расширений в python?
  • Ведение журнала и / или stdout / stderr в Python Daemon
  • 3 Solutions collect form web for “Демон Python для просмотра папки и обновления базы данных”

    Еще один ответ уже предложил pyinotify для Linux, позвольте мне добавить watch_directory для Windows (хорошее обсуждение возможностей в Windows здесь , пример модуля) и fsevents на Mac (к сожалению, я не думаю, что есть один кросс-платформенный модуль предлагая единый интерфейс для этих различных системных способов получения уведомлений об изменении каталога).

    Как только вам удастся получить такие события, обновление соответствующей базы данных SQL прост! -)

    Если вы используете Linux, вы можете использовать PyInotify .

    inotify может уведомлять вас о событиях файловой системы, когда ваша программа запущена.

    IMO, лучший медиаплеер, у которого есть эти функции, – Winamp . Он перетаскивает музыкальные папки каждые X минут, чего достаточно для музыки (но, конечно, немного менее эффективно, чем позволить операционной системе следить за изменениями).

    Но поскольку вы просили предложения по написанию своих собственных, вы можете использовать pyinotify (только для Linux). Если вы используете Windows, вы можете использовать вызов ReadDirectoryChangesW API

    Python - лучший язык программирования в мире.