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