Skip to content

Commit 1882e39

Browse files
committed
Implement Hashtag medias methods [#32] Fix pagination by top/recent for v1
1 parent 2d601ae commit 1882e39

File tree

3 files changed

+25
-16
lines changed

3 files changed

+25
-16
lines changed

instagrapi/hashtag.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,26 @@ def hashtag_medias_v1(self, name: str, amount: int = 27, tab_key: str = '') -> L
118118
'include_persistent': 'true',
119119
'rank_token': self.rank_token,
120120
}
121-
result = self.private_request(
122-
f'tags/{name}/sections/', self.with_default_data(data)
123-
)
121+
max_id = None
124122
medias = []
125-
for section in result['sections']:
126-
layout_content = section.get('layout_content') or {}
127-
nodes = layout_content.get('medias') or []
128-
for node in nodes:
129-
medias.append(
130-
extract_media_v1(node['media'])
131-
)
123+
while True:
124+
result = self.private_request(
125+
f'tags/{name}/sections/',
126+
params={"max_id": max_id} if max_id else {},
127+
data=self.with_default_data(data)
128+
)
129+
for section in result['sections']:
130+
layout_content = section.get('layout_content') or {}
131+
nodes = layout_content.get('medias') or []
132+
for node in nodes:
133+
if amount and len(medias) >= amount:
134+
break
135+
medias.append(extract_media_v1(node['media']))
136+
if not result["more_available"]:
137+
break
138+
if amount and len(medias) >= amount:
139+
break
140+
max_id = result["next_max_id"]
132141
if amount:
133142
medias = medias[:amount]
134143
return medias

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
setup(
2222
name='instagrapi',
23-
version='1.2.6',
23+
version='1.2.7',
2424
author='Mikhail Andreev',
2525
author_email='[email protected]',
2626
license='MIT',

tests.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -909,13 +909,13 @@ def test_hashtag_medias_recent(self):
909909
self.assertIsInstance(medias[0], Media)
910910

911911
def test_extract_hashtag_medias_recent(self):
912-
medias_a1 = self.api.hashtag_medias_recent_a1('dhbastards', amount=11)
913-
medias_v1 = self.api.hashtag_medias_recent_v1('dhbastards', amount=11)
914-
self.assertEqual(len(medias_a1), 11)
912+
medias_v1 = self.api.hashtag_medias_recent_v1('dhbastards', amount=31)
913+
medias_a1 = self.api.hashtag_medias_recent_a1('dhbastards', amount=31)
914+
self.assertEqual(len(medias_a1), 31)
915915
self.assertIsInstance(medias_a1[0], Media)
916-
self.assertEqual(len(medias_v1), 11)
916+
self.assertEqual(len(medias_v1), 31)
917917
self.assertIsInstance(medias_v1[0], Media)
918-
for i, a1 in enumerate(medias_a1):
918+
for i, a1 in enumerate(medias_a1[:10]):
919919
a1 = a1.dict()
920920
v1 = medias_v1[i].dict()
921921
for f in self.REQUIRED_MEDIA_FIELDS:

0 commit comments

Comments
 (0)