pythonでfoobarのalternativeを作る 14 version 6
      
          :追加された部分
      
      
          :削除された部分
      
      
    (差分が大きい場合、文字単位では表示しません)
    pythonでfoobarのalternativeを作る 14190521 開発日記
## DBのGUIビューア(タグのビュー)
- 二枚組の CDの場合、ディスクの番号がないとトラックをソートできないが、このタグがわからなかった
DBのGUIビューアにドラッグでタグを表示するようにしてみた
タグはそのまんまで`discnumber`ね
https://live.staticflickr.com/65535/47109726104_49b06b3799_b.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
      190521 開発日記
DBのGUIビューア(タグのビュー)
- 二枚組の CDの場合、ディスクの番号がないとトラックをソートできないが、このタグがわからなかった
 DBのGUIビューアにドラッグでタグを表示するようにしてみた
- 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
