instatools package¶
Subpackages¶
Submodules¶
instatools.api module¶
Wrappers for interactions with Instagram API
-
class
instatools.api.
ApiMethod
(api)[source]¶ Bases:
object
-
action
(path, *args, max_attempts=10, return_key='', extra=None, method='POST', headers=None, params=None, data=None)[source]¶ Parameters: - path –
- args –
- max_attempts –
- return_key –
- extra –
- method –
- headers –
- params –
- data –
Returns:
-
instatools.cache module¶
Response caching for testing integration with instatools
instatools.models module¶
-
class
instatools.models.
Comment
(api, json)[source]¶ Bases:
instatools.models.Model
-
class
instatools.models.
Location
(api, json)[source]¶ Bases:
instatools.models.Model
-
class
instatools.models.
ModelFactory
[source]¶ Bases:
object
-
friendship_status
¶ alias of
Relationship
-
relationship
¶ alias of
Relationship
-
-
class
instatools.models.
Post
(api, json)[source]¶ Bases:
instatools.models.Model
-
class
instatools.models.
Relationship
(api, json)[source]¶ Bases:
instatools.models.Model
-
class
instatools.models.
User
(api, json)[source]¶ Bases:
instatools.models.Model
-
feed
¶
-
instatools.session module¶
Instagram Session class provides bare minimum to make authenticated, rate_limited requests to the Instagram API
-
class
instatools.session.
Session
(username=None, password=None, session=None)[source]¶ Bases:
object
Class representing the request-making Session of a single Instagram user
-
device_id
= None¶
-
exponential_sleep_increase
= 2¶
-
login_data
(cookies)[source]¶ Using cookies provided, gives data to send to Instagram for login approval :param cookies: cookies from login challenge :return: dict: data to use for login
-
password
= None¶
-
paths
= {'approve': 'friendships/approve/{}/', 'autocomplete_users': 'friendships/autocomplete_user_list', 'block': 'friendships/block/{}/', 'change_password': 'accounts/change_password/', 'change_profile_picture': 'accounts/change_profile_picture/', 'comment': 'media/{}/comment/', 'comments': 'media/{}/comments/', 'configure': 'media/configure', 'create_post': '', 'direct_link': 'direct_v2/threads/broadcast/link/', 'direct_message': 'direct_v2/threads/broadcast/text/', 'direct_share': 'direct_v2/threads/broadcast/media_share/', 'direct_threads': 'direct_v2/threads/{}/', 'edit_profile': 'accounts/edit_profile/', 'explore': 'discover/explore', 'expose': 'qe/expose', 'facebook_search': 'fbsearch/topsearch', 'follow': 'friendships/create/{}/', 'followers': 'friendships/{}/followers', 'following': 'friendships/{}/following', 'friendship': 'friendships/show/{}/', 'geo_media': 'maps/user/{}', 'ignore': 'friendships/ignore/{}/', 'inbox': 'direct_v2/inbox', 'like': 'media/{}/like/', 'liked': 'feed/liked', 'likers': 'media/{}/likers/', 'location_feed': 'feed/location/{}/', 'location_search': 'fbsearch/places', 'login': 'accounts/login/', 'login_challenge': 'si/fetch_headers/', 'logout': 'accounts/logout/', 'megaphone': 'megaphone/log', 'pending': 'friendships/pending', 'popular': 'feed/popular', 'post': 'media/{}/info/', 'profile': 'accounts/current_user/', 'recent_activity': 'news/inbox', 'recent_following_activity': 'news', 'remove_comment': 'media/{}/comment/{}/delete/', 'remove_post': 'media/{}/delete/', 'remove_profile_picture': 'accounts/remove_profile_picture/', 'remove_tag': 'media/{}/remove/', 'save': 'media/{}/save/', 'saved': 'feed/saved', 'set_phone_name': 'accounts/set_phone_and_name/', 'set_private': 'accounts/set_private/', 'set_public': 'accounts/set_public/', 'share_inbox': 'direct_share/inbox', 'story': 'feed/user/{}/reel_media', 'tag_feed': 'feed/tag/{}/', 'tag_search': 'tags/search', 'timeline': 'feed/timeline', 'unblock': 'friendships/unblock/{}/', 'unfollow': 'friendships/destroy/{}/', 'unlike': 'media/{}/unlike/', 'unsave': 'media/{}/unsave/', 'upload_photo': 'upload/photo', 'upload_video': 'upload/video', 'user': 'users/{}/info/', 'user_feed': 'feed/user/{}/', 'user_search': 'users/search', 'user_tags': 'usertags/{}/feed', 'username': 'users/{}/usernameinfo'}¶
-
rank_token
¶
-
relog_after_failed
= 5¶
-
request
(method, url, *, params=None, data=None, return_json=True, **kwargs)[source]¶ Parameters: - method –
- url –
- params –
- data –
- return_json –
- kwargs –
Returns:
-
request_safely
(*args, max_attempts=0, **kwargs)[source]¶ Make a safe request that returns correct results or dies trying! Keeps requesting with exponential back-off until requests_to_break is reached, at which point each consecutive request is circuit-broken and waits sleep_on_break seconds until a successful request is made, or until relog_after_failed circuit-broken requests are made, at which point the client re-logs and begins the whole cycle again. :param args: :param max_attempts: :param kwargs: :return:
-
requests_to_break
= 10¶
-
session_data
¶
-
set_proxy
(proxy)[source]¶ Set proxy for all requests made with this session :param proxy: str: proxy - format: “user:password@ip:port” OR “ip:port”
-
setup
(username, password, session)[source]¶ Setup session variables by username/password or by previous session :param username: :param password: :param session: :return:
-
sleep_on_break
= 600¶
-
sleep_on_page
= 0.5¶
-
switch_user
(username=None, password=None, session=None)[source]¶ Switches current account username and password - requires login
-
token
= None¶
-
static
upload_headers
(content_type, video=False)[source]¶ Parameters: - content_type –
- video –
Returns:
-
username
= None¶
-
username_id
= None¶
-
uuid
= None¶
-
instatools.utils module¶
Module contents¶
Top-level package for instatools.
-
class
instatools.
Instagram
(username=None, password=None, session=None)[source]¶ Bases:
object
-
password
¶ Password of Instagram account
-
switch_user
(username=None, password=None, session=None)[source]¶ Switches current account username and password - requires login
-
username
¶ Username of Instagram account
-
username_id
¶ User-id of Instagram account
-