swingmusic/server/app/lib/trackslib.py
geoffrey45 dbb27734fe major refactors
- add album page store
- show loaders in beforeEnter guards
- show bitrate on now playing card
- etc
2022-04-03 01:03:32 +03:00

58 lines
1.4 KiB
Python

"""
This library contains all the functions related to tracks.
"""
import os
from typing import List
from app import models, instances
from app.lib import albumslib
from app.helpers import remove_duplicates
from app import api
from progress.bar import Bar
def create_all_tracks() -> List[models.Track]:
"""
Gets all songs under the ~/ directory.
"""
tracks: list[models.Track] = []
_bar = Bar("Creating tracks", max=len(api.PRE_TRACKS))
for track in api.PRE_TRACKS:
try:
os.chmod(track["filepath"], 0o755)
except FileNotFoundError:
instances.songs_instance.remove_song_by_filepath(track["filepath"])
album = albumslib.find_album(track["album"], track["albumartist"])
track["image"] = album.image
tracks.append(models.Track(track))
_bar.next()
_bar.finish()
api.TRACKS.clear()
api.TRACKS.extend(tracks)
def get_album_tracks(albumname, artist):
"""Returns api tracks matching an album"""
_tracks: List[models.Track] = []
for track in api.TRACKS:
if track.album == albumname and track.albumartist == artist:
_tracks.append(track)
return remove_duplicates(_tracks)
def get_track_by_id(trackid: str) -> models.Track:
"""Returns api track matching an id"""
for track in api.TRACKS:
if track.trackid == trackid:
return track