mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Import Books now working in ui, Working on logging.
This commit is contained in:
1
Pipfile
1
Pipfile
@@ -30,6 +30,7 @@ Pillow = "*"
|
||||
Django = "*"
|
||||
uWSGI = "*"
|
||||
pudb = "*"
|
||||
loguru = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.8"
|
||||
|
||||
23
pyShelf.py
23
pyShelf.py
@@ -1,14 +1,29 @@
|
||||
#!/usr/bin/env python3
|
||||
import asyncio
|
||||
import websockets
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from loguru import logger
|
||||
from src.backend.lib.config import Config
|
||||
from src.backend.pyShelf_ScanLibrary import execute_scan
|
||||
from src.backend.pyShelf_MakeCollections import MakeCollections
|
||||
|
||||
|
||||
root = Path.cwd()
|
||||
config = Config(root)
|
||||
PRG_PATH = Path.cwd().__str__()
|
||||
sys.path.insert(0, PRG_PATH)
|
||||
|
||||
tx = None
|
||||
|
||||
|
||||
async def echo(websocket, path):
|
||||
async def runImport():
|
||||
execute_scan(PRG_PATH)
|
||||
MakeCollections(PRG_PATH)
|
||||
return "Import Complete"
|
||||
|
||||
|
||||
async def socketio(websocket, path):
|
||||
async for message in websocket:
|
||||
if message == "import":
|
||||
print("message from Con1 >> {}".format(message))
|
||||
@@ -22,6 +37,10 @@ async def echo(websocket, path):
|
||||
elif message == "importBooks":
|
||||
print("<<[{} cmd rcvd]\n Starting import".format(message))
|
||||
tx = "Starting Import . . ."
|
||||
await websocket.send(tx)
|
||||
await runImport()
|
||||
tx = "complete"
|
||||
|
||||
await websocket.send(tx)
|
||||
|
||||
|
||||
@@ -30,7 +49,7 @@ def pong(message):
|
||||
return "pong"
|
||||
|
||||
|
||||
start_server = websockets.serve(echo, "127.0.0.1", 1337)
|
||||
start_server = websockets.serve(socketio, "127.0.0.1", 1337)
|
||||
|
||||
asyncio.get_event_loop().run_until_complete(start_server)
|
||||
asyncio.get_event_loop().run_forever()
|
||||
|
||||
@@ -21,3 +21,4 @@ mobi-python
|
||||
uwsgi
|
||||
jsonpickle
|
||||
django-widget-tweaks
|
||||
loguru
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import json
|
||||
import os
|
||||
import pathlib
|
||||
import sys
|
||||
from loguru import logger
|
||||
|
||||
|
||||
class Config:
|
||||
@@ -17,6 +16,8 @@ class Config:
|
||||
"""
|
||||
_cp = pathlib.Path.joinpath(root, self._fp)
|
||||
_data = self.open_file(_cp)
|
||||
self.root = root
|
||||
self.logger = self.get_logger()
|
||||
self.book_path = _data["BOOKPATH"]
|
||||
self.TITLE = _data["TITLE"]
|
||||
self.VERSION = _data["VERSION"]
|
||||
@@ -30,7 +31,6 @@ class Config:
|
||||
self.file_array = [
|
||||
self.book_shelf,
|
||||
]
|
||||
self.root = root
|
||||
self.auto_scan = True
|
||||
|
||||
self.allowed_hosts = _data["ALLOWED_HOSTS"]
|
||||
@@ -38,7 +38,13 @@ class Config:
|
||||
self.db_pass = _data["PASSWORD"]
|
||||
self.SECRET = _data["SECRET"]
|
||||
|
||||
def open_file(self, _cp):
|
||||
def get_logger(self):
|
||||
_logger = logger
|
||||
_logger.add(pathlib.PurePath(self.root, 'data','pyShelf_{time}.log'), rotation="10 MB", loop=None)
|
||||
return _logger
|
||||
|
||||
@staticmethod
|
||||
def open_file(_cp):
|
||||
"""
|
||||
Opens config.json and reads in configuration options
|
||||
"""
|
||||
@@ -48,4 +54,3 @@ class Config:
|
||||
|
||||
def django_secret(self, _data):
|
||||
pass
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ from .api_hooks import DuckDuckGo
|
||||
from .config import Config
|
||||
from .storage import Storage
|
||||
|
||||
# config = Config()
|
||||
|
||||
|
||||
class Catalogue:
|
||||
@@ -51,6 +50,7 @@ class Catalogue:
|
||||
self.file_list.append(self.scan_folder(_path))
|
||||
else:
|
||||
self.file_list.append(_path)
|
||||
self.config.logger.info(_path)
|
||||
print(_path+"\n")
|
||||
|
||||
def filter_books(self):
|
||||
@@ -73,6 +73,7 @@ class Catalogue:
|
||||
"""
|
||||
|
||||
def process_by_filetype(self, book):
|
||||
|
||||
print(str(book), end='\r', flush=True)
|
||||
if book.endswith(".epub"):
|
||||
epub = self.process_epub(book)
|
||||
@@ -282,7 +283,6 @@ class Catalogue:
|
||||
with open(fsocket, 'w') as _socket:
|
||||
_socket.write(book[0])
|
||||
_socket.close()
|
||||
breakpoint()
|
||||
db.insert_book(book)
|
||||
inserted = db.commit()
|
||||
if inserted is not True:
|
||||
|
||||
@@ -32,7 +32,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = CONFIG.SECRET
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = TEMPLATE_DEBUG = True
|
||||
DEBUG = TEMPLATE_DEBUG = False
|
||||
if DEBUG is True:
|
||||
from pudb.remote import set_trace
|
||||
ALLOWED_HOSTS = CONFIG.allowed_hosts
|
||||
|
||||
@@ -10758,4 +10758,14 @@ a.nav_link {
|
||||
|
||||
.collection {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.progressbar {
|
||||
ui-progressbar: "ui-corner-all";
|
||||
ui-progressbar-complete: "ui-corner-right";
|
||||
ui-progressbar-value: "ui-corner-left";
|
||||
}
|
||||
|
||||
.progress_container {
|
||||
min-width: 300px !important;
|
||||
}
|
||||
@@ -621,3 +621,11 @@ a.nav_link {
|
||||
.collection{
|
||||
cursor: pointer;
|
||||
}
|
||||
.progressbar{
|
||||
ui-progressbar: "ui-corner-all";
|
||||
ui-progressbar-complete: "ui-corner-right";
|
||||
ui-progressbar-value: "ui-corner-left";
|
||||
}
|
||||
.progress_container{
|
||||
min-width: 300px !important;
|
||||
}
|
||||
|
||||
@@ -173,6 +173,17 @@ $(document).ready(function(){
|
||||
$(document).on('click', '.logout-btn', function(){window.location.href = '/logout'});
|
||||
$(document).on('click', '.import-btn', async function(){
|
||||
let connection = await ImportBooks(server);
|
||||
popover.html('<div id="psout" class="container">');
|
||||
let psout = $('#psout')
|
||||
psout.append('<div class="rox"><div class="col import_status">Importing Books</div></div>')
|
||||
psout.append('<div class="row import_progress"></div>')
|
||||
let i_container = $('.import_progress')
|
||||
i_container.append('<div class="col progress_container"><div class="progressbar"></div>');
|
||||
$('.progressbar').progressbar({
|
||||
classes: {"ui-progressbar": "highlight"},
|
||||
value: false
|
||||
});
|
||||
$(".progressbar").append("</div>")
|
||||
});
|
||||
$('#coll_button').on('click', function(){
|
||||
var isopen = $('#pop_over_0').dialog("isOpen");
|
||||
@@ -300,6 +311,11 @@ async function PyshelfServer(address){
|
||||
}
|
||||
function sock_rx(rcvd) {
|
||||
if (rcvd.data == 'pong') { pong(rcvd) }
|
||||
else if (rcvd.data == 'complete') {
|
||||
$('.progressbar').progressbar("option", "value", "True");
|
||||
$('.import_status').html('Import Complete')
|
||||
console.log(rcvd.data)
|
||||
}
|
||||
else { console.log("<<[rx] :"+rcvd.data) }
|
||||
}
|
||||
function sock_tx(connection, msg) {
|
||||
|
||||
Reference in New Issue
Block a user