logger.info(f'Got {len(items)} books from Amazon wishlist.') for item in items: byline = item.find('span', id=re.compile('^item-byline')).text author = re.search(r'^by\s([\w\s.]+)[,(]', byline) d = { 'title': item.find('a', id=re.compile('^itemName_')).text, 'author': str.replace(author.group(1), '.', '').strip(), } dict_list.append(d) logger.info(f'Getting book metadata...') r = ReadingList() with tqdm(total=len(dict_list)) as pbar: for item in dict_list: pbar.update(1) book = Book(**item) found = book.find_goodreads_id() if not found: continue book.update_from_goodreads_api() r.add_book(book) logger.info(f'Calculating Ben scores...') r.calculate_ben_scores() r.sort() logger.info(f'Writing to CSV...') r.csv_export('output/readinglist.csv') logger.info(f'Done!')