Beispiel #1
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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))
Beispiel #5
0
    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))
Beispiel #6
0
    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
Beispiel #7
0
    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