- fixed a bug where table header was rendered for titles with no book children - now correctly parsing url (some of the record whereat parsed properly)
65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
def read_file_content(file):
|
|
with open(file) as f:
|
|
content = f.readlines()
|
|
# remove whitespaces
|
|
return [_.strip() for _ in content]
|
|
|
|
|
|
# old (list)
|
|
def parse_book_string(book_string):
|
|
book = {}
|
|
book['title'] = book_string.split('[')[1].split(']')[0]
|
|
book['url'] = book_string.split(']')[1].split('(')[1].split(')')[0]
|
|
book['author'] = book_string.split(' by ')[-1]
|
|
book['rating'] = ''
|
|
book['year'] = ''
|
|
return book
|
|
|
|
|
|
# new (table)
|
|
def parse_book_string_new(book_string):
|
|
book = {}
|
|
book_split = book_string.split('|')
|
|
# print(book_split)
|
|
book['title'] = book_split[1].strip()
|
|
book['author'] = book_split[2].strip()
|
|
book['url'] = book_split[3].strip().split('[')[1].split('(')[1].split(')')[0]
|
|
book['rating'] = book_split[3].strip().split('[')[1].split(']')[0]
|
|
book['year'] = book_split[4].strip()
|
|
return book
|
|
|
|
|
|
def load(file, file_type):
|
|
file = read_file_content(file)
|
|
|
|
# we start one line after tilte # Books
|
|
line_to_start = file.index('# Books') + 1
|
|
current_title = ''
|
|
books_under_current_title = []
|
|
library = {}
|
|
|
|
for i in range(line_to_start, len(file)):
|
|
line = file[i]
|
|
|
|
# we have a title
|
|
if line.startswith('##'):
|
|
if len(current_title) == 0:
|
|
current_title = line
|
|
else:
|
|
library[current_title] = books_under_current_title
|
|
books_under_current_title = []
|
|
current_title = line
|
|
continue
|
|
|
|
# we have a book
|
|
if file_type == 'old':
|
|
if line.startswith('*'):
|
|
book = parse_book_string(line)
|
|
books_under_current_title.append(book)
|
|
else:
|
|
if line.startswith('|') and not line.startswith('| Name') and not line.startswith('|---'):
|
|
book = parse_book_string_new(line)
|
|
books_under_current_title.append(book)
|
|
|
|
return library
|