From d35fa1734e68eae3dc227f25c864351db6c4d464 Mon Sep 17 00:00:00 2001 From: Kevin Jonathan Date: Thu, 27 Jun 2019 02:00:18 +0700 Subject: [PATCH] added insights endpoint mixin --- instagram_private_api/client.py | 6 ++-- instagram_private_api/endpoints/__init__.py | 1 + instagram_private_api/endpoints/insights.py | 34 +++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 instagram_private_api/endpoints/insights.py diff --git a/instagram_private_api/client.py b/instagram_private_api/client.py index a01c5bfc..631a4099 100644 --- a/instagram_private_api/client.py +++ b/instagram_private_api/client.py @@ -43,7 +43,7 @@ class ConnectionError(Exception): MiscEndpointsMixin, LocationsEndpointsMixin, TagsEndpointsMixin, UsersEndpointsMixin, UploadEndpointsMixin, UsertagsEndpointsMixin, CollectionsEndpointsMixin, HighlightsEndpointsMixin, - IGTVEndpointsMixin, + IGTVEndpointsMixin, InsightsEndpointsMixin, ClientDeprecationWarning, ClientPendingDeprecationWarning, ClientExperimentalWarning ) @@ -60,7 +60,7 @@ class Client(AccountsEndpointsMixin, DiscoverEndpointsMixin, FeedEndpointsMixin, MiscEndpointsMixin, LocationsEndpointsMixin, TagsEndpointsMixin, UsersEndpointsMixin, UploadEndpointsMixin, UsertagsEndpointsMixin, CollectionsEndpointsMixin, HighlightsEndpointsMixin, - IGTVEndpointsMixin, object): + IGTVEndpointsMixin, InsightsEndpointsMixin, object): """Main API client class for the private app api.""" API_URL = 'https://i.instagram.com/api/{version!s}/' @@ -546,7 +546,7 @@ def _call_api(self, endpoint, params=None, query=None, return_response=False, un error_response=json.dumps(json_response)) # not from oembed or an ok response - if not json_response.get('provider_url') and json_response.get('status', '') != 'ok': + if not json_response.get('provider_url') and json_response.get('status', '') != 'ok' and not json_response.get('data', ''): raise ClientError( json_response.get('message', 'Unknown error'), code=response.code, error_response=json.dumps(json_response)) diff --git a/instagram_private_api/endpoints/__init__.py b/instagram_private_api/endpoints/__init__.py index 954b20d3..d335c78e 100644 --- a/instagram_private_api/endpoints/__init__.py +++ b/instagram_private_api/endpoints/__init__.py @@ -14,6 +14,7 @@ from .collections import CollectionsEndpointsMixin from .highlights import HighlightsEndpointsMixin from .igtv import IGTVEndpointsMixin +from .insights import InsightsEndpointsMixin from .common import ( ClientDeprecationWarning, diff --git a/instagram_private_api/endpoints/insights.py b/instagram_private_api/endpoints/insights.py new file mode 100644 index 00000000..5f0ceac5 --- /dev/null +++ b/instagram_private_api/endpoints/insights.py @@ -0,0 +1,34 @@ +import json + + +class InsightsEndpointsMixin(object): + """For endpoints in related to insights functionality.""" + + def insights(self): + """ + Get insights + :param day: + :return: + """ + + params = { + 'locale': 'en_US', + 'vc_policy': 'insights_policy', + 'surface': 'account', + 'access_token': 'undefined', + 'fb_api_caller_class': 'RelayModern', + 'variables': json.dumps({ + 'IgInsightsGridMediaImage_SIZE': 240, + 'timezone': 'Asia/Jakarta', + 'activityTab': 'true', + 'audienceTab': 'true', + 'contentTab': 'true', + 'query_params': json.dumps({ + 'access_token': '', + 'id': self.authenticated_user_id + }) + }), + 'doc_id': '1926322010754880' + } + res = self._call_api('ads/graphql/', query=params, unsigned=True) + return res