pythonでfoobarのalternativeを作る 7 version 3

2019/05/15 08:58 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
自分の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でテーブルとカラム取得してそれぞれの個数を表示する