123456789101112131415161718192021222324252627282930313233343536373839 |
- import os
- import fnmatch
- import mimetypes
- def scan_dir(dirname, extension=None):
- if extension is None:
- extension = '*'
- for root, dirnames, filenames in os.walk(dirname):
- for fname in fnmatch.filter(filenames, extension):
- yield os.path.join(root, fname)
- def multi_fnmatch(fname, extensions):
- for ext in extensions:
- if fnmatch.fnmatch(fname, '*.' + ext):
- return True
- return False
- def is_audio(fname):
- mimetype = mimetypes.guess_type(fname)[0]
- if mimetype is None:
- return False
- return mimetype.split('/')[0] == 'audio'
- def scan_dir_audio(dirname, extensions=('mp3', 'oga', 'wav', 'ogg')):
- for root, dirnames, filenames in os.walk(dirname):
- for fname in filenames:
- if is_audio(fname):
- yield os.path.join(root, fname)
- def shortname(path):
- name = os.path.basename(path) # filename
- name = name.rsplit('.', 1)[0] # no extension
- name = ''.join(c for c in name if c.isalnum()) # no strange chars
- return name
|