Skip to content

Commit 521e2cb

Browse files
committed
Add some functions:
getUserFollowings, getUserFollowers, getSelfUserFollowers, getSelfUsersFollowing, unlike, getMediaComments, setNameAndPhone, getDirectShare, follow. unfollow, block, unblock; TODO: backup
1 parent 67c963b commit 521e2cb

File tree

2 files changed

+115
-11
lines changed

2 files changed

+115
-11
lines changed

InstagramAPI.py

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

73-
def like(self, mediaId):
74-
data = json.dumps({
75-
'_uuid' : self.uuid,
76-
'_uid' : self.username_id,
77-
'_csrftoken' : self.token,
78-
'media_id' : mediaId
79-
})
80-
81-
return self.SendRequest('media/'+ str(mediaId) +'/like/', self.generateSignature(data))
82-
8373
def SendRequest(self, endpoint, post = None, login = False):
8474
if (not self.isLoggedIn and not login):
8575
raise Exception("Not logged in!\n")
@@ -384,6 +374,94 @@ def getPopularFeed(self):
384374
# TODO Instagram.php 1315-1325
385375
return popularFeed
386376

377+
def getUserFollowings(self, usernameId, maxid = None):
378+
return self.SendRequest('friendships/'+ str(usernameId) +'/following/?max_id='+ str(maxid)
379+
+'&ig_sig_key_version='+ self.SIG_KEY_VERSION +'&rank_token='+ self.rank_token)
380+
381+
def getSelfUsersFollowing(self):
382+
return self.getUserFollowings(self.username_id)
383+
384+
def getUserFollowers(self, usernameId, maxid = None):
385+
return self.SendRequest('friendships/'+ str(usernameId) +'/followers/?max_id='+ str(maxid)
386+
+'&ig_sig_key_version='+ self.SIG_KEY_VERSION +'&rank_token='+ self.rank_token)
387+
388+
def getSelfUserFollowers(self):
389+
return self.getUserFollowers(self.username_id)
390+
391+
def like(self, mediaId):
392+
data = json.dumps({
393+
'_uuid' : self.uuid,
394+
'_uid' : self.username_id,
395+
'_csrftoken' : self.token,
396+
'media_id' : mediaId
397+
})
398+
return self.SendRequest('media/'+ str(mediaId) +'/like/', self.generateSignature(data))
399+
400+
def unlike(self, mediaId):
401+
data = json.dumps({
402+
'_uuid' : self.uuid,
403+
'_uid' : self.username_id,
404+
'_csrftoken' : self.token,
405+
'media_id' : mediaId
406+
})
407+
return self.SendRequest('media/'+ str(mediaId) +'/unlike/', self.generateSignature(data))
408+
409+
def getMediaComments(self, mediaId):
410+
return self.SendRequest('media/'+ mediaId +'/comments/?')
411+
412+
def setNameAndPhone(self, name = '', phone = ''):
413+
data = json.dumps({
414+
'_uuid' : self.uuid,
415+
'_uid' : self.username_id,
416+
'first_name' : name,
417+
'phone_number' : phone,
418+
'_csrftoken' : self.token
419+
})
420+
return self.SendRequest('accounts/set_phone_and_name/', self.generateSignature(data))
421+
422+
def getDirectShare(self):
423+
return self.SendRequest('direct_share/inbox/?')
424+
425+
def backup(self):
426+
# TODO Instagram.php 1470-1485
427+
return False
428+
429+
def follow(self, userId):
430+
data = json.dumps({
431+
'_uuid' : self.uuid,
432+
'_uid' : self.username_id,
433+
'user_id' : userId,
434+
'_csrftoken' : self.token
435+
})
436+
return self.SendRequest('friendships/create/'+ str(userId) +'/', self.generateSignature(data))
437+
438+
def unfollow(self, userId):
439+
data = json.dumps({
440+
'_uuid' : self.uuid,
441+
'_uid' : self.username_id,
442+
'user_id' : userId,
443+
'_csrftoken' : self.token
444+
})
445+
return self.SendRequest('friendships/destroy/'+ str(userId) +'/', self.generateSignature(data))
446+
447+
def block(self, userId):
448+
data = json.dumps({
449+
'_uuid' : self.uuid,
450+
'_uid' : self.username_id,
451+
'user_id' : userId,
452+
'_csrftoken' : self.token
453+
})
454+
return self.SendRequest('friendships/block/'+ str(userId) +'/', self.generateSignature(data))
455+
456+
def unblock(self, userId):
457+
data = json.dumps({
458+
'_uuid' : self.uuid,
459+
'_uid' : self.username_id,
460+
'user_id' : userId,
461+
'_csrftoken' : self.token
462+
})
463+
return self.SendRequest('friendships/unblock/'+ str(userId) +'/', self.generateSignature(data))
464+
387465
InstagramAPI = InstagramAPI("login", "password")
388466
InstagramAPI.login() # login
389467
InstagramAPI.tagFeed("cat") # get media list by tag #cat

README.md

+27-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-35%25-yellow.svg">
2+
<img src="https://img.shields.io/badge/coverege-45%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

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

8888
39) getPopularFeed (TODO);
8989

90+
40) getUserFollowings;
91+
92+
41) getUserFollowers;
93+
94+
42) getSelfUserFollowers;
95+
96+
43) getSelfUsersFollowing;
97+
98+
44) unlike;
99+
100+
45) getMediaComments;
101+
102+
46) setNameAndPhone;
103+
104+
47) getDirectShare;
105+
106+
48) follow;
107+
108+
49) unfollow;
109+
110+
50) block;
111+
112+
51) unblock;
113+
90114
### TODO:
91115

92116
1) changeProfilePicture;
@@ -107,4 +131,6 @@ This is python port of https://github.com/mgp25/Instagram-API, written on PHP. W
107131

108132
9) getLocationFeed;
109133

134+
10) backup;
135+
110136
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)