Skip to content

Commit 67c963b

Browse files
committed
Add some functions:
getMediaLikers, getGeoMedia, getSelfGeoMedia, fbUserSearch, searchUsers. searchUsername, syncFromAdressBook, searchTags, getTimeline,searchLocation,getSelfUserFeed, getPopularFeed. TODO: getUserFeed, getHashtagFeed, getLocationFeed
1 parent ba896a3 commit 67c963b

File tree

2 files changed

+119
-22
lines changed

2 files changed

+119
-22
lines changed

InstagramAPI.py

+88-21
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,6 @@ def login(self, force = False):
7070
print ("Login success!\n")
7171
return True;
7272

73-
def tagFeed(self, tag):
74-
userFeed = self.SendRequest("feed/tag/"+ tag +"/?rank_token=" + self.rank_token + "&ranked_content=true&")
75-
# TODO Instagram.php 1000-1015
76-
return userFeed
77-
7873
def like(self, mediaId):
7974
data = json.dumps({
8075
'_uuid' : self.uuid,
@@ -83,7 +78,7 @@ def like(self, mediaId):
8378
'media_id' : mediaId
8479
})
8580

86-
return self.SendRequest("media/"+ str(mediaId) +"/like/", self.generateSignature(data))
81+
return self.SendRequest('media/'+ str(mediaId) +'/like/', self.generateSignature(data))
8782

8883
def SendRequest(self, endpoint, post = None, login = False):
8984
if (not self.isLoggedIn and not login):
@@ -191,15 +186,15 @@ def editMedia(self, mediaId, captionText = ''):
191186
'_csrftoken' : self.token,
192187
'caption_text' : captionText
193188
})
194-
return self.SendRequest("media/"+ str(mediaId) +"/edit_media/", self.generateSignature(data))
189+
return self.SendRequest('media/'+ str(mediaId) +'/edit_media/', self.generateSignature(data))
195190

196191
def removeSelftag(self, mediaId):
197192
data = json.dumps({
198193
'_uuid' : self.uuid,
199194
'_uid' : self.username_id,
200195
'_csrftoken' : self.token
201196
})
202-
return self.SendRequest("media/"+ str(mediaId) +"/remove/", self.generateSignature(data))
197+
return self.SendRequest('media/'+ str(mediaId) +'/remove/', self.generateSignature(data))
203198

204199
def mediaInfo(self, mediaId):
205200
data = json.dumps({
@@ -208,7 +203,7 @@ def mediaInfo(self, mediaId):
208203
'_csrftoken' : self.token,
209204
'media_id' : mediaId
210205
})
211-
return self.SendRequest("media/"+ str(mediaId) +"/info/", self.generateSignature(data))
206+
return self.SendRequest('media/'+ str(mediaId) +'/info/', self.generateSignature(data))
212207

213208
def deleteMedia(self, mediaId):
214209
data = json.dumps({
@@ -217,7 +212,7 @@ def deleteMedia(self, mediaId):
217212
'_csrftoken' : self.token,
218213
'media_id' : mediaId
219214
})
220-
return self.SendRequest("media/"+ str(mediaId) +"/delete/", self.generateSignature(data))
215+
return self.SendRequest('media/'+ str(mediaId) +'/delete/', self.generateSignature(data))
221216

222217
def comment(self, mediaId, commentText):
223218
data = json.dumps({
@@ -226,7 +221,7 @@ def comment(self, mediaId, commentText):
226221
'_csrftoken' : self.token,
227222
'comment_text' : commentText
228223
})
229-
return self.SendRequest("media/"+ str(mediaId) +"/comment/", self.generateSignature(data))
224+
return self.SendRequest('media/'+ str(mediaId) +'/comment/', self.generateSignature(data))
230225

231226
def deleteComment(self, mediaId, captionText, commentId):
232227
data = json.dumps({
@@ -235,7 +230,7 @@ def deleteComment(self, mediaId, captionText, commentId):
235230
'_csrftoken' : self.token,
236231
'caption_text' : captionText
237232
})
238-
return self.SendRequest("media/"+ str(mediaId) +"/comment/"+ str(commentId) +"/delete/", self.generateSignature(data))
233+
return self.SendRequest('media/'+ str(mediaId) +'/comment/'+ str(commentId) +'/delete/', self.generateSignature(data))
239234

240235
def changeProfilePicture(self, photo):
241236
# TODO Instagram.php 705-775
@@ -247,31 +242,31 @@ def removeProfilePicture(self):
247242
'_uid' : self.username_id,
248243
'_csrftoken' : self.token
249244
})
250-
return self.SendRequest("accounts/remove_profile_picture/", self.generateSignature(data))
245+
return self.SendRequest('accounts/remove_profile_picture/', self.generateSignature(data))
251246

252247
def setPrivateAccount(self):
253248
data = json.dumps({
254249
'_uuid' : self.uuid,
255250
'_uid' : self.username_id,
256251
'_csrftoken' : self.token
257252
})
258-
return self.SendRequest("accounts/set_private/", self.generateSignature(data))
253+
return self.SendRequest('accounts/set_private/', self.generateSignature(data))
259254

260255
def setPublicAccount(self):
261256
data = json.dumps({
262257
'_uuid' : self.uuid,
263258
'_uid' : self.username_id,
264259
'_csrftoken' : self.token
265260
})
266-
return self.SendRequest("accounts/set_public/", self.generateSignature(data))
261+
return self.SendRequest('accounts/set_public/', self.generateSignature(data))
267262

268263
def getProfileData(self):
269264
data = json.dumps({
270265
'_uuid' : self.uuid,
271266
'_uid' : self.username_id,
272267
'_csrftoken' : self.token
273268
})
274-
return self.SendRequest("accounts/current_user/?edit=true", self.generateSignature(data))
269+
return self.SendRequest('accounts/current_user/?edit=true', self.generateSignature(data))
275270

276271
def editProfile(self, url, phone, first_name, biography, email, gender):
277272
data = json.dumps({
@@ -286,10 +281,13 @@ def editProfile(self, url, phone, first_name, biography, email, gender):
286281
'email' : email,
287282
'gender' : gender,
288283
})
289-
return self.SendRequest("accounts/edit_profile/", self.generateSignature(data))
284+
return self.SendRequest('accounts/edit_profile/', self.generateSignature(data))
290285

291286
def getUsernameInfo(self, usernameId):
292-
return self.SendRequest("users/"+ str(usernameId) +"/info/")
287+
return self.SendRequest('users/'+ str(usernameId) +'/info/')
288+
289+
def getSelfUsernameInfo(self):
290+
return self.getUsernameInfo(self.username_id)
293291

294292
def getRecentActivity(self):
295293
activity = self.SendRequest('news/inbox/?')
@@ -307,15 +305,84 @@ def getv2Inbox(self):
307305
return inbox
308306

309307
def getUserTags(self, usernameId):
310-
tags = self.SendRequest('usertags/'+ str(usernameId) +'/feed/?rank_token='+ self.rank_token +'&ranked_content=true&')
308+
tags = self.SendRequest('usertags/'+ str(usernameId) +'/feed/?rank_token='+ str(self.rank_token) +'&ranked_content=true&')
311309
# TODO Instagram.php 975-985
312310
return tags
313311

314312
def getSelfUserTags(self):
315313
return self.getUserTags(self.username_id)
316314

317-
def getSelfUsernameInfo(self):
318-
return self.getUsernameInfo(self.username_id)
315+
def tagFeed(self, tag):
316+
userFeed = self.SendRequest('feed/tag/'+ str(tag) +'/?rank_token=' + str(self.rank_token) + '&ranked_content=true&')
317+
# TODO Instagram.php 1000-1015
318+
return userFeed
319+
320+
def getMediaLikers(self, mediaId):
321+
likers = self.SendRequest('media/'+ str(mediaId) +'/likers/?')
322+
# TODO Instagram.php 1025-1035
323+
return likers
324+
325+
def getGeoMedia(self, usernameId):
326+
locations = self.SendRequest('maps/user/'+ str(usernameId) +'/')
327+
# TODO Instagram.php 1050-1060
328+
return locations
329+
330+
def getSelfGeoMedia(self):
331+
return self.getGeoMedia(self.username_id)
332+
333+
def fbUserSearch(self, query):
334+
query = self.SendRequest('fbsearch/topsearch/?context=blended&query='+ str(query) +'&rank_token='+ str(self.rank_token))
335+
# TODO Instagram.php 1080-1090
336+
return query
337+
338+
def searchUsers(self, query):
339+
query = self.SendRequest('users/search/?ig_sig_key_version='+ str(self.SIG_KEY_VERSION)
340+
+'&is_typeahead=true&query='+ str(query) +'&rank_token='+ str(self.rank_token))
341+
# TODO Instagram.php 1100-1110
342+
return query
343+
344+
def searchUsername(self, usernameName):
345+
query = self.SendRequest('users/'+ str(usernameName) +'/usernameinfo/')
346+
# TODO Instagram.php 1080-1090
347+
return query
348+
349+
def syncFromAdressBook(self, contacts):
350+
return self.SendRequest('address_book/link/?include=extra_display_name,thumbnails', json.dumps(contacts))
351+
352+
def searchTags(self, query):
353+
query = self.SendRequest('tags/search/?is_typeahead=true&q='+ str(query) +'&rank_token='+ str(self.rank_token))
354+
# TODO Instagram.php 1160-1170
355+
return query
356+
357+
def getTimeline(self):
358+
query = self.SendRequest('feed/timeline/?rank_token='+ str(self.rank_token) +'&ranked_content=true&')
359+
# TODO Instagram.php 1180-1190
360+
return query
361+
362+
def getUserFeed(self, usernameId, maxid = None, minTimestamp = None):
363+
# TODO Instagram.php 1200-1220
364+
return False
365+
366+
def getSelfUserFeed(self):
367+
return self.getUserFeed(self.username_id)
368+
369+
def getHashtagFeed(self, hashtagString, maxid = None):
370+
# TODO Instagram.php 1230-1250
371+
return False
372+
373+
def searchLocation(self, query):
374+
locationFeed = self.SendRequest('fbsearch/places/?rank_token='+ str(self.rank_token) +'&query=' + str(query))
375+
# TODO Instagram.php 1250-1270
376+
return locationFeed
377+
378+
def getLocationFeed(self, locationId, maxid = None):
379+
# TODO Instagram.php 1280-1300
380+
return False
381+
382+
def getPopularFeed(self):
383+
popularFeed = self.SendRequest('feed/popular/?people_teaser_supported=1&rank_token='+ str(self.rank_token) +'&ranked_content=true&')
384+
# TODO Instagram.php 1315-1325
385+
return popularFeed
319386

320387
InstagramAPI = InstagramAPI("login", "password")
321388
InstagramAPI.login() # login

README.md

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Instagram-API-python
2-
<img src="https://img.shields.io/badge/coverege-15%25-yellow.svg">
2+
<img src="https://img.shields.io/badge/coverege-35%25-yellow.svg">
33
<img src="https://img.shields.io/badge/version-b%200.01-orange.svg">
44
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=UM6L3YJENAQZ6&lc=US&item_name=InstaBot%2epy&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted" title="Support project"><img src="https://img.shields.io/badge/Support%20project-paypal-brightgreen.svg"></a>
55

@@ -63,6 +63,30 @@ This is python port of https://github.com/mgp25/Instagram-API, written on PHP. W
6363

6464
27) getSelfUserTags;
6565

66+
28) getMediaLikers (TODO);
67+
68+
29) getGeoMedia (TODO);
69+
70+
30) getSelfGeoMedia;
71+
72+
31) fbUserSearch (TODO);
73+
74+
32) searchUsers (TODO);
75+
76+
33) searchUsername (TODO);
77+
78+
34) syncFromAdressBook;
79+
80+
35) searchTags (TODO);
81+
82+
36) getTimeline (TODO);
83+
84+
37) searchLocation (TODO);
85+
86+
38) getSelfUserFeed;
87+
88+
39) getPopularFeed (TODO);
89+
6690
### TODO:
6791

6892
1) changeProfilePicture;
@@ -77,4 +101,10 @@ This is python port of https://github.com/mgp25/Instagram-API, written on PHP. W
77101

78102
6) configure;
79103

104+
7) getUserFeed;
105+
106+
8) getHashtagFeed;
107+
108+
9) getLocationFeed;
109+
80110
Original contains more than 1500 rows, I will be glad if you could help me! The hardest part is done - it left to rewrite a bunch of features that simply. Thank you!

0 commit comments

Comments
 (0)