pythonでfoobarのalternativeを作る 7 version 3
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
自分のPCの音楽ファイルをタグでデータベース化 7
mutagen.File
これでいけた~!
- 190514 の開発日記
## Mutagen の使い方
mutagen の関数がファイル毎になっていて面倒でどうにかならんかなあと思って調べたら`mutagen.File`がオールマイティみたいだったので試したらいけた
```
import glob ,re , os ,mutagen
import sqlite3
import time
# mutagen.File 利用
count={'all':0 , 'mfile':0 , 'nonemusic':0 , 'file':0}
tags={'title':'','album':'','artist':'','track':''}
fo=r'i:\Music\Jazz\**'
conn = sqlite3.connect(r'e:\Programs\python\_研究\database\database.db')
c = conn.cursor()
c.execute('create table IF NOT EXISTS musics(fullpath text, mdata,title,track,album ,artist)')
start = time.time()
for p in glob.iglob(fo , recursive=True):
count['all']+=1
if os.path.isfile(p):
count['file']+=1
if re.search('\.(mp3|ape|ogg|flac|aac|mp4|m4a)$', p):
count['mfile']+=1
m = mutagen.File(p, easy=True)
for tag in tags.keys():
try :
tags[tag]=m[tag][0]
except:
tags[tag]=None
c.execute( "INSERT INTO musics (fullpath, title,track,album ,artist) VALUES (?,?,?,?,?)" ,
( p , tags['title'],tags['track'],tags['album'],tags['artist'] ))
for tag in tags.keys():
tags[tag]=None
else:
count['nonemusic']+=1
continue
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")
c.execute('select count (*) from musics')
print('data--{0}'.format(c.fetchall()))
print(count)
conn.commit()
conn.close()
```
まずGUIのDBウーテxyリティ作ろう
DDでテーブルとカラム取得してそれぞれの個数を表示する
- 190514 の開発日記
Mutagen の使い方
mutagen の関数がファイル毎になっていて面倒でどうにかならんかなあと思って調べたらmutagen.File
がオールマイティみたいだったので試したらいけた
import glob ,re , os ,mutagen
import sqlite3
import time
# mutagen.File 利用
count={'all':0 , 'mfile':0 , 'nonemusic':0 , 'file':0}
tags={'title':'','album':'','artist':'','track':''}
fo=r'i:\Music\Jazz\**'
conn = sqlite3.connect(r'e:\Programs\python\_研究\database\database.db')
c = conn.cursor()
c.execute('create table IF NOT EXISTS musics(fullpath text, mdata,title,track,album ,artist)')
start = time.time()
for p in glob.iglob(fo , recursive=True):
count['all']+=1
if os.path.isfile(p):
count['file']+=1
if re.search('\.(mp3|ape|ogg|flac|aac|mp4|m4a)$', p):
count['mfile']+=1
m = mutagen.File(p, easy=True)
for tag in tags.keys():
try :
tags[tag]=m[tag][0]
except:
tags[tag]=None
c.execute( "INSERT INTO musics (fullpath, title,track,album ,artist) VALUES (?,?,?,?,?)" ,
( p , tags['title'],tags['track'],tags['album'],tags['artist'] ))
for tag in tags.keys():
tags[tag]=None
else:
count['nonemusic']+=1
continue
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")
c.execute('select count (*) from musics')
print('data--{0}'.format(c.fetchall()))
print(count)
conn.commit()
conn.close()
まずGUIのDBウーテxyリティ作ろう
DDでテーブルとカラム取得してそれぞれの個数を表示する