2021-03-08 16:49:10 +00:00
|
|
|
""" handle reading a csv from librarything """
|
2021-02-20 16:02:36 +00:00
|
|
|
import re
|
|
|
|
import math
|
|
|
|
|
2021-03-30 15:56:25 +00:00
|
|
|
from . import Importer
|
2021-02-20 16:02:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
class LibrarythingImporter(Importer):
|
2021-03-30 15:43:38 +00:00
|
|
|
""" csv downloads from librarything """
|
|
|
|
|
2021-03-08 16:49:10 +00:00
|
|
|
service = "LibraryThing"
|
|
|
|
delimiter = "\t"
|
|
|
|
encoding = "ISO-8859-1"
|
2021-02-26 12:32:17 +00:00
|
|
|
# mandatory_fields : fields matching the book title and author
|
2021-03-08 16:49:10 +00:00
|
|
|
mandatory_fields = ["Title", "Primary Author"]
|
2021-02-20 16:02:36 +00:00
|
|
|
|
2021-03-30 15:43:38 +00:00
|
|
|
def parse_fields(self, entry):
|
|
|
|
""" custom parsing for librarything """
|
2021-02-20 16:02:36 +00:00
|
|
|
data = {}
|
2021-03-08 16:49:10 +00:00
|
|
|
data["import_source"] = self.service
|
2021-03-30 15:43:38 +00:00
|
|
|
data["Book Id"] = entry["Book Id"]
|
|
|
|
data["Title"] = entry["Title"]
|
|
|
|
data["Author"] = entry["Primary Author"]
|
|
|
|
data["ISBN13"] = entry["ISBN"]
|
|
|
|
data["My Review"] = entry["Review"]
|
|
|
|
if entry["Rating"]:
|
|
|
|
data["My Rating"] = math.ceil(float(entry["Rating"]))
|
2021-02-26 12:32:17 +00:00
|
|
|
else:
|
2021-03-08 16:49:10 +00:00
|
|
|
data["My Rating"] = ""
|
2021-03-30 15:43:38 +00:00
|
|
|
data["Date Added"] = re.sub(r"\[|\]", "", entry["Entry Date"])
|
|
|
|
data["Date Started"] = re.sub(r"\[|\]", "", entry["Date Started"])
|
|
|
|
data["Date Read"] = re.sub(r"\[|\]", "", entry["Date Read"])
|
2021-02-20 16:02:36 +00:00
|
|
|
|
2021-03-08 16:49:10 +00:00
|
|
|
data["Exclusive Shelf"] = None
|
|
|
|
if data["Date Read"]:
|
|
|
|
data["Exclusive Shelf"] = "read"
|
|
|
|
elif data["Date Started"]:
|
|
|
|
data["Exclusive Shelf"] = "reading"
|
2021-02-20 16:02:36 +00:00
|
|
|
else:
|
2021-03-08 16:49:10 +00:00
|
|
|
data["Exclusive Shelf"] = "to-read"
|
2021-02-20 16:02:36 +00:00
|
|
|
|
|
|
|
return data
|