def search_book(by, value): s = LibgenSearch() if by == 'title': results = s.search_title(value) elif by == 'author': results = s.search_author(value) return results
async def search_book(metadata: Book, telegram_log: CallbackQuery): lib_search = LibgenSearch() logging.info(metadata) if metadata.Author: #filters = {"Author": metadata.Author} filters = {"Language": "English"} if metadata.subtitle: bQuery = f"{metadata.title} {metadata.subtitle}" else: bQuery = f"{metadata.title}" results = lib_search.search_title_filtered(bQuery, filters, exact_match=False) else: results = lib_search.search_title(metadata.title) pprint.pprint(results) best = find_best_match(metadata, results) while best == None: await telegram_log.answer(text="Performing advanced query 💪") print("advanced") isbns = await alternative_search(bQuery, metadata.Author) results = [] for isbn in isbns: print(isbn) results.extend(lib_search.search_title(isbn)) pprint.pprint(results) best = find_best_match(metadata, results) break if best != None: best = results[best] best = LibgenResult(best) print(best) return best
async def libgen(self, ctx, *args): """Enter a title search query and it will respond with libgen entries""" # Collect their query and search for it search_query = " ".join(args) s = LibgenSearch() results = s.search_title(search_query) # Truncate to at most 6 results results = results[:6] # If no results, tell them their book isn't libgenable if len(results) == 0: await ctx.send("Sorry! Your book isn't libgenable :(") return # Set up discord embed embed = discord.Embed( title="Search Results", description=f"Query: {search_query}", color=0xFF0000 ) # Add all the info of each search result to the embed in its own field for num in range(1, len(results) + 1): info_str = "" info_str += f'Author: {results[num-1]["Author"]}\n' info_str += f'Title: {results[num-1]["Title"]}\n' info_str += f'Publisher: {results[num-1]["Publisher"]}\n' info_str += f'Year: {results[num-1]["Year"]}\n' info_str += f'Extension: {results[num-1]["Extension"]}\n' info_str += "Download Links:\n" info_str += f'[1]({results[num-1]["Mirror_1"]}) [2]({results[num-1]["Mirror_2"]}) [3]({results[num-1]["Mirror_3"]}) [4]({results[num-1]["Mirror_4"]}) [5]({results[num-1]["Mirror_5"]})' embed.add_field(name=f"Result {num}", value=info_str) await ctx.send(embed=embed)
def libgen(update, context): title = ' '.join(context.args) search = LibgenSearch() results = search.search_title(title) len_results = len(results) if len_results != 0: response_message = "Sua busca retornou " + str( len_results) + " resultados. Os valores do primeiro resultado são" response_message = response_message + "\nID: " + results[0]['ID'] response_message = response_message + "\nAutor: " + results[0]['Author'] response_message = response_message + "\nTitulo: " + results[0]['Title'] response_message = response_message + "\nEditora: " + results[0][ 'Publisher'] response_message = response_message + "\nAno: " + results[0]['Year'] response_message = response_message + "\nPaginas: " + results[0][ 'Pages'] response_message = response_message + "\nLingua: " + results[0][ 'Language'] response_message = response_message + "\nTamanho: " + results[0]['Size'] response_message = response_message + "\nExtensão: " + results[0][ 'Extension'] response_message = response_message + "\nPrimeiro Mirror: " + results[ 0]['Mirror_1'] response_message = response_message + "\n\(≧▽≦)/" else: response_message = "Livro não encontrado =<" context.bot.send_message(chat_id=update.effective_chat.id, text=response_message)
def getTextbookSearchResults(): if not request.json or not 'message' in request.json: abort(400) query = request.json['message'] s = LibgenSearch() response = s.search_title(query) response = calculateConfidence(query, response) response = filterBooks(response) response = Cover_URL(response) response = sorted(response, key=lambda i: i['confidence'], reverse=True) return jsonify(response)
def find_book(data): print('data') filters = list(data.split(',')) print(filters) lb = LibgenSearch() title = filters[0] author = filters[1] year = filters[2] lang = filters[3] extension = filters[4] api_filters = {"Year":year, "Extension":extension, "Language":lang, "Author":author} #{"Title" : title, "Author" : author, "ID" : book_id, "Year" : year, "Language": lang} results = lb.search_title_filtered(title, api_filters, exact_match=False) #search_title_filtered(title, api_filters, exact_match = False) return jsonify(results)
def FetchBookFromLibgenAPI(searchQuery: str, bAuthor=None, index=0): x = LibgenSearch().search_title(searchQuery) if (bAuthor == None): if (len(x) == 0): return None return x[index] else: sanity_counter = 0 print(f"{searchQuery} by {bAuthor}") for book in tqdm(x): sanity_counter += 1 print(book['Title'], ' \n-----\n', book['Author']) if (bAuthor.lower().replace(' ', '') in str(book['Author']).replace(' ', '').lower()): return book if (sanity_counter > 5): return None
def bybook(): name = request.args.get('bookname') if name: s = LibgenSearch() books = s.search_title(name) return jsonify({"books":books})
def byauthor(): name = request.args.get('authorname') if name: s = LibgenSearch() books = s.search_author(name) return jsonify({"books":books})
from libgen_api import LibgenSearch from tkinter import * from tkinter import filedialog import tkinter.font as tkFont import wget import os from bs4 import BeautifulSoup import requests import re LG = LibgenSearch() filters = {} x = '550' y = '600' windows_user = os.getlogin() default_download_directory = "C:/Users/" + windows_user + "/Downloads/" root = Tk() root.geometry('{}x{}'.format(x, y)) root.resizable(False, False) root.title("Books Downloader") sw = 0 var_type = IntVar() var_type.set(3) Extension_type = "all" progress = StringVar() progress.set('no downloads actives') TitleFontStyle = tkFont.Font(family="Lucida Grande", size=20)
def Cover_URL(array_books): for dicts in array_books: word = dicts["Title"] url = 'https://www.google.com/search?q={0}&tbm=isch'.format(word) content = requests.get(url).content soup = BeautifulSoup(content, 'lxml') images = soup.findAll('img') dicts['Cover_url'] = images[1].get('src') return array_books # Entry Point --------------------------------------------------------------------------------------- s = LibgenSearch() user_test_queries = [ "analysis of biological data", "mathematics", "statistics" ] for query in user_test_queries: print("\n=============\nUSER QUERY :: ", query) response = s.search_title(query) response = confidence_lvl(response, query) print('# QUERIES :: ', len(response)) # filter books response = FilterBooks(response)