fsutils.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. import fnmatch
  3. import mimetypes
  4. def scan_dir(dirname, extension=None):
  5. if extension is None:
  6. extension = "*"
  7. for root, dirnames, filenames in os.walk(dirname):
  8. for fname in fnmatch.filter(filenames, extension):
  9. yield os.path.join(root, fname)
  10. def multi_fnmatch(fname, extensions):
  11. for ext in extensions:
  12. if fnmatch.fnmatch(fname, "*." + ext):
  13. return True
  14. return False
  15. def is_audio(fname):
  16. mimetype = mimetypes.guess_type(fname)[0]
  17. if mimetype is None:
  18. return False
  19. return mimetype.split("/")[0] == "audio"
  20. def scan_dir_audio(dirname, extensions=("mp3", "oga", "wav", "ogg")):
  21. for root, dirnames, filenames in os.walk(dirname):
  22. for fname in filenames:
  23. if is_audio(fname):
  24. yield os.path.join(root, fname)
  25. def shortname(path):
  26. name = os.path.basename(path) # filename
  27. name = name.rsplit(".", 1)[0] # no extension
  28. name = "".join(c for c in name if c.isalnum()) # no strange chars
  29. return name