mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Added import btn, Catalog overide, started server backend
This commit is contained in:
@@ -51,6 +51,7 @@ class Catalogue:
|
||||
self.file_list.append(self.scan_folder(_path))
|
||||
else:
|
||||
self.file_list.append(_path)
|
||||
print(_path+"\n")
|
||||
|
||||
def filter_books(self):
|
||||
"""
|
||||
@@ -264,18 +265,24 @@ class Catalogue:
|
||||
c = set.difference(a, b)
|
||||
return c
|
||||
|
||||
def import_books(self, list=None):
|
||||
def import_books(self, list=None, **kwargs):
|
||||
"""
|
||||
Main entry point for import operations.
|
||||
Gets a list of new files via compare_shelf_current.
|
||||
Iterates over list and inserts new books into database.
|
||||
"""
|
||||
# TODO Refactor metadata extraction into process_book \
|
||||
# call to more easily handle additional formats
|
||||
try:
|
||||
fsocket = kwargs['socket']
|
||||
except KeyError:
|
||||
fsocket = '/dev/null'
|
||||
book_list = self.compare_shelf_current()
|
||||
db = Storage(self.config)
|
||||
for book in book_list:
|
||||
book = self.process_by_filetype(book)
|
||||
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:
|
||||
|
||||
55
src/backend/lib/overide.py
Normal file
55
src/backend/lib/overide.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from pathlib import Path
|
||||
from .config import Config
|
||||
from .storage import Storage
|
||||
from .library import Catalogue
|
||||
import asyncio
|
||||
import os
|
||||
import websockets
|
||||
|
||||
|
||||
class ACatalogue(Catalogue):
|
||||
"""
|
||||
Aynchronous overide of library.Catalogue,
|
||||
: TODO : Complete or discard this overide
|
||||
"""
|
||||
def __init__(self):
|
||||
super().__init__(Config(Paths.cwd().parent))
|
||||
|
||||
async def scan_folder(self, _path=None):
|
||||
"""
|
||||
Scan folder by _path, allows recurisive scanning
|
||||
"""
|
||||
if _path is not None:
|
||||
folder = _path
|
||||
elif os.path.isdir(str(self.root_dir) + "/" + self.book_folder):
|
||||
folder = str(self.root_dir) + "/" + self.book_folder
|
||||
else:
|
||||
folder = self.book_folder
|
||||
for f in os.listdir(folder):
|
||||
_path = os.path.abspath(folder + "/" + f)
|
||||
if os.path.isdir(_path.strip() + "/"):
|
||||
self.file_list.append(self.scan_folder(_path))
|
||||
else:
|
||||
self.file_list.append(_path)
|
||||
await asyncio.sleep(0.001)
|
||||
print(_path+"\n")
|
||||
|
||||
async def import_books(self, **kwargs):
|
||||
"""
|
||||
Async overide of import_books
|
||||
"""
|
||||
fsocket = kwargs['socket']
|
||||
book_list = self.compare_shelf_current()
|
||||
db = Storage(self.config)
|
||||
for book in book_list:
|
||||
book = self.process_by_filetype(book)
|
||||
with open(fsocket, 'w') as _socket:
|
||||
_socket.write(book[0])
|
||||
_socket.close()
|
||||
await db.insert_book(book)
|
||||
inserted = db.commit()
|
||||
if inserted is not True:
|
||||
print(inserted)
|
||||
if input("Continue ? y/n") == "y":
|
||||
pass
|
||||
db.close()
|
||||
@@ -1,13 +1,11 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import time
|
||||
|
||||
import asyncio
|
||||
import websockets
|
||||
from .config import Config
|
||||
from .storage import Storage
|
||||
|
||||
# config = Config()
|
||||
# Storage = Storage()
|
||||
|
||||
|
||||
class InitFiles:
|
||||
"""First run file creation operations"""
|
||||
@@ -34,51 +32,24 @@ class InitFiles:
|
||||
f.close()
|
||||
|
||||
|
||||
class BookDisplay:
|
||||
"""All functions related to displaying book information in the HTML UI"""
|
||||
class Server:
|
||||
"""
|
||||
Main Server Container
|
||||
:TODO: Document this
|
||||
"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
"""
|
||||
Initialize class variables
|
||||
:return: None
|
||||
"""
|
||||
self.books_per_page = None
|
||||
self.current_page = 0
|
||||
self.thumbnail_size = [200, 300]
|
||||
self.thumbnail_scale = 1
|
||||
self.total_pages = None
|
||||
def __init__(self):
|
||||
self.loop = asyncio.get_event_loop()
|
||||
self.instance = None
|
||||
|
||||
async def entrypoint(self, websocket, path):
|
||||
_str = await websocket.recv()
|
||||
greeting = f"{_str}"
|
||||
await websocket.send(greeting)
|
||||
|
||||
async def start(self):
|
||||
try:
|
||||
self.screen_size = kwargs["screen_size"]
|
||||
self.instance = await websockets.serve(self.entrypoint, "localhost", 1337)
|
||||
return True
|
||||
except Exception:
|
||||
self.screen_size = [900, 600]
|
||||
|
||||
def nextPage(self):
|
||||
"""
|
||||
## TODO Remove me
|
||||
Goto next book page
|
||||
:return: new current_page
|
||||
"""
|
||||
self.current_page += 1
|
||||
return self.current_page
|
||||
|
||||
def previousPage(self):
|
||||
"""
|
||||
## TODO Remove me
|
||||
Goto previous book page
|
||||
:return: new current_page
|
||||
"""
|
||||
self.current_page -= 1
|
||||
return self.current_page
|
||||
|
||||
def booksPerPage(self, screen_size):
|
||||
"""
|
||||
## TODO Remove me
|
||||
Set books per page
|
||||
:param screen_size: Array containing x,y pixel sizes
|
||||
:return: self.books_per_page
|
||||
"""
|
||||
x = (self.thumbnail_size[0] * self.thumbnail_scale) + 10
|
||||
y = (self.thumbnail_size[1] * self.thumbnail_scale) + 10
|
||||
self.books_per_page = int(self.screen_size[0] // x) * int(
|
||||
self.screen_size[1] // y
|
||||
)
|
||||
raise
|
||||
|
||||
3
src/backend/pyShelf.py
Executable file
3
src/backend/pyShelf.py
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import websockets
|
||||
Reference in New Issue
Block a user