Skip to content

Commit

Permalink
Create method view count for story objects [#59] Added story_seen/med…
Browse files Browse the repository at this point in the history
…ia_seen
  • Loading branch information
adw0rd committed Jan 7, 2021
1 parent 36f539e commit 066f3ac
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 8 deletions.
2 changes: 0 additions & 2 deletions instagrapi/config.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
SIG_KEY_VERSION = "4"
IG_SIG_KEY = "a86109795736d73c9a94172cd9b736917d7d94ca61c9101164894b3f0d43bef4"

API_DOMAIN = "i.instagram.com"
API_URL = "https://{domain}/api/v1/".format(domain=API_DOMAIN)

# Instagram 134.0.0.26.121
# Android (26/8.0.0;
Expand Down
39 changes: 39 additions & 0 deletions instagrapi/mixins/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import random
import time
from copy import deepcopy
from datetime import datetime
from typing import Dict, List
from urllib.parse import urlparse

Expand Down Expand Up @@ -526,3 +527,41 @@ def user_medias(self, user_id: int, amount: int = 50) -> List[Media]:
# it is better to try through a Private API)
medias = self.user_medias_v1(user_id, amount)
return medias

def media_seen(self, media_ids: List[str], skipped_media_ids: List[str] = []):
"""
Mark a media as seen
Parameters
----------
media_id: str
Returns
-------
bool
A boolean value
"""

def gen(media_ids):
result = {}
for media_id in media_ids:
media_pk, user_id = self.media_id(media_id).split('_')
end = int(datetime.now().timestamp())
begin = end - random.randint(100, 3000)
result[f"{media_pk}_{user_id}_{user_id}"] = [f"{begin}_{end}"]
return result

data = {
"container_module": "feed_timeline",
"live_vods_skipped": {},
"nuxes_skipped": {},
"nuxes": {},
"reels": gen(media_ids),
"live_vods": {},
"reel_media_skipped": gen(skipped_media_ids)
}
result = self.private_request(
"/v2/media/seen/?reel=1&live_vod=0",
self.with_default_data(data)
)
return result["status"] == "ok"
10 changes: 5 additions & 5 deletions instagrapi/mixins/private.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,15 +174,16 @@ def _send_private_request(
self.last_response = None
self.last_json = last_json = {} # for Sentry context in traceback
self.private.headers.update(self.base_headers)
if endpoint.startswith("/"):
endpoint = endpoint[1:]
if headers:
self.private.headers.update(headers)
if not login:
time.sleep(self.request_timeout)
if self.user_id and login:
raise Exception(f"User already login ({self.user_id})")
try:
if not endpoint.startswith('/'):
endpoint = f"/v1/{endpoint}"
api_url = f"https://{config.API_DOMAIN}/api{endpoint}"
if data: # POST
# Client.direct_answer raw dict
# data = json.dumps(data)
Expand All @@ -192,11 +193,10 @@ def _send_private_request(
if extra_sig:
data += "&".join(extra_sig)
response = self.private.post(
config.API_URL + endpoint, data=data, params=params
api_url, data=data, params=params
)
else: # GET
response = self.private.get(
config.API_URL + endpoint, params=params)
response = self.private.get(api_url, params=params)
self.logger.debug(
"private_request %s: %s (%s)", response.status_code, response.url, response.text
)
Expand Down
18 changes: 18 additions & 0 deletions instagrapi/mixins/story.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,21 @@ def user_stories(self, user_id: int, amount: int = None) -> List[Story]:
"""
# TODO: Add user_stories_gql
return self.user_stories_v1(user_id, amount)

def story_seen(self, story_pks: List[int], skipped_story_pks: List[int] = []):
"""
Mark a story as seen
Parameters
----------
story_pk: int
Returns
-------
bool
A boolean value
"""
return self.media_seen(
[self.media_id(mid) for mid in story_pks],
[self.media_id(mid) for mid in skipped_story_pks]
)
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

setup(
name='instagrapi',
version='1.4.4',
version='1.4.5',
author='Mikhail Andreev',
author_email='[email protected]',
license='MIT',
Expand Down

0 comments on commit 066f3ac

Please sign in to comment.