mirror of
https://github.com/instaloader/instaloader.git
synced 2026-10-19 15:12:16 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b520f6a2d | ||
|
|
c3a5557140 | ||
|
|
0ad50c1526 | ||
|
|
9fbe9b0903 | ||
|
|
4b8b257672 | ||
|
|
b1b90f8abf | ||
|
|
66f69b5c21 | ||
|
|
48d6f0226b | ||
|
|
82ae31cea5 | ||
|
|
3e0b81ad56 | ||
|
|
99620ec766 | ||
|
|
13d288ef36 | ||
|
|
b85e8fd793 | ||
|
|
1699954761 | ||
|
|
7cac6d53f2 | ||
|
|
c355338010 | ||
|
|
2205bbcf45 | ||
|
|
c299e9d1a2 | ||
|
|
151ccfd71d | ||
|
|
bf5e3b90d0 | ||
|
|
56b27fb26f | ||
|
|
8572e527ec | ||
|
|
5068c9453e | ||
|
|
d614d9f015 | ||
|
|
051a6fa9d0 | ||
|
|
169ce1a300 | ||
|
|
ee8e159d56 | ||
|
|
b3f916b371 | ||
|
|
1fdce16f46 | ||
|
|
dd513f7190 | ||
|
|
7198f1ad9f | ||
|
|
58c12d5618 | ||
|
|
1e10ab8669 | ||
|
|
c0eecd1bd2 | ||
|
|
8607135740 | ||
|
|
ca2829becc | ||
|
|
715582138b | ||
|
|
184c521646 | ||
|
|
5ae3d7090f | ||
|
|
4768fdbd10 | ||
|
|
591dfd31e4 | ||
|
|
caf75a8135 |
+1
-1
@@ -9,4 +9,4 @@ python:
|
|||||||
install:
|
install:
|
||||||
- pip install pylint requests
|
- pip install pylint requests
|
||||||
script:
|
script:
|
||||||
- python3 -m pylint -r n -d bad-whitespace,bad-continuation,missing-docstring,multiple-imports,too-many-arguments,locally-disabled,line-too-long instaloader
|
- python3 -m pylint -r n -d bad-whitespace,missing-docstring,too-many-arguments,locally-disabled,line-too-long,too-many-public-methods,too-many-lines,too-many-instance-attributes,too-many-locals,too-many-branches,too-many-statements instaloader
|
||||||
|
|||||||
+150
-36
@@ -1,7 +1,7 @@
|
|||||||
Instaloader
|
Instaloader
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Tool to automatically download pictures (or videos) of given profiles
|
Download pictures (or videos) along with their captions and other metadata
|
||||||
from Instagram.
|
from Instagram.
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
@@ -68,6 +68,13 @@ in your temporary directory, which will be reused later when ``--login`` is give
|
|||||||
you can download private profiles **non-interactively** when you already
|
you can download private profiles **non-interactively** when you already
|
||||||
have a valid session cookie file.
|
have a valid session cookie file.
|
||||||
|
|
||||||
|
Besides downloading private profiles, being logged in allows to
|
||||||
|
**download stories**:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
instaloader --login=your_username --stories profile [profile ...]
|
||||||
|
|
||||||
You may also download
|
You may also download
|
||||||
**the most recent pictures by hashtag**:
|
**the most recent pictures by hashtag**:
|
||||||
|
|
||||||
@@ -75,6 +82,15 @@ You may also download
|
|||||||
|
|
||||||
instaloader "#hashtag"
|
instaloader "#hashtag"
|
||||||
|
|
||||||
|
This downloads the requested posts into a directory named according to the specified
|
||||||
|
hashtag and the filenames correspond to the timestamp of the posts.
|
||||||
|
As with all download tasks, this behavior can easily be customized, for example
|
||||||
|
encode the poster's profile name in the filenames:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
instaloader --filename-pattern={date}_{profile} "#hashtag"
|
||||||
|
|
||||||
If you want to **download all followees of a given profile**, call
|
If you want to **download all followees of a given profile**, call
|
||||||
|
|
||||||
::
|
::
|
||||||
@@ -93,35 +109,112 @@ or to **download all pictures from your feed**:
|
|||||||
|
|
||||||
instaloader --login=your_username :feed-all
|
instaloader --login=your_username :feed-all
|
||||||
|
|
||||||
|
**Download all stories** from the profiles you follow:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
instaloader --login=your_username --filename-pattern={date}_{profile} :stories
|
||||||
|
|
||||||
Advanced Options
|
Advanced Options
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
The following flags can be given to Instaloader to specify how profiles should
|
The following flags can be given to Instaloader to specify how profiles should
|
||||||
be downloaded.
|
be downloaded.
|
||||||
|
|
||||||
--fast-update Stop when encountering the first already-downloaded post
|
To get a list of all flags, their abbreviations and their descriptions, you may
|
||||||
of a profile.
|
run ``instaloader --help``.
|
||||||
--profile-pic-only Only download profile pictures. Without this flag, the current
|
|
||||||
profile picture and all the profile's posts are downloaded.
|
|
||||||
--skip-videos Skip posts which are videos.
|
|
||||||
--geotags Also **download geotags** and store Google Maps links in
|
|
||||||
separate textfiles.
|
|
||||||
--count COUNT If used with ``#hashtag``, ``:feed-all`` or
|
|
||||||
``:feed-liked``: Do not attempt to download more than COUNT
|
|
||||||
posts.
|
|
||||||
--quiet Do not output any messages except warnings and errors. This
|
|
||||||
option makes Instaloader **suitable as a cron job**.
|
|
||||||
--no-sleep Normally, Instaloader waits a few seconds between requests
|
|
||||||
to the Instagram servers. This flag inhibits this behavior.
|
|
||||||
--password PASSWORD If used with ``--login``, use parameter as password if no
|
|
||||||
valid session file is found, instead of asking
|
|
||||||
interactively.
|
|
||||||
--sessionfile FILE Specify an alternative place for loading and storing the
|
|
||||||
session cookies. Without this flag, they are stored in a path
|
|
||||||
within your temporary directory, encoding your local
|
|
||||||
username and your instagram profile name.
|
|
||||||
|
|
||||||
To get a list of all flags, 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-all`` (pictures from your feed),
|
||||||
|
``:feed-liked`` (pictures from your feed which you liked), and
|
||||||
|
``:stories`` (stories of your followees) can be specified.
|
||||||
|
|
||||||
|
--profile-pic-only Only download profile picture.
|
||||||
|
--skip-videos Do not download videos.
|
||||||
|
--geotags **Download geotags** when available. Geotags are stored as
|
||||||
|
a text file with the location's name and a Google Maps
|
||||||
|
link. This requires an additional request to the
|
||||||
|
Instagram server for each picture, which is why it is
|
||||||
|
disabled by default.
|
||||||
|
--comments Download and update comments for each post. This
|
||||||
|
requires an additional request to the Instagram server
|
||||||
|
for each post, which is why it is disabled by default.
|
||||||
|
--stories Also **download stories** of each profile that is
|
||||||
|
downloaded. Requires ``--login``.
|
||||||
|
--stories-only Rather than downloading regular posts of each
|
||||||
|
specified profile, only download stories.
|
||||||
|
Requires ``--login``.
|
||||||
|
|
||||||
|
When to Stop Downloading
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
If none of these options are given, Instaloader goes through all pictures
|
||||||
|
matching the specified targets.
|
||||||
|
|
||||||
|
--fast-update For each target, stop when encountering the first
|
||||||
|
already-downloaded picture. This flag is recommended
|
||||||
|
when you use Instaloader to update your personal
|
||||||
|
Instagram archive.
|
||||||
|
--count COUNT Do not attempt to download more than COUNT posts.
|
||||||
|
Applies only to ``#hashtag``, ``:feed-all`` and ``:feed-liked``.
|
||||||
|
|
||||||
|
|
||||||
|
Login (Download Private Profiles)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Instaloader can **login to Instagram**. This allows downloading private
|
||||||
|
profiles. To login, pass the ``--login`` option. Your session cookie (not your
|
||||||
|
password!) will be saved to a local file to be reused next time you want
|
||||||
|
Instaloader to login.
|
||||||
|
|
||||||
|
--login YOUR-USERNAME Login name (profile name) for your Instagram account.
|
||||||
|
--sessionfile SESSIONFILE Path for loading and storing session key file.
|
||||||
|
Defaults to a path
|
||||||
|
within your temporary directory, encoding your local
|
||||||
|
username and your Instagram profile name.
|
||||||
|
--password YOUR-PASSWORD Password for your Instagram account. Without this
|
||||||
|
option, you'll be prompted for your password
|
||||||
|
interactively if there is not yet a valid session
|
||||||
|
file.
|
||||||
|
|
||||||
|
How to Download
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
--dirname-pattern DIRNAME_PATTERN
|
||||||
|
Name of directory where to store posts. ``{profile}``
|
||||||
|
is replaced by the profile name, ``{target}`` is replaced
|
||||||
|
by the target you specified, i.e. either ``:feed``,
|
||||||
|
``#hashtag`` or the profile name. Defaults to ``{target}``.
|
||||||
|
--filename-pattern FILENAME_PATTERN
|
||||||
|
Prefix of filenames. Posts are stored in the
|
||||||
|
directory whose pattern is given with ``--dirname-pattern``.
|
||||||
|
``{profile}`` is replaced by the profile name,
|
||||||
|
``{target}`` is replaced by the target you specified, i.e.
|
||||||
|
either ``:feed``, ``#hashtag`` or the profile name. Also, the
|
||||||
|
fields ``{date}`` and ``{shortcode}`` can be specified.
|
||||||
|
Defaults to ``{date:%Y-%m-%d_%H-%M-%S}``.
|
||||||
|
--user-agent USER_AGENT User Agent to use for HTTP requests. Per default,
|
||||||
|
Instaloader pretends being Chrome/51.
|
||||||
|
--no-sleep Do not sleep between requests to Instagram's servers.
|
||||||
|
This makes downloading faster, but may be suspicious.
|
||||||
|
|
||||||
|
Miscellaneous Options
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
--shorter-output Do not display captions while downloading.
|
||||||
|
--quiet Disable user interaction, i.e. do not print messages
|
||||||
|
(except errors) and fail if login credentials are
|
||||||
|
needed but not given. This makes Instaloader
|
||||||
|
**suitable as a cron job**.
|
||||||
|
|
||||||
Usage as Python module
|
Usage as Python module
|
||||||
----------------------
|
----------------------
|
||||||
@@ -129,20 +222,29 @@ Usage as Python module
|
|||||||
You may also use parts of Instaloader as library to do other interesting
|
You may also use parts of Instaloader as library to do other interesting
|
||||||
things.
|
things.
|
||||||
|
|
||||||
For example, to get a list of all followees of a profile as well as
|
For example, to get a list of all followees and a list of all followers of a profile, do
|
||||||
their follower count, do
|
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
import instaloader
|
import instaloader
|
||||||
|
|
||||||
# login
|
# Get instance
|
||||||
session = instaloader.get_logged_in_session(USERNAME)
|
loader = instaloader.Instaloader()
|
||||||
|
|
||||||
# get followees
|
# Login
|
||||||
followees = instaloader.get_followees(PROFILE, session)
|
loader.interactive_login(USERNAME)
|
||||||
|
|
||||||
|
# Retrieve followees
|
||||||
|
followees = loader.get_followees(PROFILE)
|
||||||
|
print(PROFILE + " follows these profiles:")
|
||||||
for f in followees:
|
for f in followees:
|
||||||
print("%i\t%s\t%s" % (f['follower_count'], f['username'], f['full_name']))
|
print("\t%s\t%s" % (f['username'], f['full_name']))
|
||||||
|
|
||||||
|
# Retrieve followers
|
||||||
|
followers = loader.get_followers(PROFILE)
|
||||||
|
print("Followers of " + PROFILE + ":")
|
||||||
|
for f in followers:
|
||||||
|
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
|
||||||
|
|
||||||
@@ -150,7 +252,7 @@ Then, you may download all pictures of all followees with
|
|||||||
|
|
||||||
for f in followees:
|
for f in followees:
|
||||||
try:
|
try:
|
||||||
instaloader.download(f['username'], session)
|
loader.download(f['username'])
|
||||||
except instaloader.NonfatalException:
|
except instaloader.NonfatalException:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -158,15 +260,21 @@ You could also download your last 20 liked pics with
|
|||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
instaloader.download_feed_pics(session, max_count=20, fast_update=True,
|
loader.download_feed_pics(max_count=20, fast_update=True,
|
||||||
filter_func=lambda node:
|
filter_func=lambda node:
|
||||||
not node["likes"]["viewer_has_liked"] if "likes" in node else not node["viewer_has_liked"])
|
not node["likes"]["viewer_has_liked"] if "likes" in node else not node["viewer_has_liked"])
|
||||||
|
|
||||||
To download the last 20 pictures with hashtag #cat, do
|
To download the last 20 pictures with hashtag #cat, do
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
instaloader.download_hashtag('cat', session=instaloader.get_anonymous_session(), max_count=20)
|
loader.download_hashtag('cat', max_count=20)
|
||||||
|
|
||||||
|
If logged in, Instaloader is also able to download user stories:
|
||||||
|
|
||||||
|
.. code:: python
|
||||||
|
|
||||||
|
loader.download_stories()
|
||||||
|
|
||||||
Each Instagram profile has its own unique ID which stays unmodified even
|
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
|
if a user changes his/her username. To get said ID, given the profile's
|
||||||
@@ -174,7 +282,7 @@ name, you may call
|
|||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
instaloader.get_id_by_username(PROFILE_NAME)
|
loader.get_id_by_username(PROFILE_NAME)
|
||||||
|
|
||||||
``get_followees()`` also returns unique IDs for all loaded followees. To
|
``get_followees()`` also returns unique IDs for all loaded followees. To
|
||||||
get the current username of a profile, given this unique ID
|
get the current username of a profile, given this unique ID
|
||||||
@@ -182,4 +290,10 @@ get the current username of a profile, given this unique ID
|
|||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
instaloader.get_username_by_id(session, followees[0]['id'])
|
loader.get_username_by_id(followees[0]['id'])
|
||||||
|
|
||||||
|
Disclaimer
|
||||||
|
----------
|
||||||
|
|
||||||
|
This code is in no way affiliated with, authorized, maintained or endorsed by Instagram or any of its affiliates or
|
||||||
|
subsidiaries. This is an independent and unofficial project. Use at your own risk.
|
||||||
+1077
-756
File diff suppressed because it is too large
Load Diff
@@ -8,15 +8,14 @@ if sys.version_info < (3, 5):
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='instaloader',
|
name='instaloader',
|
||||||
version='1.3',
|
version='2.2',
|
||||||
py_modules=['instaloader'],
|
py_modules=['instaloader'],
|
||||||
url='https://github.com/Thammus/instaloader',
|
url='https://github.com/Thammus/instaloader',
|
||||||
license='MIT',
|
license='MIT',
|
||||||
author='Alexander Graf, André Koch-Kramer',
|
author='Alexander Graf, André Koch-Kramer',
|
||||||
author_email='mail@agraf.me, koch-kramer@web.de',
|
author_email='mail@agraf.me, koch-kramer@web.de',
|
||||||
description='Tool to download Instagram pictures (or videos) and captions from a given set of '
|
description='Download pictures (or videos) along with their captions and other metadata '
|
||||||
'profiles (even if private), from your feed or from all followees of a given '
|
'from Instagram.',
|
||||||
'profile.',
|
|
||||||
long_description=open('README.rst').read(),
|
long_description=open('README.rst').read(),
|
||||||
install_requires=['requests>=2.4'],
|
install_requires=['requests>=2.4'],
|
||||||
python_requires='>=3.5',
|
python_requires='>=3.5',
|
||||||
|
|||||||
Reference in New Issue
Block a user