def test_mirror(mirror, test_book): search_params, md5_of_ids = test_book library = pylibgen.Library(mirror) ids = library.search(*search_params) assert isinstance(ids, list) assert set(ids) == set(md5_of_ids.keys()) books = library.lookup(ids) assert isinstance(books, GeneratorType) for book in books: assert isinstance(book, pylibgen.Book) assert md5_of_ids[book.id] == book.md5.lower()
def test_mirror(mirror, test_book): search_params, md5_of_ids = test_book l = pylibgen.Library(mirror) ids = l.search(*search_params) assert isinstance(ids, list) assert set(ids) == set(md5_of_ids.keys()) books = l.lookup(ids) assert isinstance(books, list) assert all((isinstance(b, pylibgen.Book) for b in books)) for book in books: assert md5_of_ids[book.id] == book.md5.lower()
async def chainer(self, start: float, isbn: str, path: Path): proxy, headers = self.prep_request() async with ClientSession(headers=headers, connector=proxy) as session: pylibgen_lib = pylibgen.Library() try: book_ids = await self.part1_get_book_ids( isbn=isbn, pylibgen_lib=pylibgen_lib, session=session) self.message(isbn, f"Got the book ids", start) libgen_book = await self.part2_get_best_book_from_ids( pylibgen_lib=pylibgen_lib, book_ids=book_ids, session=session) self.message(isbn, f"Got the book", start) filename = await self.part3_download_book( libgen_book=libgen_book, isbn=isbn, path=path, session=session) except Exception: self.message(isbn, "Failed", start=start, err=True) return self.message(isbn, f"Download complete {filename}", start)
def test_all_book_fields(mirror): l = pylibgen.Library(mirror) book = l.lookup("112887", fields=["*"]) assert set(book.__dict__.keys()) == pylibgen.constants.ALL_BOOK_FIELDS