""" handle reading a csv from librarything """ import csv import re import math from bookwyrm import models from bookwyrm.models import ImportItem from bookwyrm.importer import Importer class LibrarythingImporter(Importer): service = "LibraryThing" delimiter = "\t" encoding = "ISO-8859-1" # mandatory_fields : fields matching the book title and author mandatory_fields = ["Title", "Primary Author"] def parse_fields(self, initial): data = {} data["import_source"] = self.service data["Book Id"] = initial["Book Id"] data["Title"] = initial["Title"] data["Author"] = initial["Primary Author"] data["ISBN13"] = initial["ISBN"] data["My Review"] = initial["Review"] if initial["Rating"]: data["My Rating"] = math.ceil(float(initial["Rating"])) else: data["My Rating"] = "" data["Date Added"] = re.sub("\[|\]", "", initial["Entry Date"]) data["Date Started"] = re.sub("\[|\]", "", initial["Date Started"]) data["Date Read"] = re.sub("\[|\]", "", initial["Date Read"]) data["Exclusive Shelf"] = None if data["Date Read"]: data["Exclusive Shelf"] = "read" elif data["Date Started"]: data["Exclusive Shelf"] = "reading" else: data["Exclusive Shelf"] = "to-read" return data