Python守护进程监控文件夹并更新数据库
这段内容主要是关于如何管理MP3文件的,但其实也适用于任何有很多文件的文件夹结构。
我想找一个程序(最好是用Python写的),它能监控一个有很多子文件夹的文件夹,这些子文件夹里应该都有X个MP3文件。每当有文件被添加、更新或删除时,这个程序应该能把这些变化记录到一个数据库里(最好是PostgreSQL)。如果文件只是被移动了,我可以接受相应的数据库记录被删除然后重新创建,但如果能更新现有的记录,那就太好了。
在Stack Overflow上,有个问题管理大量音乐文件,里面有一些我想要的内容。
我基本上就是想要一个数据库,之后可以随意操作。现在我最新的数据库是我的iTunes.xml
文件,但我不想太依赖这个,因为我不想总是依赖iTunes来管理我的音乐。我看到有很多项目做了一些我想要的功能,但它们的格式要么我无法访问,要么太复杂了。如果有哪个媒体播放器可以监控一个文件夹并更新一个容易访问的数据库,那我非常乐意使用。
我倾向于自己写这个程序,因为这样我可以自己选择数据库和数据结构。
3 个回答
在我看来,最好的媒体播放器是 Winamp。它每隔一段时间就会重新扫描音乐文件夹,这对于音乐来说已经足够了(不过比起让操作系统自动监控变化,效率稍微低一点)。
但是既然你在问如何自己写一个播放器,你可以使用 pyinotify(这个只适用于Linux系统)。如果你是在Windows上,可以使用 ReadDirectoryChangesW API调用。
之前有个回答提到了适用于Linux的pyinotify,我想补充一下适用于Windows的watch_directory(关于Windows的各种可能性讨论可以在这里找到,这个模块就是个例子),还有适用于Mac的fsevents(可惜的是,我觉得没有一个跨平台的模块能提供统一的接口来处理这些不同系统特有的目录变化通知事件)。
一旦你能够获取这些事件,更新相应的SQL数据库就简单多了!-)