pythonでfoobarのalternativeを作る version 20

2019/05/07 17:11 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
自分のPCの音楽ファイルをタグでデータベース化
# 自分のPCの音楽ファイルをタグでデータベース化したい
- 要するに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
データベースを作って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'
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)

      

自分のPCの音楽ファイルをタグでデータベース化したい

  • 要するにfoobar2000を自分で作ってみたいって事です
    なぜならLinuxバージョンが無いから┐('д')┌
    プレイリスト作って音を鳴らすだけならどうとでもなるけど、ライブラリ機能が死ぬほど便利なので作ってみたかったのさ

とりあえず必要となる項目と解説サイトを調べてみた

作ってみるか

  • 新規作成
    ファイル列挙して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/プログラミング/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)