pythonでfoobarのalternativeを作る 14 version 8

2019/11/06 14:33 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
pythonでfoobarのalternativeを作る 14
190521 開発日記
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








      

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