2010-02-22 51 views
4

這是專門用於管理MP3文件,但它應該很容易適用於任何具有大量文件的目錄結構。Python守護進程觀看文件夾並更新數據庫

我想找到或編寫一個守護進程(最好在Python),將觀看文件夾很多子應該都包含MP3文件的X號。每當文件被添加,更新或刪除時,它都應該反映在數據庫中(最好是PostgreSQL)。我願意接受如果簡單地移動一個文件,刪除並重新創建相應的行,但更新現有行將使我最快樂。

堆棧溢出問題Managing a large collection of music有一點我想要的。

我基本上只想要一個數據庫,然後我可以做任何我想要的。截至目前,我的最新數據庫是我的iTunes.xml文件,但我不想過多地依賴這個數據庫,因爲我並不總是想依靠iTunes來進行音樂管理。我看到很多項目都做了一些我想要的東西,但是採用了我無法訪問的格式,或者比我想要的更復雜。如果有一些媒體播放器可以觀看文件夾並更新容易訪問的數據庫,那麼我就是爲了它。

我傾向於寫我自己的原因是因爲這將是很好的選擇我的數據庫和架構自己。

回答

8

另一個答案已經建議pyinotify爲Linux,讓我補充watch_directory的Windows(在Windows中的可能性了很好的討論是here,該模塊是一個例子)上fsevents Mac(不幸的是,我不認爲有一個跨平臺的模塊提供統一的接口來獲取這些各種系統特定的方式來獲取目錄變更通知事件)。

一旦你設法讓這樣的事件,更新適當的SQL數據庫是簡單的 - - !)

3

如果你使用Linux,你可以使用PyInotify。你的程序運行時

inotify可以通知你有關文件系統事件。

+0

+1這樣的事情是完全inotify的是什麼 – prestomation 2010-02-22 23:01:04

0

IMO,具有這些特性的最佳媒體播放器Winamp。它每隔X分鐘重新掃描一次音樂文件夾,這對音樂來說足夠了(但當然效率比讓操作系統監視變化的效率低一些)。

但正如你問的建議編寫自己的,你可以做(​​僅用於Linux)使用pyinotify的。如果你正在運行的是Windows,你可以使用ReadDirectoryChangesW API call

+0

它可以連接到一個數據庫?我怎樣才能訪問它的數據? – TheLizardKing 2010-02-22 23:04:22

+0

猜你的意思是Winamp數據庫?!它存儲在'〜\ Application Data \ Winamp \ Plugins \ ml \ main。*'(當然是在Windows上)並且具有特殊的文件格式,在http://gutenberg.free.fr/fichiers/SDK%20Winamp/nde_specs_v1 .txt如果你想操縱它 - 你並不需要,你爲什麼要編輯數據庫,如果Winamp提供了一切必要的東西? – AndiDog 2010-02-22 23:10:22

+1

我不一定需要音樂播放器。我正在尋找一種方法將所有我的集合的元數據存儲在數據庫中。 – TheLizardKing 2010-02-22 23:12:32