-
Notifications
You must be signed in to change notification settings - Fork 0
/
pesquisa.py
82 lines (69 loc) · 3.3 KB
/
pesquisa.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# -- coding: UTF-8 --
import hashlib
import os
import tornado
from tornado.web import Application, RequestHandler, HTTPError, StaticFileHandler
from propriedades import propriedades
from pesquisa_google import GoogleScholarSpider
from template import render_template
class PesquisaHandler(tornado.web.RequestHandler):
def __get_pdfs_separadamente__(self, urls):
urls_nao_pdf = []
urls_pdf = []
for url in urls:
url_md5 = hashlib.md5(url).hexdigest()
if url.endswith(".pdf"):
urls_pdf.append({"md5": url_md5,"val": url})
else:
urls_nao_pdf.append({"md5": url_md5,"val": url})
return (urls_nao_pdf, urls_pdf)
def __call_template_pesquisa__(self, pesquisa=None, urls=None):
title = "Pesquisa no Google Acadêmico" if pesquisa == None else "Resultado da pesquisa: " + pesquisa
if urls != None:
urls, urls_pdf = self.__get_pdfs_separadamente__(urls)
options = {"title": title, "urls": urls, "urls_pdf": urls_pdf}
result = render_template("templates/pesquisa.html", options)
self.write(result)
def get(self):
""" Quando a página google_academico_acha_autores/?pesquisa=texto carregar """
try:
pesquisa = self.get_argument("pesquisa")
except:
pesquisa = None
urls = None
if pesquisa != None:
spider = GoogleScholarSpider()
spider.run_google_search(pesquisa)
urls = spider.get_dict_urls()["urls"]
self.__call_template_pesquisa__(pesquisa, urls)
class GetPageHandler(tornado.web.RequestHandler):
def __format_resultado__(self, resultado):
resultado_formatado = []
resultado["citation_authors"] = resultado["citation_authors"] + resultado["citation_author"]
del(resultado["citation_author"])
for propriedade in propriedades:
if resultado.has_key(propriedade):
propriedade_valor = {"label": propriedade.replace("_", " "), "valor": ""}
for valor in resultado[propriedade]:
propriedade_valor["valor"] += " " + valor
propriedade_valor["valor"] = propriedade_valor["valor"].strip()
resultado_formatado.append(propriedade_valor)
return resultado_formatado
def __call_template_propriedades__(self, resultado):
options = {"resultado": resultado}
result = render_template("templates/propriedades.html", options)
self.write(result)
def get(self, url):
spider = GoogleScholarSpider()
spider.run_page_parser(url)
resultado = spider.get_dict_authors()
resultado = self.__format_resultado__(resultado)
self.__call_template_propriedades__(resultado)
STATIC_PATH = os.path.abspath(os.path.dirname(__file__))
routes_google_academico_acha_autores = [
(r"/google_academico_acha_autores/css/(.*)", StaticFileHandler, {"path": STATIC_PATH + "/css/"}),
(r"/google_academico_acha_autores/js/(.*)", StaticFileHandler, {"path": STATIC_PATH + "/js/"}),
(r"/google_academico_acha_autores/img/(.*)", StaticFileHandler, {"path": STATIC_PATH + "/img/"}),
(r"/google_academico_acha_autores/get_page/(.*)", GetPageHandler),
(r"/google_academico_acha_autores/?.*", PesquisaHandler)
]