40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
|
''' 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 ISBN13, title and author
|
||
|
mandatory_fields = ['ISBN', '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']
|
||
|
data['My Rating'] = math.ceil(float(initial['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
|