From be8546812a962db1761665ae56ccf4c3e3200eaa Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 19 Sep 2016 19:45:15 +0200 Subject: [PATCH] Use reStructuredText as file format for README rst seems to be cooler than md, and is the only format accepted by pypi, and is accepted by github as well. There is an intro to rst at: http://docutils.sourceforge.net/docs/user/rst/quickref.html --- README.md | 110 ------------------------------------------ README.rst | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 1 + 3 files changed, 139 insertions(+), 110 deletions(-) delete mode 100644 README.md create mode 100644 README.rst diff --git a/README.md b/README.md deleted file mode 100644 index 781c779..0000000 --- a/README.md +++ /dev/null @@ -1,110 +0,0 @@ -# Instaloader - -Tool to download pictures (or videos) and captions from Instagram, from a given set -of profiles (even if private), from your feed or from all followees of a given profile. - -## Usage - -instaloader is written in Python, thus ensure having -[Python](https://www.python.org/) (at least version 3.3) installed. - -If you intend to use this tool under Windows, it is highly recommended to first install -[win-unicode-console](https://pypi.python.org/pypi/win_unicode_console). - -If you have [pip](https://pypi.python.org/pypi/pip) installed, you may install instaloader using -``` -pip3 install instaloader -``` - -Alternatively, you may -[download instaloader from github](https://github.com/Thammus/instaloader/releases), unzip it and -invoke bundled `setup.py` (requiring [setuptools](https://pypi.python.org/pypi/setuptools)) to -install it: -``` -./setup.py install [--user] -``` -(pass `--user` to install it for your user only instead of globally) - -instaloader requires [python3-requests](https://pypi.python.org/pypi/requests/), which will be -installed automatically by setup.py, if not already installed. - -Now, to download a set of profiles, do -``` -instaloader profile [profile ...] -``` -where `profile` is the name of a profile you want to download. Instead of only one profile, you may -also specify a list of profiles. - -To later update your local copy of that profile, you may run -``` -instaloader --fast-update profile [profile ...] -``` -When `--fast-update` is given, instaloder terminates when arriving at the first already-downloaded -picture. - -Instaloader can also be used to **download private profiles**. To do so, invoke it with -``` -instaloader --login=your_username profile [profile ...] -``` -When invoked like this, it also **stores the session cookies** in a file in `/tmp`, which will be -reused later when `--login` is given. So you can download private profiles **non-interactively** -when you already have a valid session cookies file. - -If you want to **download all followees of a given profile**, call -``` -instaloader --login=your_username @profile -``` - -To **download all the pictures which you have liked**, call -``` -instaloader --login=your_username :feed-liked -``` - -The `--quiet` option makes it also **suitable as a cron job**. - -To get a list of other helpful flags, run `instaloader --help`. - -## Usage as library - -You may also use parts of instaloader as library to do other interesting things. - -For example, to get a list of all followers of a profile as well as their follower count, do -```python -import instaloader - -# login -session = instaloader.get_logged_in_session(USERNAME) - -# get followees -followees = instaloader.get_followees(PROFILE, session) -for f in followees: - print("%i\t%s\t%s" % (f['follower_count'], f['username'], f['full_name'])) -``` - -Then, you may download all pictures of all followees with -```python -for f in followees: - try: - instaloader.download(f['username'], session) - except instaloader.NonfatalException: - pass -``` - -You could also download your last 20 liked pics with -```python -instaloader.download_feed_pics(session, max_count=20, fast_update=True, - filter_func=lambda node: not node["likes"]["viewer_has_liked"]) -``` - -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 -```python -instaloader.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 -`get_username_by_id()` can be used. For example: -```python -instaloader.get_username_by_id(session, followees[0]['id']) -``` diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..f256627 --- /dev/null +++ b/README.rst @@ -0,0 +1,138 @@ +Instaloader +=========== + +Tool to download pictures (or videos) and captions from Instagram, from +a given set of profiles (even if private), from your feed or from all +followees of a given profile. + +Usage +----- + +instaloader is written in Python, thus ensure having +`Python `__ (at least version 3.3) installed. + +If you intend to use this tool under Windows, it is highly recommended +to first install +`win-unicode-console `__. + +If you have `pip `__ installed, you +may install instaloader using + +:: + + pip3 install instaloader + +Alternatively, you may `download instaloader from +github `__, unzip it +and invoke bundled ``setup.py`` (requiring +`setuptools `__) to install it: + +:: + + ./setup.py install [--user] + +(pass ``--user`` to install it for your user only instead of globally) + +instaloader requires +`python3-requests `__, which +will be installed automatically by setup.py, if not already installed. + +Now, to download a set of profiles, do + +:: + + instaloader profile [profile ...] + +where ``profile`` is the name of a profile you want to download. Instead +of only one profile, you may also specify a list of profiles. + +To later update your local copy of that profile, you may run + +:: + + instaloader --fast-update profile [profile ...] + +When ``--fast-update`` is given, instaloder terminates when arriving at +the first already-downloaded picture. + +Instaloader can also be used to **download private profiles**. To do so, +invoke it with + +:: + + instaloader --login=your_username profile [profile ...] + +When invoked like this, it also **stores the session cookies** in a file +in ``/tmp``, which will be reused later when ``--login`` is given. So +you can download private profiles **non-interactively** when you already +have a valid session cookies file. + +If you want to **download all followees of a given profile**, call + +:: + + instaloader --login=your_username @profile + +To **download all the pictures which you have liked**, call + +:: + + instaloader --login=your_username :feed-liked + +The ``--quiet`` option makes it also **suitable as a cron job**. + +To get a list of other helpful flags, run ``instaloader --help``. + +Usage as library +---------------- + +You may also use parts of instaloader as library to do other interesting +things. + +For example, to get a list of all followers of a profile as well as +their follower count, do + +.. code:: python + + import instaloader + + # login + session = instaloader.get_logged_in_session(USERNAME) + + # get followees + followees = instaloader.get_followees(PROFILE, session) + for f in followees: + print("%i\t%s\t%s" % (f['follower_count'], f['username'], f['full_name'])) + +Then, you may download all pictures of all followees with + +.. code:: python + + for f in followees: + try: + instaloader.download(f['username'], session) + except instaloader.NonfatalException: + pass + +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: not node["likes"]["viewer_has_liked"]) + +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 + + instaloader.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 +``get_username_by_id()`` can be used. For example: + +.. code:: python + + instaloader.get_username_by_id(session, followees[0]['id']) diff --git a/setup.py b/setup.py index 7a356eb..cceb492 100755 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ setup( description='Tool to download pictures (or videos) and captions from Instagram, from a given ' 'set of profiles (even if private), from your feed or from all followees of a ' 'given profile.', + long_description=open('README.rst').read(), install_requires=['requests>=2.4'], python_requires='>=3.3', entry_points={'console_scripts': ['instaloader=instaloader:main']},