From da88bbd9cc34cd52f631af86dfb98e7d8e4729e2 Mon Sep 17 00:00:00 2001 From: mungai-njoroge Date: Thu, 31 Aug 2023 21:36:34 +0300 Subject: [PATCH] write LASTFM_API_KEY to config file + remove alive bar --- app/arg_handler.py | 23 ++++++++--- app/lib/albumslib.py | 14 +++---- app/setup/files.py | 6 ++- app/utils/wintools.py | 4 +- manage.py | 11 +----- poetry.lock | 41 +------------------- pyproject.toml | 1 - pyinstaller.config.ini => runtime.config.ini | 1 + swingmusic.spec | 2 +- 9 files changed, 34 insertions(+), 69 deletions(-) rename pyinstaller.config.ini => runtime.config.ini (58%) diff --git a/app/arg_handler.py b/app/arg_handler.py index 0d95177..5759517 100644 --- a/app/arg_handler.py +++ b/app/arg_handler.py @@ -13,10 +13,8 @@ from app.print_help import HELP_MESSAGE from app.utils.wintools import is_windows from app.utils.xdg_utils import get_xdg_config_dir -# from app.api.imgserver import set_app_dir - config = ConfigParser() -config.read("pyinstaller.config.ini") +config.read("runtime.config.ini") ALLARGS = settings.ALLARGS ARGS = sys.argv[1:] @@ -40,9 +38,20 @@ class HandleArgs: """ Runs Pyinstaller. """ + # get last.fm api key from env + last_fm_key = os.environ.get("LASTFM_API_KEY") + + # if the key is not in env, exit + if not last_fm_key: + log.error("ERROR: LASTFM_API_KEY not set in environment") + sys.exit(0) + if ALLARGS.build in ARGS: - with open("pyinstaller.config.ini", "w", encoding="utf-8") as file: + with open("runtime.config.ini", "w", encoding="utf-8") as file: config["DEFAULT"]["BUILD"] = "True" + + # copy the api key to the config file + config["DEFAULT"]["LASTFM_API_KEY"] = last_fm_key config.write(file) _s = ";" if is_windows() else ":" @@ -56,13 +65,15 @@ class HandleArgs: "--clean", f"--add-data=assets{_s}assets", f"--add-data=client{_s}client", - f"--add-data=pyinstaller.config.ini{_s}.", + f"--add-data=runtime.config.ini{_s}.", "-y", ] ) - with open("pyinstaller.config.ini", "w", encoding="utf-8") as file: + # revert build to False and remove the api key for dev mode + with open("runtime.config.ini", "w", encoding="utf-8") as file: config["DEFAULT"]["BUILD"] = "False" + config["DEFAULT"]["LASTFM_API_KEY"] = "" config.write(file) sys.exit(0) diff --git a/app/lib/albumslib.py b/app/lib/albumslib.py index a0817fc..e3dc6f9 100644 --- a/app/lib/albumslib.py +++ b/app/lib/albumslib.py @@ -5,7 +5,6 @@ Contains methods relating to albums. from dataclasses import asdict from typing import Any -from alive_progress import alive_bar from app.logger import log from app.models.track import Track @@ -23,20 +22,19 @@ def validate_albums(): album_hashes = {t.albumhash for t in TrackStore.tracks} albums = AlbumStore.albums - with alive_bar(len(albums)) as bar: - log.info("Validating albums") - for album in albums: - if album.albumhash not in album_hashes: - AlbumStore.remove_album(album) - bar() + for album in albums: + if album.albumhash not in album_hashes: + AlbumStore.remove_album(album) + def remove_duplicate_on_merge_versions(tracks: list[Track]) -> list[Track]: """ Removes duplicate tracks when merging versions of the same album. """ - + pass + def sort_by_track_no(tracks: list[Track]) -> list[dict[str, Any]]: tracks = [asdict(t) for t in tracks] diff --git a/app/setup/files.py b/app/setup/files.py index adac14f..9a770bd 100644 --- a/app/setup/files.py +++ b/app/setup/files.py @@ -5,19 +5,21 @@ create the config directory and copy the assets to the app directory. import os import shutil +import sys from configparser import ConfigParser from app import settings from app.utils.filesystem import get_home_res_path config = ConfigParser() -config_path = get_home_res_path("pyinstaller.config.ini") +config_path = get_home_res_path("runtime.config.ini") config.read(config_path) try: IS_BUILD = config["DEFAULT"]["BUILD"] == "True" + settings.Keys.LASTFM_API = config["DEFAULT"]["LASTFM_API_KEY"] except KeyError: - # If the key doesn't exist, it means that the app is being executed in dev mode. + # If the key doesn't exist, the app is in dev mode. IS_BUILD = False diff --git a/app/utils/wintools.py b/app/utils/wintools.py index b29f578..740c0f0 100644 --- a/app/utils/wintools.py +++ b/app/utils/wintools.py @@ -1,12 +1,14 @@ import platform +IS_WIN = platform.system() == "Windows" + # TODO: Check is_windows on app start in settings.py def is_windows(): """ Returns True if the OS is Windows. """ - return platform.system() == "Windows" + return IS_WIN def win_replace_slash(path: str): diff --git a/manage.py b/manage.py index cdc27d5..c0a289c 100644 --- a/manage.py +++ b/manage.py @@ -9,14 +9,13 @@ from flask import request from app.api import create_api from app.arg_handler import HandleArgs -from app.periodic_scan import run_periodic_scans from app.lib.watchdogg import Watcher as WatchDog +from app.periodic_scan import run_periodic_scans from app.settings import FLASKVARS from app.setup import run_setup from app.start_info_logger import log_startup_info from app.utils.filesystem import get_home_res_path from app.utils.threading import background -from alive_progress import config_handler mimetypes.add_type("text/css", ".css") mimetypes.add_type("text/javascript", ".js") @@ -77,15 +76,7 @@ def start_watchdog(): WatchDog().run() -def configure_alive_bar(): - """ - Sets the default alive bar settings. - """ - config_handler.set_global(spinner="classic", bar="classic2", enrich_print=False) - - if __name__ == "__main__": - configure_alive_bar() HandleArgs() log_startup_info() bg_run_setup() diff --git a/poetry.lock b/poetry.lock index 1321518..b2011fe 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,31 +1,5 @@ # This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. -[[package]] -name = "about-time" -version = "4.2.1" -description = "Easily measure timing and throughput of code blocks, with beautiful human friendly representations." -optional = false -python-versions = ">=3.7, <4" -files = [ - {file = "about-time-4.2.1.tar.gz", hash = "sha256:6a538862d33ce67d997429d14998310e1dbfda6cb7d9bbfbf799c4709847fece"}, - {file = "about_time-4.2.1-py3-none-any.whl", hash = "sha256:8bbf4c75fe13cbd3d72f49a03b02c5c7dca32169b6d49117c257e7eb3eaee341"}, -] - -[[package]] -name = "alive-progress" -version = "3.1.4" -description = "A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!" -optional = false -python-versions = ">=3.7, <4" -files = [ - {file = "alive-progress-3.1.4.tar.gz", hash = "sha256:74a95d8d0d42bc99d3a3725dbd06ebb852245f1b64e301a7c375b92b22663f7b"}, - {file = "alive_progress-3.1.4-py3-none-any.whl", hash = "sha256:c80ad87ce9c1054b01135a87fae69ecebbfc2107497ae87cbe6aec7e534903db"}, -] - -[package.dependencies] -about-time = "4.2.1" -grapheme = "0.6.0" - [[package]] name = "altgraph" version = "0.17.3" @@ -424,19 +398,6 @@ files = [ Flask = ">=0.9" Six = "*" -[[package]] -name = "grapheme" -version = "0.6.0" -description = "Unicode grapheme helpers" -optional = false -python-versions = "*" -files = [ - {file = "grapheme-0.6.0.tar.gz", hash = "sha256:44c2b9f21bbe77cfb05835fec230bd435954275267fea1858013b102f8603cca"}, -] - -[package.extras] -test = ["pytest", "sphinx", "sphinx-autobuild", "twine", "wheel"] - [[package]] name = "gunicorn" version = "20.1.0" @@ -1492,4 +1453,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.12" -content-hash = "15bc0dc4a39392445fe3fe8a9131090f697f80008a79f5d8d49668465acafcb3" +content-hash = "0052648520a30e34301208917b639bcd2ca9a0a09a557537126d300aa5ffeeed" diff --git a/pyproject.toml b/pyproject.toml index 81e7669..51f6a51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,6 @@ Unidecode = "^1.3.6" psutil = "^5.9.4" show-in-file-manager = "^1.1.4" pendulum = "^2.1.2" -alive-progress = "^3.1.4" flask-compress = "^1.13" tabulate = "^0.9.0" diff --git a/pyinstaller.config.ini b/runtime.config.ini similarity index 58% rename from pyinstaller.config.ini rename to runtime.config.ini index 9981586..89517ff 100644 --- a/pyinstaller.config.ini +++ b/runtime.config.ini @@ -1,3 +1,4 @@ [DEFAULT] build = False +lastfm_api_key = diff --git a/swingmusic.spec b/swingmusic.spec index efd0e87..8889b44 100644 --- a/swingmusic.spec +++ b/swingmusic.spec @@ -8,7 +8,7 @@ a = Analysis( ['manage.py'], pathex=[], binaries=[], - datas=[('assets', 'assets'), ('client', 'client'), ('pyinstaller.config.ini', '.')], + datas=[('assets', 'assets'), ('client', 'client'), ('runtime.config.ini', '.')], hiddenimports=[], hookspath=[], hooksconfig={},