Files
Mind-Expanding-Books/utils/read_file.py
2020-08-23 15:34:58 +05:30

69 lines
2.0 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