--- Title: pythonでfoobarのalternativeを作る 14 Author: yamasyuh68 Web: https://mimemo.io/m/kP8LAlbmpKoB7YZ --- 190521 開発 ## DBのGUIビューア(タグのビュー) - 二枚組の CDの場合、ディスクの番号がないとトラックをソートできないが、このタグがわからなかった DBのGUIビューアにドラッグでタグを表示するようにしてみた https://live.staticflickr.com/65535/47972138516_09ef52c8c6_z.jpg - mutagenはタグを辞書で返す。prntするのは簡単だけどGUIに表示するのはちょっと面倒で、要素を一つ一つ取り出さなければならない forのイテレータにするとキーの文字列が順番に返る そこから要素を取得してリストボックスに追加した mutagenはタグを辞書で返すが、各要素もリストになってるので[0]で取り出すことになる ``` self.m_listBox1.Clear() m = mutagen.File(fname[0], easy=True) for n in m: self.m_listBox1.Append(n + ' : ' + m[n][0]) ``` - ちなみにタグはそのまんまで`discnumber`だった DBに追加するときは必ずこのタグも取得しなくちゃいけないなあ ほとんどエラーになるってわかってるけどね(¯―¯٥) ----- ## DB作成 - treeにしてみてこっちに戻ってきた やはりDB作成の際にソートしてtree表示しやすいように作っておくのが良いと思うようになった 演奏中のタグ表示は改めて取得し直せば良い、多分foobarはそうしてる DBの項目としては、 - ①albumartist あればそれ、無ければartist、それでもなければ`?` - ②date と album [date]album として一つのカラムにしておく - ③tracknumber と title これもつなげて一つのカラム、なおtracknumberは二桁表示 tracknumberが無い場合は`?`、両方無い場合はファイル名とする tracknumberに`/`がある場合は削除、discが二枚の場合は2.01のような表示だが出来るかな? - こうしてみるとDBに加えるのは第一段階で fullpath とmdate、第二段階で上の3つって事になる 結構DBの中身変わることになるかなあ(・_・?) # 二段階合体の実用化DB構想 新規と更新いずれも使えること <モニタとして使えること> ``` class makedb(): init self.db=r'' folda=[r'' ] col=['path','mdate','flag','artist','album','title'] # DB開く、cを引数で渡すか for f in folda: print('first step....') self.first(f) print('second step....') self.second() # DB閉じる def first(self,f): #フルパスとmdate挿入、成功したらそのまま、失敗したらmdate比較して同じならそのまま、違ってたら # mdateをupdateしてflagをnullに戻す def second(self): # DBからflagのNoneを抽出しMutagenで取得したタグをDBにupdate def moniter(): # 更新ファイルを取得したらDBのflagをnullに戻してsecond を呼ぶ ``` - kaomoji