Restructure project layout; implement logging
This commit is contained in:
parent
bf990f7486
commit
b58b9fc188
19
app/config.py
Normal file
19
app/config.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class Config(object):
|
||||||
|
DISPLAY_SQL = False
|
||||||
|
ERRORS_TO = ['kae@midnighthax.com']
|
||||||
|
LOG_LEVEL_STDERR = logging.INFO
|
||||||
|
LOG_LEVEL_SYSLOG = logging.DEBUG
|
||||||
|
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
|
||||||
|
MAIL_PORT = int(os.environ.get('MAIL_PORT') or 25)
|
||||||
|
MAIL_SERVER = os.environ.get('MAIL_SERVER') or "woodlands.midnighthax.com"
|
||||||
|
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
|
||||||
|
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
|
||||||
|
MYSQL_CONNECT = "mysql+mysqldb://songdb:songdb@localhost/songdb"
|
||||||
|
ROOT = "/home/kae/music"
|
||||||
|
|
||||||
|
|
||||||
|
config = Config
|
||||||
45
app/log.py
Executable file
45
app/log.py
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import logging.handlers
|
||||||
|
|
||||||
|
from config import Config
|
||||||
|
|
||||||
|
|
||||||
|
log = logging.getLogger("musicmuster")
|
||||||
|
log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
# stderr
|
||||||
|
stderr = logging.StreamHandler()
|
||||||
|
stderr.setLevel(Config.LOG_LEVEL_STDERR)
|
||||||
|
|
||||||
|
# syslog
|
||||||
|
syslog = logging.handlers.SysLogHandler(address='/dev/log')
|
||||||
|
syslog.setLevel(Config.LOG_LEVEL_SYSLOG)
|
||||||
|
|
||||||
|
# create formatter and add it to the handlers
|
||||||
|
formatter = logging.Formatter('[%(name)s:%(levelname)s]: %(message)s')
|
||||||
|
stderr.setFormatter(formatter)
|
||||||
|
syslog.setFormatter(formatter)
|
||||||
|
|
||||||
|
# add the handlers to the log
|
||||||
|
log.addHandler(stderr)
|
||||||
|
log.addHandler(syslog)
|
||||||
|
|
||||||
|
|
||||||
|
def DEBUG(msg):
|
||||||
|
log.debug(msg)
|
||||||
|
|
||||||
|
|
||||||
|
def ERROR(msg):
|
||||||
|
log.error(msg)
|
||||||
|
|
||||||
|
|
||||||
|
def INFO(msg):
|
||||||
|
log.info(msg)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
DEBUG("hi debug")
|
||||||
|
ERROR("hi error")
|
||||||
|
INFO("hi info")
|
||||||
@ -11,11 +11,9 @@ from sqlalchemy import Column, Float, DateTime, Integer, String
|
|||||||
from sqlalchemy.orm.exc import NoResultFound
|
from sqlalchemy.orm.exc import NoResultFound
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
# "Constants"
|
from config import Config
|
||||||
DISPLAY_SQL = False
|
|
||||||
MYSQL_CONNECT = "mysql+mysqldb://songdb:songdb@localhost/songdb"
|
|
||||||
ROOT = "/home/kae/music"
|
|
||||||
|
|
||||||
|
# "Constants"
|
||||||
# Instantiate logging
|
# Instantiate logging
|
||||||
pytiger.logging.config.basic_config(stderr=False, level=logging.INFO)
|
pytiger.logging.config.basic_config(stderr=False, level=logging.INFO)
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -26,9 +24,9 @@ log.info("Starting")
|
|||||||
|
|
||||||
# Set up database connection
|
# Set up database connection
|
||||||
log.info("Connect to database")
|
log.info("Connect to database")
|
||||||
engine = sqlalchemy.create_engine(f"{MYSQL_CONNECT}?charset=utf8",
|
engine = sqlalchemy.create_engine(f"{Config.MYSQL_CONNECT}?charset=utf8",
|
||||||
encoding='utf-8',
|
encoding='utf-8',
|
||||||
echo=DISPLAY_SQL)
|
echo=Config.DISPLAY_SQL)
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
||||||
@ -73,7 +71,7 @@ class Tracks(Base):
|
|||||||
def get_path(id):
|
def get_path(id):
|
||||||
try:
|
try:
|
||||||
path = session.query(Tracks.path).filter(Tracks.id == id).one()[0]
|
path = session.query(Tracks.path).filter(Tracks.id == id).one()[0]
|
||||||
return os.path.join(ROOT, path)
|
return os.path.join(Config.ROOT, path)
|
||||||
except NoResultFound:
|
except NoResultFound:
|
||||||
print(f"Can't find track id {id}")
|
print(f"Can't find track id {id}")
|
||||||
return None
|
return None
|
||||||
@ -3,15 +3,18 @@
|
|||||||
import vlc
|
import vlc
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from log import INFO, ERROR, DEBUG
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow
|
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow
|
||||||
from PyQt5.QtWidgets import QTableWidgetItem, QFileDialog, QListWidgetItem
|
from PyQt5.QtWidgets import QTableWidgetItem, QFileDialog, QListWidgetItem
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
from tinytag import TinyTag
|
from tinytag import TinyTag
|
||||||
|
|
||||||
from main_window_ui import Ui_MainWindow
|
from ui.main_window_ui import Ui_MainWindow
|
||||||
from dlg_search_database_ui import Ui_Dialog
|
from ui.dlg_search_database_ui import Ui_Dialog
|
||||||
|
|
||||||
|
from config import Config
|
||||||
from model import Tracks
|
from model import Tracks
|
||||||
|
|
||||||
|
|
||||||
@ -93,16 +96,15 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
# TODO: get_path may raise exception
|
# TODO: get_path may raise exception
|
||||||
track_path = Tracks.get_path(track_id)
|
track_path = Tracks.get_path(track_id)
|
||||||
if track_path:
|
if track_path:
|
||||||
|
INFO(f"play: {track_path}")
|
||||||
player = vlc.MediaPlayer(track_path)
|
player = vlc.MediaPlayer(track_path)
|
||||||
import ipdb; ipdb.set_trace()
|
|
||||||
player.play()
|
player.play()
|
||||||
|
|
||||||
def selectFile(self):
|
def selectFile(self):
|
||||||
dlg = QFileDialog()
|
dlg = QFileDialog()
|
||||||
dlg.setFileMode(QFileDialog.ExistingFile)
|
dlg.setFileMode(QFileDialog.ExistingFile)
|
||||||
dlg.setViewMode(QFileDialog.Detail)
|
dlg.setViewMode(QFileDialog.Detail)
|
||||||
ROOT = "/home/kae/music/"
|
dlg.setDirectory(Config.ROOT)
|
||||||
dlg.setDirectory(ROOT)
|
|
||||||
dlg.setNameFilter("Music files (*.flac *.mp3)")
|
dlg.setNameFilter("Music files (*.flac *.mp3)")
|
||||||
|
|
||||||
if dlg.exec_():
|
if dlg.exec_():
|
||||||
@ -164,8 +166,12 @@ class DbDialog(QDialog):
|
|||||||
self.parent().add_to_playlist(track)
|
self.parent().add_to_playlist(track)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def main():
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
win = Window()
|
win = Window()
|
||||||
win.show()
|
win.show()
|
||||||
sys.exit(app.exec())
|
sys.exit(app.exec())
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
Loading…
Reference in New Issue
Block a user