musicpom/utils/scan_for_music.py
billypom on debian 5adb760d83 scan files thread
2025-07-20 20:45:57 -04:00

34 lines
1.3 KiB
Python

import os
from utils.add_files_to_database import add_files_to_database
from configparser import ConfigParser
from pathlib import Path
from appdirs import user_config_dir
import glob
from concurrent.futures import ThreadPoolExecutor
def scan_for_music(progress_callback=None):
"""
Scans for audio files in user-defined paths
- Paths are defined in config file
- Accepted file extensions are defined in config file
- Adds found file to database
"""
if progress_callback:
progress_callback.emit('Scanning libraries...')
config = ConfigParser()
config.read(Path(user_config_dir(appname="musicpom", appauthor="billypom")) / "config.ini")
libraries = [path.strip() for path in config.get("settings", "library_path").split(',')]
extensions = config.get("settings", "extensions").split(",")
# Use each library as root dir, walk the dir and find files
for library in libraries:
files_to_add = []
for dirpath, _, filenames in os.walk(library):
for file in filenames:
filename = os.path.join(dirpath, file)
if any(filename.lower().endswith(ext) for ext in extensions):
files_to_add.append(filename)
add_files_to_database(files_to_add, progress_callback)