moviewyrm/bookwyrm/activitypub/book.py

76 lines
1.7 KiB
Python
Raw Normal View History

2021-03-08 16:49:10 +00:00
""" book and author data """
from dataclasses import dataclass, field
from typing import List
2020-03-28 02:52:05 +00:00
2020-11-28 01:58:21 +00:00
from .base_activity import ActivityObject
2021-04-15 23:35:04 +00:00
from .image import Document
2020-03-28 02:52:05 +00:00
2021-03-08 16:49:10 +00:00
@dataclass(init=False)
class Book(ActivityObject):
2021-03-08 16:49:10 +00:00
""" serializes an edition or work, abstract """
title: str
2021-03-08 16:49:10 +00:00
sortTitle: str = ""
subtitle: str = ""
description: str = ""
languages: List[str] = field(default_factory=lambda: [])
2021-03-08 16:49:10 +00:00
series: str = ""
seriesNumber: str = ""
subjects: List[str] = field(default_factory=lambda: [])
subjectPlaces: List[str] = field(default_factory=lambda: [])
2020-03-28 04:28:52 +00:00
authors: List[str] = field(default_factory=lambda: [])
2021-03-08 16:49:10 +00:00
firstPublishedDate: str = ""
publishedDate: str = ""
2021-03-08 16:49:10 +00:00
openlibraryKey: str = ""
librarythingKey: str = ""
goodreadsKey: str = ""
2020-03-28 02:52:05 +00:00
2021-04-15 23:35:04 +00:00
cover: Document = None
2021-03-08 16:49:10 +00:00
type: str = "Book"
2020-03-28 02:52:05 +00:00
@dataclass(init=False)
class Edition(Book):
2021-03-08 16:49:10 +00:00
""" Edition instance of a book object """
work: str
2021-03-08 16:49:10 +00:00
isbn10: str = ""
isbn13: str = ""
oclcNumber: str = ""
asin: str = ""
pages: int = None
2021-03-08 16:49:10 +00:00
physicalFormat: str = ""
publishers: List[str] = field(default_factory=lambda: [])
editionRank: int = 0
2021-03-08 16:49:10 +00:00
type: str = "Edition"
2020-03-28 02:52:05 +00:00
2020-05-10 04:52:13 +00:00
@dataclass(init=False)
class Work(Book):
2021-03-08 16:49:10 +00:00
""" work instance of a book object """
lccn: str = ""
defaultEdition: str = ""
2020-12-20 00:14:05 +00:00
editions: List[str] = field(default_factory=lambda: [])
2021-03-08 16:49:10 +00:00
type: str = "Work"
2020-05-10 04:52:13 +00:00
@dataclass(init=False)
class Author(ActivityObject):
2021-03-08 16:49:10 +00:00
""" author of a book """
name: str
2020-12-20 00:14:05 +00:00
born: str = None
died: str = None
aliases: List[str] = field(default_factory=lambda: [])
2021-03-08 16:49:10 +00:00
bio: str = ""
openlibraryKey: str = ""
librarythingKey: str = ""
goodreadsKey: str = ""
wikipediaLink: str = ""
type: str = "Author"