--- Title: pythonでfoobarのalternativeを作る 12 Author: yamasyuh68 Web: https://mimemo.io/m/eQDXzlaNd34Pvwk --- 190519 開発 ## DBからTreeViewを作る - まずDBを綺麗にソートしておく必要 foobarでは、`albumartist`でソートするようにしている。この場合、データとして`artist`はあるけど`albumartist`が無い場合、自動的に`artist`のデータでソートされている。これを実装するために、データベース作成時に、`albumartist`が無い場合は`artist`のデータを`albumartist`に設定するようにした。 - データ設定のsql文はプレースホルダーにして、変数はタプルで与えるようにしてある。上記`albumartist`の値の変更はタプルを作ったあとで書き換えるようにした。これは現実には不可能なので、いったんリストに変換してから値を変更し、タプルに戻すようにしてみた ``` for tag in tags: try : tup += m[tag][0], # add tag-value to tupple except: tup += None, if tup[3]==None and tup[2]!=None : # albumartist がnoneでartistがある場合 temp=list(tup) # albumartist をartist にする temp[3]=tup[2] tup=tuple(temp) c.execute(com2,tup) ``` - ソートは order でイケるが、order を重ねる場合の書き方など、色々調べるためにまずビューアを少し改造して、いろんなsql文を実行できるようにしてみた。 textCtrlとボタンを一行追加するだけなのでUIの変更は簡単 ビルダーでGUIを組んでおくとこういう変更が簡単ですごく良い - データ作成の際の第一段階の位置づけだったmdate を入れておいた。直すところ結構あってエラーでまくりだった┐('д')┌ - ビューアでorderの実験をしたところ概ねイケたんだけど、`tracknumber` が1の次は10になってしまう症状が出た。桁数の問題。foobarをみたら、1は01になってる。基本二桁にしておいた方が良いようだ。 ただし`1`にしても`1/15`みたいなパターンもある `tracknumber`については`mutagen`で取得したデータはそのままでは使えない、どうするか?? - 下準備ばかりでTreeViewまでたどり着かなかった┐('д')┌ とりあえずGUIでTreeを実装してみようかな・・