Демон Python для просмотра папки и обновления базы данных - PullRequest
4 голосов
/ 23 февраля 2010

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

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

Вопрос переполнения стека Управление большой коллекцией музыки имеет мало того, что я хочу.

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

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

Ответы [ 3 ]

8 голосов
/ 23 февраля 2010

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

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

3 голосов
/ 23 февраля 2010

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

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

0 голосов
/ 23 февраля 2010

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

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

...