- Reimplement filename pattern logic to be more consistent regarding posts and story items
- `--storyitem-filter` option to filter stories just like `--only-if` filters posts
- Support `datetime` objects in post/story filters to allow date comparisions
- Allow customizing what to write in txt file along with each post or story, rather than only storing caption (`--post-metadata-txt` (default=`{caption}`) and `--storyitem-metadata-txt`)
- Save Post and StoryItem JSON files that can later be used to extract further metadata
- Minor improvements to error handling, raising better error messages in certain cases
- Change how requests to Instagram are made, better mimicking the browser's behavior regarding the recent Instagram web API changes
- Major refactorings and code cleanups, making it easier and more intuitive to access Instagram's structures (especially Profiles and User Stories) when using Instaloader as a module
- Split source into multiple files, making it easier to navigate through the code
- Add unit tests to easier ensure high reliability of our tool
**NOTE**: The default format specifier for `{date}` in filename pattern changed from `%Y-%m-%d_%H-%M-%S_UTC` to `%Y-%m-%d_%H-%M-%S`, likewise the default filename pattern changed to `{date}_UTC`. Keep this in mind **if you call Instaloader with a non-default filename pattern** with `{date}` in it. If you leave `--filename-pattern` to its default, there is nothing to worry about.