def search(self, query, max_results=10, timeout=60): """Searches LibGen for Books. Since the mirror links are not direct downloads, it should not provide these as `s.downloads`. """ debug_print = partial(module_debug_print, 'LibgenStore:search:') debug_print('search:query = ', query) libgen_results = self.libgen.search(query) for result in libgen_results.results[:min(max_results, len(libgen_results.results))]: debug_print('result.title = ', result.title) for mirror in result.mirrors[0:1]: # Calibre only shows 1 anyway debug_print('result.mirror.url = ', mirror.url) s = SearchResult() s.store_name = PLUGIN_NAME s.cover_url = result.image_url s.title = '{} ({}, {}{})'.format( result.title, result.language, mirror.size, mirror.unit) s.author = result.authors s.price = '0.00' s.detail_item = result.md5 s.drm = SearchResult.DRM_UNLOCKED s.formats = mirror.format s.plugin_author = PLUGIN_AUTHORS debug_print('s = ', s) yield s
def to_search_result(result): s = SearchResult() s.store_name = "Libgen" s.title = result.get("Title", " ") s.author = result.get("Author(s)", " ") s.price = "FREE!!" s.language = result.get("Language", " ") s.downloads = result.get("Mirrors", " ") s.formats = result.get("Extension", " ") s.drm = SearchResult.DRM_UNLOCKED s.cover_url = result.get("Img", " ") s.detail_item = result.get("Link", " ") return s