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
def search(query, max_results=10, timeout=60): libgen_results = libgen.search(query) for result in libgen_results.results[:min(max_results, len(libgen_results.results))]: s = SearchResult() s.title = result.title s.author = result.author s.series = result.series s.language = result.language for download in result.downloads: s.downloads[download.format] = download.url s.formats = ', '.join(s.downloads.keys()) s.drm = SearchResult.DRM_UNLOCKED s.cover_url = result.image_url # don't show results with no downloads if not s.formats: continue yield s