### What problem does this PR solve? ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)tags/v0.9.0
| if not ans: | if not ans: | ||||
| return ArXiv.be_output("") | return ArXiv.be_output("") | ||||
| sort_choices = {"relevance": arxiv.SortCriterion.Relevance, | |||||
| "lastUpdatedDate": arxiv.SortCriterion.LastUpdatedDate, | |||||
| 'submittedDate': arxiv.SortCriterion.SubmittedDate} | |||||
| arxiv_client = arxiv.Client() | |||||
| search = arxiv.Search( | |||||
| query=ans, | |||||
| max_results=self._param.top_n, | |||||
| sort_by=sort_choices[self._param.sort_by] | |||||
| ) | |||||
| arxiv_res = [ | |||||
| {"content": 'Title: ' + i.title + '\nPdf_Url: <a href="' + i.pdf_url + '"></a> \nSummary: ' + i.summary} for | |||||
| i in list(arxiv_client.results(search))] | |||||
| try: | |||||
| sort_choices = {"relevance": arxiv.SortCriterion.Relevance, | |||||
| "lastUpdatedDate": arxiv.SortCriterion.LastUpdatedDate, | |||||
| 'submittedDate': arxiv.SortCriterion.SubmittedDate} | |||||
| arxiv_client = arxiv.Client() | |||||
| search = arxiv.Search( | |||||
| query=ans, | |||||
| max_results=self._param.top_n, | |||||
| sort_by=sort_choices[self._param.sort_by] | |||||
| ) | |||||
| arxiv_res = [ | |||||
| {"content": 'Title: ' + i.title + '\nPdf_Url: <a href="' + i.pdf_url + '"></a> \nSummary: ' + i.summary} for | |||||
| i in list(arxiv_client.results(search))] | |||||
| except Exception as e: | |||||
| return ArXiv.be_output("**ERROR**: " + str(e)) | |||||
| if not arxiv_res: | if not arxiv_res: | ||||
| return ArXiv.be_output("") | return ArXiv.be_output("") | ||||
| df = pd.DataFrame(arxiv_res) | df = pd.DataFrame(arxiv_res) | ||||
| if DEBUG: print(df, ":::::::::::::::::::::::::::::::::") | if DEBUG: print(df, ":::::::::::::::::::::::::::::::::") | ||||
| return df | |||||
| return df |
| if not ans: | if not ans: | ||||
| return Baidu.be_output("") | return Baidu.be_output("") | ||||
| url = 'https://www.baidu.com/s?wd=' + ans + '&rn=' + str(self._param.top_n) | |||||
| headers = { | |||||
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} | |||||
| response = requests.get(url=url, headers=headers) | |||||
| try: | |||||
| url = 'https://www.baidu.com/s?wd=' + ans + '&rn=' + str(self._param.top_n) | |||||
| headers = { | |||||
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} | |||||
| response = requests.get(url=url, headers=headers) | |||||
| url_res = re.findall(r"'url': \\\"(.*?)\\\"}", response.text) | |||||
| title_res = re.findall(r"'title': \\\"(.*?)\\\",\\n", response.text) | |||||
| body_res = re.findall(r"\"contentText\":\"(.*?)\"", response.text) | |||||
| baidu_res = [{"content": re.sub('<em>|</em>', '', '<a href="' + url + '">' + title + '</a> ' + body)} for url, title, body in zip(url_res, title_res, body_res)] | |||||
| del body_res, url_res, title_res | |||||
| url_res = re.findall(r"'url': \\\"(.*?)\\\"}", response.text) | |||||
| title_res = re.findall(r"'title': \\\"(.*?)\\\",\\n", response.text) | |||||
| body_res = re.findall(r"\"contentText\":\"(.*?)\"", response.text) | |||||
| baidu_res = [{"content": re.sub('<em>|</em>', '', '<a href="' + url + '">' + title + '</a> ' + body)} for | |||||
| url, title, body in zip(url_res, title_res, body_res)] | |||||
| del body_res, url_res, title_res | |||||
| except Exception as e: | |||||
| return Baidu.be_output("**ERROR**: " + str(e)) | |||||
| if not baidu_res: | if not baidu_res: | ||||
| return Baidu.be_output("") | return Baidu.be_output("") |
| if not ans: | if not ans: | ||||
| return DuckDuckGo.be_output("") | return DuckDuckGo.be_output("") | ||||
| if self._param.channel == "text": | |||||
| with DDGS() as ddgs: | |||||
| # {'title': '', 'href': '', 'body': ''} | |||||
| duck_res = [{"content": '<a href="' + i["href"] + '">' + i["title"] + '</a> ' + i["body"]} for i in | |||||
| ddgs.text(ans, max_results=self._param.top_n)] | |||||
| elif self._param.channel == "news": | |||||
| with DDGS() as ddgs: | |||||
| # {'date': '', 'title': '', 'body': '', 'url': '', 'image': '', 'source': ''} | |||||
| duck_res = [{"content": '<a href="' + i["url"] + '">' + i["title"] + '</a> ' + i["body"]} for i in | |||||
| ddgs.news(ans, max_results=self._param.top_n)] | |||||
| try: | |||||
| if self._param.channel == "text": | |||||
| with DDGS() as ddgs: | |||||
| # {'title': '', 'href': '', 'body': ''} | |||||
| duck_res = [{"content": '<a href="' + i["href"] + '">' + i["title"] + '</a> ' + i["body"]} for i | |||||
| in ddgs.text(ans, max_results=self._param.top_n)] | |||||
| elif self._param.channel == "news": | |||||
| with DDGS() as ddgs: | |||||
| # {'date': '', 'title': '', 'body': '', 'url': '', 'image': '', 'source': ''} | |||||
| duck_res = [{"content": '<a href="' + i["url"] + '">' + i["title"] + '</a> ' + i["body"]} for i | |||||
| in ddgs.news(ans, max_results=self._param.top_n)] | |||||
| except Exception as e: | |||||
| return DuckDuckGo.be_output("**ERROR**: " + str(e)) | |||||
| if not duck_res: | if not duck_res: | ||||
| return DuckDuckGo.be_output("") | return DuckDuckGo.be_output("") |
| if not ans: | if not ans: | ||||
| return PubMed.be_output("") | return PubMed.be_output("") | ||||
| Entrez.email = self._param.email | |||||
| pubmedids = Entrez.read(Entrez.esearch(db='pubmed', retmax=self._param.top_n, term=ans))['IdList'] | |||||
| pubmedcnt = ET.fromstring( | |||||
| Entrez.efetch(db='pubmed', id=",".join(pubmedids), retmode="xml").read().decode("utf-8")) | |||||
| pubmed_res = [{"content": 'Title:' + child.find("MedlineCitation").find("Article").find( | |||||
| "ArticleTitle").text + '\nUrl:<a href=" https://pubmed.ncbi.nlm.nih.gov/' + child.find( | |||||
| "MedlineCitation").find("PMID").text + '">' + '</a>\n' + 'Abstract:' + child.find("MedlineCitation").find( | |||||
| "Article").find("Abstract").find("AbstractText").text} for child in pubmedcnt.findall("PubmedArticle")] | |||||
| try: | |||||
| Entrez.email = self._param.email | |||||
| pubmedids = Entrez.read(Entrez.esearch(db='pubmed', retmax=self._param.top_n, term=ans))['IdList'] | |||||
| pubmedcnt = ET.fromstring( | |||||
| Entrez.efetch(db='pubmed', id=",".join(pubmedids), retmode="xml").read().decode("utf-8")) | |||||
| pubmed_res = [{"content": 'Title:' + child.find("MedlineCitation").find("Article").find( | |||||
| "ArticleTitle").text + '\nUrl:<a href=" https://pubmed.ncbi.nlm.nih.gov/' + child.find( | |||||
| "MedlineCitation").find("PMID").text + '">' + '</a>\n' + 'Abstract:' + child.find( | |||||
| "MedlineCitation").find("Article").find("Abstract").find("AbstractText").text} for child in | |||||
| pubmedcnt.findall("PubmedArticle")] | |||||
| except Exception as e: | |||||
| return PubMed.be_output("**ERROR**: " + str(e)) | |||||
| if not pubmed_res: | if not pubmed_res: | ||||
| return PubMed.be_output("") | return PubMed.be_output("") |
| if not ans: | if not ans: | ||||
| return Wikipedia.be_output("") | return Wikipedia.be_output("") | ||||
| wiki_res = [] | |||||
| wikipedia.set_lang(self._param.language) | |||||
| wiki_engine = wikipedia | |||||
| for wiki_key in wiki_engine.search(ans, results=self._param.top_n): | |||||
| try: | |||||
| try: | |||||
| wiki_res = [] | |||||
| wikipedia.set_lang(self._param.language) | |||||
| wiki_engine = wikipedia | |||||
| for wiki_key in wiki_engine.search(ans, results=self._param.top_n): | |||||
| page = wiki_engine.page(title=wiki_key, auto_suggest=False) | page = wiki_engine.page(title=wiki_key, auto_suggest=False) | ||||
| wiki_res.append({"content": '<a href="' + page.url + '">' + page.title + '</a> ' + page.summary}) | wiki_res.append({"content": '<a href="' + page.url + '">' + page.title + '</a> ' + page.summary}) | ||||
| except Exception as e: | |||||
| print(e) | |||||
| pass | |||||
| except Exception as e: | |||||
| return Wikipedia.be_output("**ERROR**: " + str(e)) | |||||
| if not wiki_res: | if not wiki_res: | ||||
| return Wikipedia.be_output("") | return Wikipedia.be_output("") |