mirror of
https://github.com/jo1gi/grawlix.git
synced 2026-06-05 14:04:59 -06:00
Add more metadata
This commit is contained in:
parent
aa1eacfd43
commit
0d7fdd04a0
@ -1,5 +1,5 @@
|
|||||||
from grawlix import Encryption
|
from grawlix import Encryption
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass, field
|
||||||
from typing import Optional, Union, TypeVar, Generic
|
from typing import Optional, Union, TypeVar, Generic
|
||||||
|
|
||||||
@dataclass(slots=True)
|
@dataclass(slots=True)
|
||||||
@ -7,6 +7,8 @@ class Metadata:
|
|||||||
"""Metadata about a book"""
|
"""Metadata about a book"""
|
||||||
title: str
|
title: str
|
||||||
series: Optional[str] = None
|
series: Optional[str] = None
|
||||||
|
authors: list[str] = field(default_factory=list)
|
||||||
|
language: Optional[str] = None
|
||||||
publisher: Optional[str] = None
|
publisher: Optional[str] = None
|
||||||
identifier: Optional[str] = None
|
identifier: Optional[str] = None
|
||||||
|
|
||||||
@ -16,6 +18,8 @@ class Metadata:
|
|||||||
"series": self.series or "UNKNOWN",
|
"series": self.series or "UNKNOWN",
|
||||||
"publisher": self.publisher or "UNKNOWN",
|
"publisher": self.publisher or "UNKNOWN",
|
||||||
"identifier": self.identifier or "UNKNOWN",
|
"identifier": self.identifier or "UNKNOWN",
|
||||||
|
"language": self.language or "UNKNOWN",
|
||||||
|
"authors": "; ".join(self.authors),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,14 @@ from dataclasses import dataclass
|
|||||||
|
|
||||||
console = Console(stderr=True)
|
console = Console(stderr=True)
|
||||||
|
|
||||||
|
def info(msg: str) -> None:
|
||||||
|
"""
|
||||||
|
Print message in log
|
||||||
|
|
||||||
|
:param msg: Message to print
|
||||||
|
"""
|
||||||
|
console.print(msg)
|
||||||
|
|
||||||
def progress(category_name: str, source_name: str, count=1) -> Progress:
|
def progress(category_name: str, source_name: str, count=1) -> Progress:
|
||||||
if count > 1:
|
if count > 1:
|
||||||
console.print(f"Downloading [yellow not bold]{count}[/] books in [blue]{category_name}[/] from [magenta]{source_name}[/]")
|
console.print(f"Downloading [yellow not bold]{count}[/] books in [blue]{category_name}[/] from [magenta]{source_name}[/]")
|
||||||
@ -19,7 +27,8 @@ def progress(category_name: str, source_name: str, count=1) -> Progress:
|
|||||||
"{task.description}",
|
"{task.description}",
|
||||||
BarColumn(),
|
BarColumn(),
|
||||||
"[progress.percentage]{task.percentage:>3.0f}%",
|
"[progress.percentage]{task.percentage:>3.0f}%",
|
||||||
console = console
|
console = console,
|
||||||
|
expand = True
|
||||||
)
|
)
|
||||||
return progress
|
return progress
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from grawlix.book import Book, BookData, SingleFile, ImageList, OnlineFile
|
from grawlix.book import Book, BookData, SingleFile, ImageList, OnlineFile
|
||||||
from grawlix.exceptions import GrawlixError
|
from grawlix.exceptions import GrawlixError
|
||||||
|
from grawlix.logging import info
|
||||||
|
|
||||||
from .output_format import OutputFormat
|
from .output_format import OutputFormat
|
||||||
from .epub import Epub
|
from .epub import Epub
|
||||||
@ -17,6 +18,9 @@ def download_book(book: Book, update_func: Callable, template: str) -> None:
|
|||||||
"""
|
"""
|
||||||
output_format = get_default_format(book.data)
|
output_format = get_default_format(book.data)
|
||||||
location = format_output_location(book, output_format, template)
|
location = format_output_location(book, output_format, template)
|
||||||
|
if os.path.exists(location):
|
||||||
|
info("Skipping - File already exists")
|
||||||
|
return
|
||||||
parent = Path(location).parent
|
parent = Path(location).parent
|
||||||
if not parent.exists():
|
if not parent.exists():
|
||||||
os.makedirs(parent)
|
os.makedirs(parent)
|
||||||
|
|||||||
@ -7,7 +7,7 @@ from .source import Source
|
|||||||
class Saxo(Source):
|
class Saxo(Source):
|
||||||
name: str = "Saxo"
|
name: str = "Saxo"
|
||||||
match = [
|
match = [
|
||||||
r"https://(www.)?saxo.(com|dk)/[^/]+/.+\d+$"
|
r"https://(\w+\.)?saxo.(com|dk)/.+\d+$"
|
||||||
]
|
]
|
||||||
_authentication_methods = [ "login" ]
|
_authentication_methods = [ "login" ]
|
||||||
user_id: str
|
user_id: str
|
||||||
@ -102,7 +102,11 @@ class Saxo(Source):
|
|||||||
:param metadata: Metadata response from saxo
|
:param metadata: Metadata response from saxo
|
||||||
:returns: Metadata formatted as `grawlix.Metadata`
|
:returns: Metadata formatted as `grawlix.Metadata`
|
||||||
"""
|
"""
|
||||||
return Metadata(metadata["title"])
|
return Metadata(
|
||||||
|
title = metadata["title"],
|
||||||
|
authors = [metadata["author"]] if "author" in metadata else [],
|
||||||
|
language = metadata.get("languageLocalized")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user