def query(self, q: str) -> dict: """ # = > Função para realizar a query. :param q: str :return: dict """ from modules.web_tools.google_trends.tools.url_setter import UrlSetter from modules.web_tools.google_trends.tools.fix import Fix import requests # = > Construindo a URL de acesso. url = UrlSetter.gen_url(self.__api_url.format(q), { "hl": self.language, "tz": self.timezone }) response = requests.get(url) if response.status_code != 200: raise ExceptionAutocomplete("Status Code: {0}".format( response.status_code)) json_str = Fix.google_json(response.text) import json return json.loads(json_str)
def explore(self) -> dict: """ = > Propriedade contendo os dados da primeira requisição à API :return: dict """ if not self.__explore: # = > Se os dados não existirem, podemos requisita-los self.__main_access() from modules.web_tools.google_trends.tools.url_setter import UrlSetter # Formamos a URL para o método GET. url = UrlSetter.gen_url(self.__explore_url, self.__explore_params) response = self.session.get(url) if response.status_code != 200: raise ExceptionExploreRequest( "Não foi possível obter os dados de \"explore\". \n[Status Code: {0}]".format(response.status_code)) from modules.web_tools.google_trends.tools.fix import Fix import json # = > Corrigimos o JSON retornado pela API self.__explore = json.loads(Fix.google_json(response.text)) return self.__explore
def categories(self) -> dict: """ # = > Dict com categorias disponíveis. :return: dict """ if not self.__categories: # = > Se as categorias não estiverem setadas, então faremos a requisição. import requests from modules.web_tools.google_trends.tools.url_setter import UrlSetter # = > Construindo URL de acesso. url = UrlSetter.gen_url(self.__api, self.__params) response = requests.get(url) if response.status_code != 200: raise ExceptionCategories("Status Code: {0}".format( response.status_code)) from modules.web_tools.google_trends.tools.fix import Fix import json self.__categories = json.loads(Fix.google_json(response.text)) return self.__categories
def related_topics(self) -> Generator[dict, None, None]: for widget in self.widgets: if "related_topics" in str(widget["id"]).lower(): from modules.web_tools.google_trends.tools.url_setter import UrlSetter params = { "hl": self.language, "tz": self.timezone, "req": widget["request"], "token": widget["token"] } url = UrlSetter.gen_url(self.__related_searches_url, params) response = self.session.get(url) if response.status_code != 200: raise ExceptionExploreRequest( "Não foi possível obter o Related Topics Widget. \n [Status Code: {0}]" .format(response.status_code)) from modules.web_tools.google_trends.tools.fix import Fix import json yield json.loads(Fix.google_json(response.text))
def timeseries_widgets(self) -> Generator[dict, None, None]: # Navegamos pelos widgets for widget in self.widgets: # Verificamos se sua ID contém o texto que procuramos if "timeseries" in str(widget["id"]).lower(): from modules.web_tools.google_trends.tools.url_setter import UrlSetter # Preparamos os parâmetros params = { "hl": self.language, "tz": self.timezone, "req": widget["request"], "token": widget["token"] } # Geramos a URL url = UrlSetter.gen_url(self.__timeseries_widget_url, params) # Capturamos os dados response = self.session.get(url) if response.status_code != 200: raise ExceptionExploreRequest( "Não foi possível obter o Timeseries Widget. \n [Status Code: {0}]" .format(response.status_code)) # Se foi um sucesso trataremos o JSON e o retornaremos from modules.web_tools.google_trends.tools.fix import Fix import json yield json.loads(Fix.google_json(response.text))
def get_latest(self) -> dict: from modules.web_tools.google_trends.tools.url_setter import UrlSetter from modules.web_tools.google_trends.tools.fix import Fix import requests response = requests.get(UrlSetter.gen_url(self._api_url, self._params)) latest = {} if response.status_code == 200: # Se obtivemos uma resposta positiva, vamos tratar o JSON json_str = Fix.google_json(response.text) import json latest = json.loads(json_str) else: raise ExceptionLatest("Status code: {0}".format( response.status_code)) return latest
def locales(self) -> dict: if not self.__geo_locales: # = > Se não existirem locais setados, vamos requisita-los. import requests from modules.web_tools.google_trends.tools.url_setter import UrlSetter # Montamos a URL. url = UrlSetter.gen_url(self.__api, self.__params) response = requests.get(url) if response.status_code != 200: raise ExceptionGeo("Status Code: {0}".format( response.status_code)) from modules.web_tools.google_trends.tools.fix import Fix import json self.__geo_locales = json.loads(Fix.google_json(response.text)) return self.__geo_locales