Not all treasure's silver and gold, mate.
InstaLooter is a program that can download any picture or video associated from an Instagram profile, without any API access. It can be seen as a re-implementation of the now deprecated InstaRaider developed by @akurtovic.
BeautifulSoup | HTML parsing | |||
docopt | CLI arguments parsing | |||
progressbar2 | Dynamic output in CLI | |||
requests | HTTP handling | |||
six | Python 2/3 compatibility | |||
dateutil | Date manipulation |
InstaLooter comes with its CLI:
$ instaLooter <username> <directory> [options] $ instaLooter hashtag <hashtag> <directory> [options]
username
- the username of the instagram account to download pictures and videos from.
hashtag
- the hashtag to download pictures and videos from.
directory
- the directory to download files into.
-n NUM, --num-to-dl NUM
number of maximum new posts to download (if not specified all posts are downloaded).
-m, --add-metadata
add date and caption metadata to downloaded pictures (requires piexif and PIL/Pillow)
-v, --get-videos
also download videos.
-j JOBS, --jobs JOBS
the number of parallel threads to use to download files. It is advised to use a value of at least 12 as Instagram profile pages display 12 medias at a time in order to insure parallel download of all files. [default: 16]
-c CRED, --credentials CRED
the login and password to use to login to Instagram, if needed (for instance: downloading medias from a private account you follow). [format: login[:password]]
-q, --quiet
do not produce any output.
-N, --new
stop the iteration through Instagram pages when a media on the page is found in the destination directory. This makes it faster when InstaLooter is used to maintain a local copy of an Instagram account and allows only getting the newest pictures/videos without re-checking the oldest.
-t TIME, --time TIME
the timeframe within which to download pictures and videos [format: start:stop]. The parameter can be either a combination of start and stop date in ISO format (e.g.
2016-12-21:2016-12-18
,2015-03-07:
,:2016-08-02
) or a special value among:thisday
,thisweek
,thismonth
,thisyear
. Edges are included in the time frame, so if using the following value:--time 2016-05-10:2016-04-03
, then all medias will be downloaded including the ones posted on the 10th of May 2016 and on the 3rd of April 2016.
-T TMPL, --template TMPL
A filename template to use to write the files. [default: {id}] The default filename of the pictures and videos on Instagram doesn't show anything about the file you just downloaded. But using the -t argument allows you to give instaLooter a filename template, using the following format with brackets-enclosed (
{}
) variable names among:id*
andcode*
of the instagram id of the mediaownerid*
,username
andfullname
of the ownerdatetime*
: the date and time of the post (YYYY-MM-DD hh:mm:ss)date*
: the date of the post (YYYY-MM-DD)width*
andheight*
likescount*
andcommentscount*
*: use these only to quicken download, since fetching the others may take a tad longer (in particular in hashtag download mode).
You are however to make sure that the generated filename is unique, so you should use at least id, code or datetime somewhere. Examples of acceptable values:
{username}.{datetime}
{username}-{likescount}-{width}x{height}.{id}
{username}.{datetime}.something_constant
$ pip install instaLooter # requires super-user rights
$ git clone https://github.com/althonos/InstaLooter $ cd InstaLooter $ pip install . # requires super-user rights