mirror of
https://github.com/tcsenpai/swingmusic.git
synced 2025-06-07 03:35:35 +00:00
add folderslib
This commit is contained in:
parent
b3dac9ee23
commit
b7ed9c005d
74
server/app/lib/folderslib.py
Normal file
74
server/app/lib/folderslib.py
Normal file
@ -0,0 +1,74 @@
|
||||
import time
|
||||
from typing import List
|
||||
from app import api, helpers, models
|
||||
from progress.bar import Bar
|
||||
|
||||
|
||||
def get_valid_folders() -> None:
|
||||
for track in api.TRACKS:
|
||||
api.VALID_FOLDERS.add(track.folder)
|
||||
|
||||
|
||||
def get_folder_track_count(foldername: str) -> int:
|
||||
"""
|
||||
Returns the number of files associated with a folder.
|
||||
"""
|
||||
track_list = [track for track in api.TRACKS if foldername in track.folder]
|
||||
return len(track_list)
|
||||
|
||||
|
||||
|
||||
def create_folder(foldername: str) -> models.Folder:
|
||||
"""Create a single Folder object"""
|
||||
folder = {
|
||||
"name": foldername.split("/")[-1],
|
||||
"path": foldername + "/",
|
||||
"trackcount": get_folder_track_count(foldername),
|
||||
}
|
||||
|
||||
return models.Folder(folder)
|
||||
|
||||
|
||||
def create_all_folders(foldernames: List[str]) -> List[models.Folder]:
|
||||
folders_: List[models.Folder] = []
|
||||
_bar = Bar("Creating folders", max=len(foldernames))
|
||||
|
||||
for foldername in foldernames:
|
||||
folder = create_folder(foldername)
|
||||
folders_.append(folder)
|
||||
_bar.next()
|
||||
_bar.finish()
|
||||
|
||||
return folders_
|
||||
|
||||
|
||||
def get_subdirs(foldername: str) -> List[models.Folder]:
|
||||
"""
|
||||
Finds and Creates models.Folder objects for each sub-directory string in the foldername passed.
|
||||
"""
|
||||
subdirs = set()
|
||||
|
||||
for folder in api.VALID_FOLDERS:
|
||||
str0 = folder.replace(foldername, "")
|
||||
str1 = str0.split("/")[0]
|
||||
|
||||
if str1 != "":
|
||||
subdirs.add(foldername + str1)
|
||||
|
||||
|
||||
return [create_folder(dir) for dir in subdirs]
|
||||
|
||||
|
||||
@helpers.background
|
||||
def run_scandir():
|
||||
flag = False
|
||||
|
||||
while flag is False:
|
||||
get_valid_folders()
|
||||
folders_ = create_all_folders(api.VALID_FOLDERS)
|
||||
"""Create all the folder objects before clearing api.FOLDERS"""
|
||||
|
||||
api.FOLDERS.clear()
|
||||
api.FOLDERS.extend(folders_)
|
||||
|
||||
time.sleep(300)
|
Loading…
x
Reference in New Issue
Block a user