mirror of
https://github.com/instaloader/instaloader.git
synced 2026-10-19 07:02:16 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
341030058b | ||
|
|
fd98e8e78f | ||
|
|
e24c6a2cad | ||
|
|
01e549275e | ||
|
|
37780986fc | ||
|
|
9f34e3303e |
@@ -20,6 +20,12 @@ Instaloader
|
||||
- allows **fine-grained customization** of filters and where to store
|
||||
downloaded media.
|
||||
|
||||
::
|
||||
|
||||
instaloader [--comments] [--geotags] [--stories]
|
||||
[--login YOUR-USERNAME] [--fast-update]
|
||||
profile | "#hashtag" | :stories | :feed
|
||||
|
||||
`Instaloader Documentation <https://instaloader.readthedocs.io/>`__
|
||||
|
||||
|
||||
|
||||
Vendored
+2
-1
@@ -1 +1,2 @@
|
||||
<h2>Instaloader</h2>
|
||||
<h2><a href="index.html">Instaloader</a></h2>
|
||||
<p>Download pictures (or videos) along with their captions and other metadata from Instagram.</p>
|
||||
|
||||
Vendored
+1
@@ -1,4 +1,5 @@
|
||||
{% extends "!layout.html" %}
|
||||
{% block extrahead %}
|
||||
<meta name="google-site-verification" content="0esgS4FkYROvPe-I9MYvC1tTYtfASPpqxBdpTHEBIcQ" />
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
+45
-43
@@ -1,3 +1,8 @@
|
||||
.. meta::
|
||||
:description:
|
||||
Instaloader can also be used as a powerful and easy-to-use
|
||||
Python API for Instagram, allowing to download media and metadata.
|
||||
|
||||
Python Module :mod:`instaloader`
|
||||
--------------------------------
|
||||
|
||||
@@ -5,68 +10,65 @@ Python Module :mod:`instaloader`
|
||||
|
||||
.. highlight:: python
|
||||
|
||||
You may also use parts of Instaloader as library to do other interesting
|
||||
things.
|
||||
Instaloader exposes its internally used methods as a Python module, making it a
|
||||
**powerful and easy-to-use Python API for Instagram**, allowing to further
|
||||
customize obtaining media and metadata.
|
||||
|
||||
For example, to get a list of all followees and a list of all followers of a profile, do
|
||||
|
||||
.. code:: python
|
||||
Start with getting an instance of :class:`Instaloader`::
|
||||
|
||||
import instaloader
|
||||
|
||||
# Get instance
|
||||
loader = instaloader.Instaloader()
|
||||
L = instaloader.Instaloader()
|
||||
|
||||
# Login
|
||||
loader.interactive_login(USERNAME)
|
||||
# Optionally, login or load session
|
||||
L.login(USER, PASSWORD) # (login)
|
||||
L.interactive_login(USER) # (ask password on terminal)
|
||||
L.load_session_from_file(USER) # (load session created w/
|
||||
# `instaloader -l USERNAME`)
|
||||
|
||||
:mod:`instaloader` provides the :class:`Post` structure, which represents a
|
||||
picture, video or sidecar (set of multiple pictures/videos) posted in a user's
|
||||
profile. :class:`Instaloader` provides methods to iterate over Posts from a
|
||||
certain source::
|
||||
|
||||
for post in L.get_hashtag_posts('cat'):
|
||||
# post is an instance of instaloader.Post
|
||||
L.download_post(post, target='#cat')
|
||||
|
||||
Besides :func:`Instaloader.get_hashtag_posts`, there is
|
||||
:func:`Instaloader.get_feed_posts` and :func:`Instaloader.get_profile_posts`.
|
||||
Also, :class:`Post` instances can be created with :func:`Post.from_shortcode`
|
||||
and :func:`Post.from_mediaid`.
|
||||
|
||||
Further, information about profiles can be easily obtained. For example, you may
|
||||
print a list of all followees and followers of a profile with::
|
||||
|
||||
# Print followees
|
||||
print(PROFILE + " follows these profiles:")
|
||||
for f in loader.get_followees(PROFILE):
|
||||
for f in L.get_followees(PROFILE):
|
||||
print("\t%s\t%s" % (f['username'], f['full_name']))
|
||||
|
||||
# Print followers
|
||||
print("Followers of " + PROFILE + ":")
|
||||
for f in loader.get_followers(PROFILE):
|
||||
for f in L.get_followers(PROFILE):
|
||||
print("\t%s\t%s" % (f['username'], f['full_name']))
|
||||
|
||||
Then, you may download all pictures of all followees with
|
||||
Then, you may download all pictures of all followees with::
|
||||
|
||||
.. code:: python
|
||||
for f in L.get_followees(PROFILE):
|
||||
L.download_profile(f['username'])
|
||||
|
||||
for f in loader.get_followees(PROFILE):
|
||||
loader.download_profile(f['username'])
|
||||
Each Instagram profile has its own unique ID which stays unmodified even if a
|
||||
user changes his/her username. To get said ID, given the profile's name, you may
|
||||
call::
|
||||
|
||||
You could also download your last 20 liked pics with
|
||||
|
||||
.. code:: python
|
||||
|
||||
loader.download_feed_posts(max_count=20, fast_update=True,
|
||||
filter_func=lambda post: post.viewer_has_liked)
|
||||
|
||||
To download the last 20 pictures with hashtag #cat, do
|
||||
|
||||
.. code:: python
|
||||
|
||||
loader.download_hashtag('cat', max_count=20)
|
||||
|
||||
Generally, :class:`Instaloader` provides methods to iterate over the Posts from
|
||||
a certain source.
|
||||
|
||||
.. code:: python
|
||||
|
||||
for post in loader.get_hashtag_posts('cat'):
|
||||
# post is an instance of instaloader.Post
|
||||
loader.download_post(post, target='#cat')
|
||||
|
||||
Each Instagram profile has its own unique ID which stays unmodified even
|
||||
if a user changes his/her username. To get said ID, given the profile's
|
||||
name, you may call
|
||||
|
||||
.. code:: python
|
||||
|
||||
loader.get_id_by_username(PROFILE_NAME)
|
||||
L.get_id_by_username(PROFILE_NAME)
|
||||
|
||||
A reference of the many methods provided by the :mod:`instaloader` module is
|
||||
provided in the remainder of this document. Feel free to direct any issue or
|
||||
contribution to
|
||||
`Instaloader on Github <https://github.com/Thammus/instaloader>`__.
|
||||
|
||||
``Instaloader`` (Main Class)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
+15
-13
@@ -1,24 +1,26 @@
|
||||
Command Line Options
|
||||
====================
|
||||
|
||||
The following flags can be given to Instaloader to specify how profiles should
|
||||
be downloaded.
|
||||
Instaloader is invoked with::
|
||||
|
||||
To get a list of all flags, their abbreviations and their descriptions,
|
||||
run ``instaloader --help``.
|
||||
$ instaloader [options] target [target ...]
|
||||
|
||||
where ``target`` is a ``profile``, a ``"#hashtag"``, ``@profile`` (all profiles
|
||||
that *profile* is following), or if logged in ``:feed`` (pictures from your
|
||||
feed) or ``:stories`` (stories of your followees).
|
||||
|
||||
Here we explain the additional options that can be given to Instaloader to
|
||||
customize its behavior. To get a list of all flags, their abbreviations and
|
||||
their descriptions, you may also run ``instaloader --help``.
|
||||
|
||||
What to Download
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Specify a list of profiles or #hashtags. For each of these, Instaloader
|
||||
creates a folder and downloads all posts along with the pictures's
|
||||
captions and the current **profile picture**. If an already-downloaded profile
|
||||
has been renamed, Instaloader automatically **finds it by its unique ID** and
|
||||
renames the folder likewise.
|
||||
|
||||
Instead of a *profile* or a *#hashtag*, the special targets
|
||||
``:feed`` (pictures from your feed) and
|
||||
``:stories`` (stories of your followees) can be specified.
|
||||
Specify a list of targets (profiles, #hashtags, ``:feed`` or ``:stories``). For
|
||||
each of these, Instaloader creates a folder and stores all posts along with the
|
||||
pictures's captions and the current **profile picture** there. If an
|
||||
already-downloaded profile has been renamed, Instaloader automatically **finds
|
||||
it by its unique ID** and renames the folder likewise.
|
||||
|
||||
.. option:: --profile-pic-only
|
||||
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
.. meta::
|
||||
:description:
|
||||
Command line tool to download pictures (and videos) from Instagram.
|
||||
Instaloader downloads public and private profiles, hashtags, user stories,
|
||||
feeds, comments, geotags, captions and other metadata of each post.
|
||||
|
||||
Instaloader
|
||||
===========
|
||||
|
||||
.. highlight:: none
|
||||
|
||||
**Instaloader** is a tool to download pictures (or videos) along with
|
||||
their captions and other metadata from Instagram.
|
||||
|
||||
@@ -26,6 +34,12 @@ With `Python <https://www.python.org/>`__ installed, do::
|
||||
- is free `open source <https://github.com/Thammus/instaloader>`__
|
||||
software written in Python.
|
||||
|
||||
::
|
||||
|
||||
instaloader [--comments] [--geotags] [--stories]
|
||||
[--login YOUR-USERNAME] [--fast-update]
|
||||
profile | "#hashtag" | :stories | :feed
|
||||
|
||||
|
||||
Table of Contents
|
||||
-----------------
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ import requests.utils
|
||||
import urllib3
|
||||
|
||||
|
||||
__version__ = '3.2'
|
||||
__version__ = '3.2.1'
|
||||
|
||||
|
||||
try:
|
||||
@@ -676,7 +676,7 @@ class Instaloader:
|
||||
def graphql_node_list(self, query_id: int, query_variables: Dict[str, Any], query_referer: Optional[str],
|
||||
edge_extractor: Callable[[Dict[str, Any]], Dict[str, Any]]) -> Iterator[Dict[str, Any]]:
|
||||
"""Retrieve a list of GraphQL nodes."""
|
||||
query_variables['first'] = 500
|
||||
query_variables['first'] = 200
|
||||
data = self.graphql_query(query_id, query_variables, query_referer)
|
||||
while True:
|
||||
edge_struct = edge_extractor(data)
|
||||
@@ -1230,7 +1230,7 @@ class Instaloader:
|
||||
# We do not use self.graphql_node_list() here, because profile_metadata
|
||||
# lets us obtain the first 12 nodes 'for free'
|
||||
data = self.graphql_query(17888483320059182, {'id': profile_metadata['user']['id'],
|
||||
'first': 500,
|
||||
'first': 200,
|
||||
'after': end_cursor},
|
||||
'https://www.instagram.com/{0}/'.format(profile_name))
|
||||
media = data['data']['user']['edge_owner_to_timeline_media']
|
||||
|
||||
Reference in New Issue
Block a user