mirror of
https://github.com/instaloader/instaloader.git
synced 2026-10-16 21:52:17 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d83a4ccf6 | ||
|
|
56c8ac729f | ||
|
|
987d95c048 | ||
|
|
9b5d4e34fc | ||
|
|
838ea645a8 | ||
|
|
01fc150e78 | ||
|
|
46ac119a10 | ||
|
|
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,4 +1 @@
|
||||
__pycache__/
|
||||
build/
|
||||
dist/
|
||||
instaloader.egg-info/
|
||||
|
||||
+9
-1
@@ -9,4 +9,12 @@ python:
|
||||
install:
|
||||
- pip install pylint requests
|
||||
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
|
||||
deploy:
|
||||
provider: pypi
|
||||
user: aandergr
|
||||
on:
|
||||
tags: true
|
||||
python: 3.6
|
||||
password:
|
||||
secure: KBsATtXNnEzqr0X2ALdyx2zaYj2EUfK8YjP4jEOilBELpJ4evHYXVgRkn9CKXGsD7LKbWmR3gz2rr8NZ6U42pHw0fpQHizz91MpJSKbNY7RZZh4UVWMDh81izeglchWAF+m3Wdpxpo/GBDbrZIbRQFhPgB+kjSzJo3uiCS+yVXtGG+6csJHzd0WkJjsVHz+XSdxyOiLy/qFF3nmY6ZrVrgw6WbX2YLbx9je6DxK3YRrnBqgMgH7Ui2xWWbgJCk3KKpQTMiMKnTa9mdeMJAd26YMCz1gG/X7ck6VNly/6bs5+Zq7/bU0dSolhPBhNthyccYdS0IeGPdPF3YqatblJ4fLGTfHn8oJs3/T11yIW9pvOT3UftEynPOUX+en2Qnb/3WfgwUfVts8i8DAYgEFLGEzbF5XMGy4gwAD/bZ0JW0pmgAG2PZsdOokAt+ydlNj/uxq1GFW2doZbul6k4t03p1mik6itYscvuhKoEm8Yw6wr1P9aDvMR6FFpSu4gDt2XrKmRmWkSXxpNeCfZujTjyAnISxLVQGSY7BG5K0Z2HbDtqqNz9nj4WgNGzZmngiRofCevWR+vPIDUDW7NCX03csfcFS9RRllBO/BrL7NVUV+Qp9dfTQYp+8SqYLWgHtDoXdgyMREjJaAmbx2u/TYTY8bADZ5F3vGUpv2j5hP3NTU=
|
||||
|
||||
+150
-36
@@ -1,7 +1,7 @@
|
||||
Instaloader
|
||||
===========
|
||||
|
||||
Tool to automatically download pictures (or videos) of given profiles
|
||||
Download pictures (or videos) along with their captions and other metadata
|
||||
from Instagram.
|
||||
|
||||
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
|
||||
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
|
||||
**the most recent pictures by hashtag**:
|
||||
|
||||
@@ -75,6 +82,15 @@ You may also download
|
||||
|
||||
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
|
||||
|
||||
::
|
||||
@@ -93,35 +109,112 @@ or to **download all pictures from your feed**:
|
||||
|
||||
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
|
||||
----------------
|
||||
|
||||
The following flags can be given to Instaloader to specify how profiles should
|
||||
be downloaded.
|
||||
|
||||
--fast-update Stop when encountering the first already-downloaded post
|
||||
of a profile.
|
||||
--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, their abbreviations and their descriptions, you may
|
||||
run ``instaloader --help``.
|
||||
|
||||
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
|
||||
----------------------
|
||||
@@ -129,20 +222,29 @@ Usage as Python module
|
||||
You may also use parts of Instaloader as library to do other interesting
|
||||
things.
|
||||
|
||||
For example, to get a list of all followees of a profile as well as
|
||||
their follower count, do
|
||||
For example, to get a list of all followees and a list of all followers of a profile, do
|
||||
|
||||
.. code:: python
|
||||
|
||||
import instaloader
|
||||
|
||||
# login
|
||||
session = instaloader.get_logged_in_session(USERNAME)
|
||||
# Get instance
|
||||
loader = instaloader.Instaloader()
|
||||
|
||||
# get followees
|
||||
followees = instaloader.get_followees(PROFILE, session)
|
||||
# Login
|
||||
loader.interactive_login(USERNAME)
|
||||
|
||||
# Retrieve followees
|
||||
followees = loader.get_followees(PROFILE)
|
||||
print(PROFILE + " follows these profiles:")
|
||||
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
|
||||
|
||||
@@ -150,7 +252,7 @@ Then, you may download all pictures of all followees with
|
||||
|
||||
for f in followees:
|
||||
try:
|
||||
instaloader.download(f['username'], session)
|
||||
loader.download(f['username'])
|
||||
except instaloader.NonfatalException:
|
||||
pass
|
||||
|
||||
@@ -158,15 +260,21 @@ You could also download your last 20 liked pics with
|
||||
|
||||
.. code:: python
|
||||
|
||||
instaloader.download_feed_pics(session, max_count=20, fast_update=True,
|
||||
filter_func=lambda node:
|
||||
loader.download_feed_pics(max_count=20, fast_update=True,
|
||||
filter_func=lambda node:
|
||||
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
|
||||
|
||||
.. 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
|
||||
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
|
||||
|
||||
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 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
|
||||
|
||||
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.
|
||||
+1114
-755
File diff suppressed because it is too large
Load Diff
@@ -8,15 +8,14 @@ if sys.version_info < (3, 5):
|
||||
|
||||
setup(
|
||||
name='instaloader',
|
||||
version='1.3',
|
||||
version='2.2.2',
|
||||
py_modules=['instaloader'],
|
||||
url='https://github.com/Thammus/instaloader',
|
||||
license='MIT',
|
||||
author='Alexander Graf, André Koch-Kramer',
|
||||
author_email='mail@agraf.me, koch-kramer@web.de',
|
||||
description='Tool to download Instagram pictures (or videos) and captions from a given set of '
|
||||
'profiles (even if private), from your feed or from all followees of a given '
|
||||
'profile.',
|
||||
description='Download pictures (or videos) along with their captions and other metadata '
|
||||
'from Instagram.',
|
||||
long_description=open('README.rst').read(),
|
||||
install_requires=['requests>=2.4'],
|
||||
python_requires='>=3.5',
|
||||
|
||||
Reference in New Issue
Block a user