diff --git a/server/app/api/folder.py b/server/app/api/folder.py index a02b1e95..306fabc8 100644 --- a/server/app/api/folder.py +++ b/server/app/api/folder.py @@ -12,7 +12,6 @@ from app.lib import folderslib folder_bp = Blueprint("folder", __name__, url_prefix="/") from app import helpers -import time @folder_bp.route("/folder", methods=["POST"]) diff --git a/server/app/api/track.py b/server/app/api/track.py index e4f57595..2830d86c 100644 --- a/server/app/api/track.py +++ b/server/app/api/track.py @@ -20,10 +20,11 @@ def send_track_file(trackid): for file in api.PRE_TRACKS if file["_id"]["$oid"] == trackid ][0] - return send_file(filepath, mimetype="audio/mp3") - except FileNotFoundError: + except (FileNotFoundError, IndexError): return "File not found", 404 + return send_file(filepath, mimetype="audio/mp3") + @track_bp.route("/sample") def get_sample_track(): diff --git a/server/app/functions.py b/server/app/functions.py index 70d4ff19..dbeb07dd 100644 --- a/server/app/functions.py +++ b/server/app/functions.py @@ -8,7 +8,6 @@ from io import BytesIO import random import datetime from typing import List -from flask import request import mutagen import urllib @@ -24,10 +23,8 @@ from PIL import Image from app import helpers from app import instances from app import settings, models -from app.lib import albumslib from app import api -from app.lib import watchdoge -from app.lib import folderslib +from app.lib import watchdoge, folderslib, playlistlib, albumslib @helpers.background @@ -73,7 +70,7 @@ def populate(): upsert_id = instances.songs_instance.insert_song(tags) if upsert_id is not None: - tags["_id"] = {"$oid": upsert_id} + tags["_id"] = {"$oid": str(upsert_id)} api.PRE_TRACKS.append(tags) _bar.next() @@ -81,6 +78,7 @@ def populate(): albumslib.create_everything() folderslib.run_scandir() + playlistlib.create_all_playlists() end = time.time() @@ -199,11 +197,10 @@ def save_t_colors(): _bar.finish() -def extract_thumb(audio_file_path: str) -> str: +def extract_thumb(audio_file_path: str, webp_path: str) -> str: """ Extracts the thumbnail from an audio file. Returns the path to the thumbnail. """ - webp_path = audio_file_path.split("/")[-1] + ".webp" img_path = os.path.join(settings.THUMBS_PATH, webp_path) if os.path.exists(img_path): @@ -221,7 +218,7 @@ def extract_thumb(audio_file_path: str) -> str: try: png = img.convert("RGB") small_img = png.resize((250, 250), Image.ANTIALIAS) - small_img.save(img_path, format="webp") + small_img.save(webp_path, format="webp") except: return None @@ -379,6 +376,7 @@ def get_all_albums() -> List[models.Album]: """ Returns a list of album objects for all albums in the database. """ + albums: List[models.Album] = [] _bar = Bar("Creating albums", max=len(api.PRE_TRACKS)) diff --git a/server/app/lib/albumslib.py b/server/app/lib/albumslib.py index 38875c70..442b30c8 100644 --- a/server/app/lib/albumslib.py +++ b/server/app/lib/albumslib.py @@ -5,7 +5,7 @@ This library contains all the functions related to albums. from pprint import pprint import urllib from typing import List -from app import models, functions, helpers +from app import models, functions from app.lib import trackslib from app import api @@ -19,7 +19,11 @@ def create_everything() -> List[models.Track]: api.ALBUMS.clear() api.ALBUMS.extend(albums) - trackslib.create_all_tracks() + + tracks = trackslib.create_all_tracks() + + api.TRACKS.clear() + api.TRACKS.extend(tracks) def get_album_duration(album: list) -> int: @@ -41,7 +45,8 @@ def get_album_image(album: list) -> str: """ for track in album: - img = functions.extract_thumb(track["filepath"]) + img_p = track["album"] + track["albumartist"] + ".webp" + img = functions.extract_thumb(track["filepath"], webp_path=img_p) if img is not None: return img diff --git a/server/app/lib/trackslib.py b/server/app/lib/trackslib.py index fc400438..c5e423b4 100644 --- a/server/app/lib/trackslib.py +++ b/server/app/lib/trackslib.py @@ -18,12 +18,13 @@ def create_all_tracks() -> List[models.Track]: 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"]) + api.PRE_TRACKS.remove(track) album = albumslib.find_album(track["album"], track["albumartist"]) @@ -34,8 +35,7 @@ def create_all_tracks() -> List[models.Track]: _bar.finish() - api.TRACKS.clear() - api.TRACKS.extend(tracks) + return tracks def get_album_tracks(albumname, artist): @@ -54,4 +54,3 @@ def get_track_by_id(trackid: str) -> models.Track: for track in api.TRACKS: if track.trackid == trackid: return track - diff --git a/server/app/prep.py b/server/app/prep.py index 33025b47..170015d0 100644 --- a/server/app/prep.py +++ b/server/app/prep.py @@ -26,8 +26,15 @@ def create_config_dir() -> None: path = os.path.join(config_folder, _dir) try: + os.path.exists(path) + except FileNotFoundError: os.makedirs(path) - except FileExistsError: - pass + os.chmod(path, 0o755) - os.chmod(path, 0o755) + if _dir == dirs[3]: + default_thumbnails_path = "../setup/default-images/thumbnails" + + try: + os.path.exists(os.path.join(path, "defaults")) + except FileNotFoundError: + pass diff --git a/server/app/settings.py b/server/app/settings.py index d0df16db..8128d70a 100644 --- a/server/app/settings.py +++ b/server/app/settings.py @@ -19,3 +19,16 @@ IMG_THUMB_URI = IMG_BASE_URI + "thumbnails/" DEFAULT_ARTIST_IMG = IMG_ARTIST_URI + "0.webp" LAST_FM_API_KEY = "762db7a44a9e6fb5585661f5f2bdf23a" + +P_COLORS = [ + "rgb(4, 40, 196)", + "rgb(196, 4, 68)", + "rgb(4, 99, 59)", + "rgb(161, 87, 1)", + "rgb(1, 161, 22)", + "rgb(116, 1, 161)", + "rgb(0, 0, 0)", + "rgb(95, 95, 95)", + "rgb(141, 132, 2)", + "rgb(141, 11, 2)", +] diff --git a/server/setup/default-images/0.webp b/server/setup/default-images/0.webp deleted file mode 100644 index e7872e6b..00000000 Binary files a/server/setup/default-images/0.webp and /dev/null differ diff --git a/server/setup/default-images/1.webp b/server/setup/default-images/1.webp deleted file mode 100644 index 94dd613c..00000000 Binary files a/server/setup/default-images/1.webp and /dev/null differ diff --git a/server/setup/default-images/10.webp b/server/setup/default-images/10.webp deleted file mode 100644 index e7872e6b..00000000 Binary files a/server/setup/default-images/10.webp and /dev/null differ diff --git a/server/setup/default-images/2.webp b/server/setup/default-images/2.webp deleted file mode 100644 index 4d74a705..00000000 Binary files a/server/setup/default-images/2.webp and /dev/null differ diff --git a/server/setup/default-images/3.webp b/server/setup/default-images/3.webp deleted file mode 100644 index 73427dce..00000000 Binary files a/server/setup/default-images/3.webp and /dev/null differ diff --git a/server/setup/default-images/4.webp b/server/setup/default-images/4.webp deleted file mode 100644 index 05019baa..00000000 Binary files a/server/setup/default-images/4.webp and /dev/null differ diff --git a/server/setup/default-images/5.webp b/server/setup/default-images/5.webp deleted file mode 100644 index 8c353bd8..00000000 Binary files a/server/setup/default-images/5.webp and /dev/null differ diff --git a/server/setup/default-images/6.webp b/server/setup/default-images/6.webp deleted file mode 100644 index 99321ff3..00000000 Binary files a/server/setup/default-images/6.webp and /dev/null differ diff --git a/server/setup/default-images/7.webp b/server/setup/default-images/7.webp deleted file mode 100644 index d61e1804..00000000 Binary files a/server/setup/default-images/7.webp and /dev/null differ diff --git a/server/setup/default-images/8.webp b/server/setup/default-images/8.webp deleted file mode 100644 index 0ea134f9..00000000 Binary files a/server/setup/default-images/8.webp and /dev/null differ diff --git a/server/setup/default-images/9.webp b/server/setup/default-images/9.webp deleted file mode 100644 index 9e000e3a..00000000 Binary files a/server/setup/default-images/9.webp and /dev/null differ diff --git a/server/setup/default-images/thumbnails/0.webp b/server/setup/default-images/thumbnails/0.webp new file mode 100644 index 00000000..c0cc614a Binary files /dev/null and b/server/setup/default-images/thumbnails/0.webp differ diff --git a/server/setup/default-images/thumbnails/1.webp b/server/setup/default-images/thumbnails/1.webp new file mode 100644 index 00000000..e2d20e3a Binary files /dev/null and b/server/setup/default-images/thumbnails/1.webp differ diff --git a/server/setup/default-images/thumbnails/10.webp b/server/setup/default-images/thumbnails/10.webp new file mode 100644 index 00000000..86f47262 Binary files /dev/null and b/server/setup/default-images/thumbnails/10.webp differ diff --git a/server/setup/default-images/thumbnails/11.webp b/server/setup/default-images/thumbnails/11.webp new file mode 100644 index 00000000..e287556e Binary files /dev/null and b/server/setup/default-images/thumbnails/11.webp differ diff --git a/server/setup/default-images/thumbnails/12.webp b/server/setup/default-images/thumbnails/12.webp new file mode 100644 index 00000000..340b5fd7 Binary files /dev/null and b/server/setup/default-images/thumbnails/12.webp differ diff --git a/server/setup/default-images/thumbnails/13.webp b/server/setup/default-images/thumbnails/13.webp new file mode 100644 index 00000000..4bebe508 Binary files /dev/null and b/server/setup/default-images/thumbnails/13.webp differ diff --git a/server/setup/default-images/thumbnails/14.webp b/server/setup/default-images/thumbnails/14.webp new file mode 100644 index 00000000..4f348c24 Binary files /dev/null and b/server/setup/default-images/thumbnails/14.webp differ diff --git a/server/setup/default-images/thumbnails/15.webp b/server/setup/default-images/thumbnails/15.webp new file mode 100644 index 00000000..64f6df15 Binary files /dev/null and b/server/setup/default-images/thumbnails/15.webp differ diff --git a/server/setup/default-images/thumbnails/16.webp b/server/setup/default-images/thumbnails/16.webp new file mode 100644 index 00000000..15c1797f Binary files /dev/null and b/server/setup/default-images/thumbnails/16.webp differ diff --git a/server/setup/default-images/thumbnails/17.webp b/server/setup/default-images/thumbnails/17.webp new file mode 100644 index 00000000..d515661c Binary files /dev/null and b/server/setup/default-images/thumbnails/17.webp differ diff --git a/server/setup/default-images/thumbnails/18.webp b/server/setup/default-images/thumbnails/18.webp new file mode 100644 index 00000000..0ef1c032 Binary files /dev/null and b/server/setup/default-images/thumbnails/18.webp differ diff --git a/server/setup/default-images/thumbnails/19.webp b/server/setup/default-images/thumbnails/19.webp new file mode 100644 index 00000000..a3edbdd9 Binary files /dev/null and b/server/setup/default-images/thumbnails/19.webp differ diff --git a/server/setup/default-images/thumbnails/2.webp b/server/setup/default-images/thumbnails/2.webp new file mode 100644 index 00000000..94e9e51c Binary files /dev/null and b/server/setup/default-images/thumbnails/2.webp differ diff --git a/server/setup/default-images/thumbnails/20.webp b/server/setup/default-images/thumbnails/20.webp new file mode 100644 index 00000000..2761f847 Binary files /dev/null and b/server/setup/default-images/thumbnails/20.webp differ diff --git a/server/setup/default-images/thumbnails/3.webp b/server/setup/default-images/thumbnails/3.webp new file mode 100644 index 00000000..567b7828 Binary files /dev/null and b/server/setup/default-images/thumbnails/3.webp differ diff --git a/server/setup/default-images/thumbnails/4.webp b/server/setup/default-images/thumbnails/4.webp new file mode 100644 index 00000000..daeee325 Binary files /dev/null and b/server/setup/default-images/thumbnails/4.webp differ diff --git a/server/setup/default-images/thumbnails/5.webp b/server/setup/default-images/thumbnails/5.webp new file mode 100644 index 00000000..36bb172c Binary files /dev/null and b/server/setup/default-images/thumbnails/5.webp differ diff --git a/server/setup/default-images/thumbnails/6.webp b/server/setup/default-images/thumbnails/6.webp new file mode 100644 index 00000000..d1bb3042 Binary files /dev/null and b/server/setup/default-images/thumbnails/6.webp differ diff --git a/server/setup/default-images/thumbnails/7.webp b/server/setup/default-images/thumbnails/7.webp new file mode 100644 index 00000000..8ffe570e Binary files /dev/null and b/server/setup/default-images/thumbnails/7.webp differ diff --git a/server/setup/default-images/thumbnails/8.webp b/server/setup/default-images/thumbnails/8.webp new file mode 100644 index 00000000..19b66c5b Binary files /dev/null and b/server/setup/default-images/thumbnails/8.webp differ diff --git a/server/setup/default-images/thumbnails/9.webp b/server/setup/default-images/thumbnails/9.webp new file mode 100644 index 00000000..363a9ed3 Binary files /dev/null and b/server/setup/default-images/thumbnails/9.webp differ diff --git a/src/components/PlaylistView/Header.vue b/src/components/PlaylistView/Header.vue index 16c0adcf..d73262eb 100644 --- a/src/components/PlaylistView/Header.vue +++ b/src/components/PlaylistView/Header.vue @@ -1,14 +1,21 @@