XDG_CONFIG_HOME config file and put the database there i guess
This commit is contained in:
parent
199932d3f9
commit
a41f909abe
8
DBA.py
8
DBA.py
@ -1,13 +1,19 @@
|
||||
import sqlite3
|
||||
import logging
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
|
||||
|
||||
class DBAccess:
|
||||
def __init__(self, db_name=None):
|
||||
logging.info("Instantiating DBAccess")
|
||||
config = ConfigParser()
|
||||
config.read("config.ini")
|
||||
cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
config.read(cfg_file)
|
||||
if db_name is None:
|
||||
db_name = config.get("db", "database")
|
||||
self._conn: sqlite3.Connection = sqlite3.connect(db_name)
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
import logging
|
||||
import DBA
|
||||
import os
|
||||
from PyQt5.QtWidgets import (
|
||||
QCheckBox,
|
||||
QDialog,
|
||||
@ -11,11 +13,11 @@ from PyQt5.QtWidgets import (
|
||||
QListWidgetItem,
|
||||
)
|
||||
from PyQt5.QtGui import QFont
|
||||
from configparser import ConfigParser
|
||||
from utils import get_reorganize_vars
|
||||
from components import ErrorDialog
|
||||
import DBA
|
||||
import os
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
|
||||
|
||||
class ExportPlaylistWindow(QDialog):
|
||||
@ -23,10 +25,16 @@ class ExportPlaylistWindow(QDialog):
|
||||
super(ExportPlaylistWindow, self).__init__()
|
||||
self.setWindowTitle("Export playlist")
|
||||
self.setMinimumSize(600, 400)
|
||||
config = ConfigParser()
|
||||
config.read("config.ini")
|
||||
self.relative_path: str = config.get("directories", "playlist_relative_path")
|
||||
self.export_path: str = config.get("directories", "playlist_export_path")
|
||||
self.cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
self.config = ConfigParser()
|
||||
self.config.read(self.cfg_file)
|
||||
self.relative_path: str = self.config.get(
|
||||
"directories", "playlist_relative_path"
|
||||
)
|
||||
self.export_path: str = self.config.get("directories", "playlist_export_path")
|
||||
self.selected_playlist_name: str = "my-playlist.m3u"
|
||||
self.current_m3u_path: str = self.export_path
|
||||
self.current_relative_path: str = self.relative_path
|
||||
|
||||
@ -44,10 +44,12 @@ from utils.get_album_art import get_album_art
|
||||
from utils import set_id3_tag
|
||||
from subprocess import Popen
|
||||
from logging import debug, error
|
||||
import configparser
|
||||
import os
|
||||
import shutil
|
||||
import typing
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
from configparser import ConfigParser
|
||||
|
||||
|
||||
class MusicTable(QTableView):
|
||||
@ -65,8 +67,14 @@ class MusicTable(QTableView):
|
||||
self.setModel(self.model2)
|
||||
|
||||
# Config
|
||||
self.config = configparser.ConfigParser()
|
||||
self.config.read("config.ini")
|
||||
cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
self.config = ConfigParser()
|
||||
self.config.read(cfg_file)
|
||||
|
||||
# Threads
|
||||
self.threadpool = QThreadPool
|
||||
# gui names of headers
|
||||
self.table_headers = [
|
||||
@ -494,7 +502,7 @@ class MusicTable(QTableView):
|
||||
Reorganizes files into Artist/Album/Song,
|
||||
based on self.config['directories'][reorganize_destination']
|
||||
"""
|
||||
debug('reorganizing files')
|
||||
debug("reorganizing files")
|
||||
# Get target directory
|
||||
target_dir = str(self.config["directories"]["reorganize_destination"])
|
||||
for filepath in filepaths:
|
||||
@ -511,10 +519,10 @@ class MusicTable(QTableView):
|
||||
if progress_callback:
|
||||
progress_callback.emit(f"Organizing: {filepath}")
|
||||
# Create the directories if they dont exist
|
||||
debug('make dirs')
|
||||
debug("make dirs")
|
||||
os.makedirs(os.path.dirname(new_path), exist_ok=True)
|
||||
# Move the file to the new directory
|
||||
debug(f'{filepath} > {new_path}')
|
||||
debug(f"{filepath} > {new_path}")
|
||||
shutil.move(filepath, new_path)
|
||||
# Update the db
|
||||
with DBA.DBAccess() as db:
|
||||
@ -524,9 +532,7 @@ class MusicTable(QTableView):
|
||||
)
|
||||
debug(f"reorganize_files() | Moved: {filepath} -> {new_path}")
|
||||
except Exception as e:
|
||||
error(
|
||||
f"reorganize_files() | Error moving file: {filepath} | {e}"
|
||||
)
|
||||
error(f"reorganize_files() | Error moving file: {filepath} | {e}")
|
||||
# Draw the rest of the owl
|
||||
# QMessageBox.information(
|
||||
# self, "Reorganization complete", "Files successfully reorganized"
|
||||
|
||||
@ -10,16 +10,26 @@ from PyQt5.QtWidgets import (
|
||||
QWidget,
|
||||
QDial,
|
||||
)
|
||||
from logging import info
|
||||
from PyQt5.QtGui import QFont
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
|
||||
|
||||
class PreferencesWindow(QDialog):
|
||||
def __init__(self, config):
|
||||
def __init__(self, reloadConfigSignal):
|
||||
super(PreferencesWindow, self).__init__()
|
||||
# Config
|
||||
self.reloadConfigSignal = reloadConfigSignal
|
||||
self.setWindowTitle("Preferences")
|
||||
self.setMinimumSize(800, 800)
|
||||
self.config = config
|
||||
self.cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
self.config = ConfigParser()
|
||||
self.config.read(self.cfg_file)
|
||||
self.current_category = ""
|
||||
|
||||
# Widgets
|
||||
@ -83,7 +93,7 @@ class PreferencesWindow(QDialog):
|
||||
child.widget().deleteLater()
|
||||
|
||||
def save_preferences(self):
|
||||
print('im saving')
|
||||
info("im saving")
|
||||
# Upcate the config fields
|
||||
for key in self.input_fields:
|
||||
for category in self.config.sections():
|
||||
@ -93,6 +103,7 @@ class PreferencesWindow(QDialog):
|
||||
].text()
|
||||
|
||||
# Write the config file
|
||||
with open("config.ini", "w") as configfile:
|
||||
with open(self.cfg_file, "w") as configfile:
|
||||
self.config.write(configfile)
|
||||
# self.close()
|
||||
|
||||
self.reloadConfigSignal.emit()
|
||||
|
||||
56
main.py
56
main.py
@ -1,15 +1,17 @@
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
from subprocess import run
|
||||
import qdarktheme
|
||||
import typing
|
||||
import traceback
|
||||
import DBA
|
||||
from subprocess import run
|
||||
from pyqtgraph import mkBrush
|
||||
from mutagen.id3 import ID3
|
||||
from mutagen.id3._frames import APIC
|
||||
from configparser import ConfigParser
|
||||
import traceback
|
||||
import DBA
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
from logging import debug, error, warning, basicConfig, INFO, DEBUG
|
||||
from ui import Ui_MainWindow
|
||||
from PyQt5.QtWidgets import (
|
||||
@ -132,6 +134,7 @@ class Worker(QRunnable):
|
||||
|
||||
class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
playlistCreatedSignal = pyqtSignal()
|
||||
reloadConfigSignal = pyqtSignal()
|
||||
|
||||
def __init__(self, clipboard):
|
||||
super(ApplicationWindow, self).__init__()
|
||||
@ -141,7 +144,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
self.threadpool = QThreadPool()
|
||||
# UI
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle("MusicPom")
|
||||
self.setWindowTitle("musicpom")
|
||||
self.status_bar = QStatusBar()
|
||||
self.permanent_status_label = QLabel("Status...")
|
||||
self.status_bar.addPermanentWidget(self.permanent_status_label)
|
||||
@ -152,6 +155,11 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
self.current_song_album_art: bytes | None = None
|
||||
self.album_art_scene: QGraphicsScene = QGraphicsScene()
|
||||
self.config: ConfigParser = ConfigParser()
|
||||
self.cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
self.config.read(self.cfg_file)
|
||||
self.player: QMediaPlayer = QMediaPlayer() # Audio player object
|
||||
self.probe: QAudioProbe = QAudioProbe() # Gets audio data
|
||||
self.audio_visualizer: AudioVisualizer = AudioVisualizer(self.player)
|
||||
@ -159,7 +167,6 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
self.clipboard = clipboard
|
||||
self.tableView.load_qapp(self)
|
||||
self.albumGraphicsView.load_qapp(self)
|
||||
self.config.read("config.ini")
|
||||
# Initialization
|
||||
self.timer = QTimer(self) # Audio timing things
|
||||
self.player.setVolume(self.current_volume)
|
||||
@ -242,9 +249,13 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
self.delete_album_art_for_current_song
|
||||
)
|
||||
|
||||
def reload_config(self) -> None:
|
||||
def load_config(self) -> None:
|
||||
"""does what it says"""
|
||||
self.config.read("config.ini")
|
||||
cfg_loc = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
|
||||
/ "config.ini"
|
||||
)
|
||||
self.config.read(cfg_loc)
|
||||
|
||||
def get_thread_pool(self) -> QThreadPool:
|
||||
"""Returns the threadpool instance"""
|
||||
@ -265,7 +276,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
self.config["table"]["column_widths"] = column_widths_as_string
|
||||
|
||||
# Save the config
|
||||
with open("config.ini", "w") as configfile:
|
||||
with open(self.cfg_file, "w") as configfile:
|
||||
self.config.write(configfile)
|
||||
if a0 is not None:
|
||||
super().closeEvent(a0)
|
||||
@ -506,10 +517,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
def open_preferences(self) -> None:
|
||||
"""Opens the preferences window"""
|
||||
preferences_window = PreferencesWindow(self.config)
|
||||
preferences_window = PreferencesWindow(self.reloadConfigSignal)
|
||||
preferences_window.reloadConfigSignal.connect(self.load_config)
|
||||
preferences_window.exec_() # Display the preferences window modally
|
||||
self.reload_config()
|
||||
self.tableView.load_music_table()
|
||||
|
||||
# Quick Actions
|
||||
|
||||
@ -568,15 +578,33 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Initialization
|
||||
if not os.path.exists("config.ini"):
|
||||
|
||||
cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom")) / "config.ini"
|
||||
)
|
||||
cfg_path = str(Path(user_config_dir(appname="musicpom", appauthor="billypom")))
|
||||
|
||||
# If the config file doesn't exist, create it from the sample config
|
||||
if not os.path.exists(cfg_file):
|
||||
# Create config file from sample
|
||||
run(["cp", "sample_config.ini", "config.ini"])
|
||||
run(["cp", "sample_config.ini", cfg_file])
|
||||
config = ConfigParser()
|
||||
config.read("config.ini")
|
||||
config.read(cfg_file)
|
||||
db_filepath: str = config.get("db", "database")
|
||||
|
||||
# If the database location isnt set at the config location, move it
|
||||
if not db_filepath.startswith(cfg_path):
|
||||
config["db"]["database"] = f"{cfg_path}/{db_filepath}"
|
||||
# Save the config
|
||||
with open(cfg_file, "w") as configfile:
|
||||
config.write(configfile)
|
||||
config.read(cfg_file)
|
||||
|
||||
db_filepath: str = config.get("db", "database")
|
||||
db_path = db_filepath.split("/")
|
||||
db_path.pop()
|
||||
db_path = "/".join(db_path)
|
||||
|
||||
# If the db file doesn't exist
|
||||
if not os.path.exists(db_filepath):
|
||||
# If the db directory doesn't exist
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
mutagen
|
||||
matplotlib
|
||||
appdirs
|
||||
pyqt5
|
||||
pydub
|
||||
pyqtdarktheme-fork
|
||||
|
||||
@ -1,11 +1,16 @@
|
||||
import DBA
|
||||
from configparser import ConfigParser
|
||||
from utils import get_id3_tags, id3_timestamp_to_datetime
|
||||
import logging
|
||||
from utils import get_id3_tags, id3_timestamp_to_datetime
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
|
||||
config = ConfigParser()
|
||||
config.read("config.ini")
|
||||
cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom")) / "config.ini"
|
||||
)
|
||||
config.read(cfg_file)
|
||||
|
||||
|
||||
def add_files_to_library(files, progress_callback=None):
|
||||
|
||||
@ -1,11 +1,15 @@
|
||||
import os
|
||||
from configparser import ConfigParser
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from utils.add_files_to_library import add_files_to_library
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from appdirs import user_config_dir
|
||||
|
||||
config = ConfigParser()
|
||||
config.read("config.ini")
|
||||
cfg_file = (
|
||||
Path(user_config_dir(appname="musicpom", appauthor="billypom")) / "config.ini"
|
||||
)
|
||||
config.read(cfg_file)
|
||||
|
||||
|
||||
def scan_for_music():
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user