mirror of
https://github.com/tcsenpai/swingmusic.git
synced 2025-06-06 19:25:34 +00:00
print local and remote app urls when app host is set to "0.0.0.0"
+ update app version in settings.py
This commit is contained in:
parent
5dad45f188
commit
3dc9bc1f15
@ -20,6 +20,12 @@ CREATE TABLE IF NOT EXISTS favorites (
|
|||||||
hash text not null,
|
hash text not null,
|
||||||
type text not null
|
type text not null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS settings (
|
||||||
|
id integer PRIMARY KEY,
|
||||||
|
root_dirs text NOT NULL,
|
||||||
|
exclude_dirs text
|
||||||
|
)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CREATE_APPDB_TABLES = """
|
CREATE_APPDB_TABLES = """
|
||||||
|
50
app/db/sqlite/settings.py
Normal file
50
app/db/sqlite/settings.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import json
|
||||||
|
from app.db.sqlite.utils import SQLiteManager
|
||||||
|
|
||||||
|
|
||||||
|
class SettingsSQLMethods:
|
||||||
|
"""
|
||||||
|
Methods for interacting with the settings table.
|
||||||
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def update_root_dirs(dirs: list[str]):
|
||||||
|
"""
|
||||||
|
Updates custom root directories in the database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
sql = "UPDATE settings SET root_dirs = ?"
|
||||||
|
dirs_str = json.dumps(dirs)
|
||||||
|
|
||||||
|
with SQLiteManager(userdata_db=True) as cur:
|
||||||
|
cur.execute(sql, (dirs_str,))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_root_dirs() -> list[str]:
|
||||||
|
"""
|
||||||
|
Gets custom root directories from the database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
sql = "SELECT value FROM settings"
|
||||||
|
|
||||||
|
with SQLiteManager(userdata_db=True) as cur:
|
||||||
|
cur.execute(sql)
|
||||||
|
|
||||||
|
data = cur.fetchone()
|
||||||
|
|
||||||
|
if data is not None:
|
||||||
|
return json.loads(data[0])
|
||||||
|
|
||||||
|
return []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def update_exclude_dirs(dirs: list[str]):
|
||||||
|
"""
|
||||||
|
Updates excluded directories in the database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
sql = "UPDATE settings SET exclude_dirs = ?"
|
||||||
|
dirs_str = json.dumps(dirs)
|
||||||
|
|
||||||
|
with SQLiteManager(userdata_db=True) as cur:
|
||||||
|
cur.execute(sql, (dirs_str,))
|
@ -4,7 +4,7 @@ Contains default configs
|
|||||||
import multiprocessing
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
|
|
||||||
APP_VERSION = "Swing v0.0.1.alpha"
|
APP_VERSION = "Swing v.1.0.0.beta.1"
|
||||||
|
|
||||||
# paths
|
# paths
|
||||||
CONFIG_FOLDER = ".swing"
|
CONFIG_FOLDER = ".swing"
|
||||||
|
@ -4,6 +4,7 @@ Contains the functions to prepare the server for use.
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
|
import caribou # pylint: disable=import-error
|
||||||
|
|
||||||
from app import settings
|
from app import settings
|
||||||
from app.db.sqlite import create_connection, create_tables, queries
|
from app.db.sqlite import create_connection, create_tables, queries
|
||||||
@ -11,7 +12,6 @@ from app.db.store import Store
|
|||||||
from app.settings import APP_DB_PATH, USERDATA_DB_PATH
|
from app.settings import APP_DB_PATH, USERDATA_DB_PATH
|
||||||
from app.utils import get_home_res_path
|
from app.utils import get_home_res_path
|
||||||
|
|
||||||
|
|
||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
|
|
||||||
config_path = get_home_res_path("pyinstaller.config.ini")
|
config_path = get_home_res_path("pyinstaller.config.ini")
|
||||||
@ -114,6 +114,19 @@ def setup_sqlite():
|
|||||||
create_tables(app_db_conn, queries.CREATE_APPDB_TABLES)
|
create_tables(app_db_conn, queries.CREATE_APPDB_TABLES)
|
||||||
create_tables(playlist_db_conn, queries.CREATE_USERDATA_TABLES)
|
create_tables(playlist_db_conn, queries.CREATE_USERDATA_TABLES)
|
||||||
|
|
||||||
|
userdb_migrations = get_home_res_path("app") / "migrations" / "userdata"
|
||||||
|
maindb_migrations = get_home_res_path("app") / "migrations" / "main"
|
||||||
|
|
||||||
|
caribou.upgrade(
|
||||||
|
APP_DB_PATH,
|
||||||
|
maindb_migrations,
|
||||||
|
)
|
||||||
|
|
||||||
|
caribou.upgrade(
|
||||||
|
str(USERDATA_DB_PATH),
|
||||||
|
str(userdb_migrations),
|
||||||
|
)
|
||||||
|
|
||||||
app_db_conn.close()
|
app_db_conn.close()
|
||||||
playlist_db_conn.close()
|
playlist_db_conn.close()
|
||||||
|
|
||||||
|
23
app/utils.py
23
app/utils.py
@ -1,14 +1,17 @@
|
|||||||
"""
|
"""
|
||||||
This module contains mini functions for the server.
|
This module contains mini functions for the server.
|
||||||
"""
|
"""
|
||||||
import os
|
|
||||||
import hashlib
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import threading
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from unidecode import unidecode
|
|
||||||
|
import os
|
||||||
|
import socket as Socket
|
||||||
|
import hashlib
|
||||||
|
import threading
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from unidecode import unidecode
|
||||||
|
|
||||||
from app import models
|
from app import models
|
||||||
from app.settings import SUPPORTED_FILES
|
from app.settings import SUPPORTED_FILES
|
||||||
|
|
||||||
@ -224,3 +227,15 @@ def get_home_res_path(filename: str):
|
|||||||
Returns a path to resources in the home directory of this project. Used to resolve resources in builds.
|
Returns a path to resources in the home directory of this project. Used to resolve resources in builds.
|
||||||
"""
|
"""
|
||||||
return (CWD / ".." / filename).resolve()
|
return (CWD / ".." / filename).resolve()
|
||||||
|
|
||||||
|
|
||||||
|
def get_ip():
|
||||||
|
"""
|
||||||
|
Returns the IP address of this device.
|
||||||
|
"""
|
||||||
|
soc = Socket.socket(Socket.AF_INET, Socket.SOCK_DGRAM)
|
||||||
|
soc.connect(("8.8.8.8", 80))
|
||||||
|
ip_address = str(soc.getsockname()[0])
|
||||||
|
soc.close()
|
||||||
|
|
||||||
|
return ip_address
|
||||||
|
20
manage.py
20
manage.py
@ -13,7 +13,7 @@ from app.functions import run_periodic_checks
|
|||||||
from app.lib.watchdogg import Watcher as WatchDog
|
from app.lib.watchdogg import Watcher as WatchDog
|
||||||
from app.settings import APP_VERSION, HELP_MESSAGE, TCOLOR
|
from app.settings import APP_VERSION, HELP_MESSAGE, TCOLOR
|
||||||
from app.setup import run_setup
|
from app.setup import run_setup
|
||||||
from app.utils import background, get_home_res_path
|
from app.utils import background, get_home_res_path, get_ip
|
||||||
|
|
||||||
werkzeug = logging.getLogger("werkzeug")
|
werkzeug = logging.getLogger("werkzeug")
|
||||||
werkzeug.setLevel(logging.ERROR)
|
werkzeug.setLevel(logging.ERROR)
|
||||||
@ -154,13 +154,21 @@ def start_watchdog():
|
|||||||
|
|
||||||
|
|
||||||
def log_info():
|
def log_info():
|
||||||
lines = " -------------------------------------"
|
lines = " ---------------------------------------"
|
||||||
os.system("cls" if os.name == "nt" else "echo -e \\\\033c")
|
os.system("cls" if os.name == "nt" else "echo -e \\\\033c")
|
||||||
print(lines)
|
print(lines)
|
||||||
print(f" {TCOLOR.HEADER}{APP_VERSION} {TCOLOR.ENDC}")
|
print(f" {TCOLOR.HEADER}{APP_VERSION} {TCOLOR.ENDC}")
|
||||||
print(
|
|
||||||
f" Started app on: {TCOLOR.OKGREEN}http://{Variables.FLASK_HOST}:{Variables.FLASK_PORT}{TCOLOR.ENDC}"
|
adresses = [Variables.FLASK_HOST]
|
||||||
)
|
|
||||||
|
if Variables.FLASK_HOST == "0.0.0.0":
|
||||||
|
adresses = ["localhost", get_ip()]
|
||||||
|
|
||||||
|
for address in adresses:
|
||||||
|
print(
|
||||||
|
f" Started app on: {TCOLOR.OKGREEN}http://{address}:{Variables.FLASK_PORT}{TCOLOR.ENDC}"
|
||||||
|
)
|
||||||
|
|
||||||
print(lines)
|
print(lines)
|
||||||
print("\n")
|
print("\n")
|
||||||
|
|
||||||
@ -180,4 +188,4 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# TODO: Find out how to print in color: red for errors, etc.
|
# TODO: Find out how to print in color: red for errors, etc.
|
||||||
# TODO: Find a way to verify the host string
|
# TODO: Find a way to verify the host string
|
||||||
# TODO: Organize code in this file: move args to new file, etc.
|
# TODO: Organize code in this file: move args to new file, etc.
|
||||||
|
1319
poetry.lock
generated
1319
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,7 @@ description = ""
|
|||||||
authors = ["geoffrey45 <geoffreymungai45@gmail.com>"]
|
authors = ["geoffrey45 <geoffreymungai45@gmail.com>"]
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = ">=3.10"
|
python = ">=3.10,<3.12"
|
||||||
Flask = "^2.0.2"
|
Flask = "^2.0.2"
|
||||||
Flask-Cors = "^3.0.10"
|
Flask-Cors = "^3.0.10"
|
||||||
requests = "^2.27.1"
|
requests = "^2.27.1"
|
||||||
@ -18,11 +18,12 @@ rapidfuzz = "^2.13.7"
|
|||||||
tinytag = "^1.8.1"
|
tinytag = "^1.8.1"
|
||||||
hypothesis = "^6.56.3"
|
hypothesis = "^6.56.3"
|
||||||
pytest = "^7.1.3"
|
pytest = "^7.1.3"
|
||||||
pylint = "^2.15.5"
|
|
||||||
Unidecode = "^1.3.6"
|
Unidecode = "^1.3.6"
|
||||||
pyinstaller = "^5.7.0"
|
pyinstaller = "^5.7.0"
|
||||||
|
caribou = "^0.3.0"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
|
pylint = "^2.15.5"
|
||||||
black = {version = "^22.6.0", allow-prereleases = true}
|
black = {version = "^22.6.0", allow-prereleases = true}
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user