Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python daemon to watch a folder and update a database

This is specifically geared towards managing MP3 files, but it should easily work for any directory structure with a lot of files.

I want to find or write a daemon (preferably in Python) that will watch a folder with many subfolders that should all contain X number of MP3 files. Any time a file is added, updated or deleted, it should reflect that in a database (preferably PostgreSQL). I am willing to accept if a file is simply moved that the respective rows are deleted and recreated anew but updating existing rows would make me the happiest.

The Stack Overflow question Managing a large collection of music has a little of what I want.

I basically just want a database that I can then do whatever I want to with. My most up-to-date database as of now is my iTunes.xml file, but I don't want to rely on that too much as I don't always want to rely on iTunes for my music management. I see plenty of projects out there that do a little of what I want but in a format that either I can't access or is just more complex than I want. If there is some media player out there that can watch a folder and update a database that is easily accessible then I am all for it.

The reason I'm leaning towards writing my own is because it would be nice to choose my database and schema myself.

like image 841
TheLizardKing Avatar asked Dec 22 '22 05:12

TheLizardKing


1 Answers

Another answer already suggested pyinotify for Linux, let me add watch_directory for Windows (a good discussion of the possibilities in Windows is here, the module's an example) and fsevents on the Mac (unfortunately I don't think there's a single cross-platform module offering a uniform interface to these various system-specific ways to get directory-change notification events).

Once you manage to get such events, updating an appropriate SQL database is simple!-)

like image 183
Alex Martelli Avatar answered Dec 28 '22 19:12

Alex Martelli