--- Title: pythonでfoobarのalternativeを作る Author: yamasyuh68 Web: https://mimemo.io/m/daJjOoYLwpGEyDM --- # 自分のPCの音楽ファイルをタグでデータベース化したい 20190507 - 要するにfoobar2000を自分で作ってみたいって事です なぜならLinuxバージョンが無いから┐('д')┌ プレイリスト作って音を鳴らすだけならどうとでもなるけど、ライブラリ機能が死ぬほど便利なので作ってみたかったのさ ## とりあえず必要となる項目と解説サイトを調べてみた - ファイル列挙 Pythonで条件を満たすパスの一覧を再帰的に取得するglobの使い方 https://note.nkmk.me/python-glob-usage/ https://docs.python.org/ja/3/library/glob.html 公式 - フォルダ監視 pythonでフォルダを監視する https://python-minutes.blogspot.com/2017/06/python.html ファイル監視にwatchdogがかなり便利な件 https://qiita.com/PyYoshi@github/items/9744a138c018734c69db - タグ取得 Pythonでmp3などのID3タグを編集するmutagenの使い方 https://note.nkmk.me/python-mutagen-mp3-id3/ - データベース化 PythonからSQLite3で初めてのデータベース! https://qiita.com/DNA1980/items/1fbcb95e8ee5771d6b2b https://www.htmllifehack.xyz/entry/2018/08/03/231351 データベースを作って100件くらい追加してみたいな # 作ってみるか - 新規作成 ファイル列挙して1ファイルづつタグ取得、データベースに追加の流れだな、理屈は簡単、高速化をどの程度実現できるかだけど遅くても別にいいや - アプリ起動時 対象フォルダをスキャンすることになる、その際にほとんどが重複データ、これを無視するルーチンが大事だよなあ 重複データをデータベースに入れないためにはどうするんじゃろ? - アプリ起動中 フォルダ監視時はある程度時間かけて更新すれば良い - 重複レコード関係 python SQLite3の重複しているレコードの削除 http://macrobibouroku.blog.jp/archives/26916527.html sqliteにinsertする際に要素の重複を防ぐ方法 https://teratail.com/questions/67946 [SQLite3]すでに取得済みのデータは新規で追加せず更新だけする https://code-schools.com/sqlite3-replace/ レコードがなければ追加、あれば更新を一度に実行できる『UPSERT』とは https://web-academia.org/it_business_web_development/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/482/ - 拡張子 mp3 flv ape ogg wav aac mp4 m4a フルパス、タグ無ければブランクでしょうがない artist,alubumartist,alubum,title,year import glob ,re , os ext='mp3' , 'flv', 'ape', 'ogg', 'wav', 'aac', 'mp4', 'm4a' for p in glob.iglob('temp/**' , recursive=True): if os.path.isfile(p): if re.search('.(mp3|flv|ape|ogg|aac|mp4|m4a)', p)]): print(p) # pip install mutagen from mutagen.easyid3 import EasyID3 tags = EasyID3(path) print( tags['title'] ) ''' artist albumartist album date title tracknumber ''' linuxだとこれが良いとの情報あり Guayadeque Music Player