# pixiv downloader
A pixiv downloader written in Rust.
## Features
* Write exif metatata to picture.
* Merge ugoira(GIF) pictures to video files.
### TODO
See [issues](https://github.com/lifegpc/pixiv_downloader/issues) or [projects](https://github.com/lifegpc/pixiv_downloader/projects).
## Setup
### Docker
```shell
mkdir -p pixiv_downloader && cd pixiv_downloader
curl -L https://github.com/lifegpc/pixiv_downloader/raw/master/docker-compose.yml -o docker-compose.yml
docker-compose up -d
```
## Rust features flags
### all
Enable all unconflicted features, this will enable [`db_all`](#db_all), [`exif`](#exif) and [`ugoira`](#ugoira).
### db
Enable database support, at least one implement is needed.
### db_all
Enable database support with all implement. This will enable [`db`](#db) and [`db_sqlite`](#db_sqlite).
### db_sqlite
Enable database support with sqlite3.
### exif
Enable exif support.  
#### Notice 
* [Exiv2](https://exiv2.org/) is needed. If exiv2 library is not included in system library path. Make sure correct `CMAKE_PREFIX_PATH` is set.
* If you are build on windows system. You need apply patches in [exif/patchs](exif/patchs) folder to make sure Exiv2 support UTF-8 encoding path.
### ugoira
Enable the feature that merge ugoira(GIF) pictures(ZIP file) to video files(MP4 file).
#### Notice
* [libzip](https://libzip.org/) and [FFmpeg](https://ffmpeg.org/) is needed. If these libraries are not included in system library path. Make sure `CMAKE_PREFIX_PATH` and `PKG_CONFIG_PATH` are seted.
* FFmpeg library should be linked with [libX264](https://www.videolan.org/developers/x264.html). Other H.264 encoder may works.
## OpenSSL
Due to schannel not works so well, OpenSSL is needed on Windows system. You may need specify some environment variables to make sure OpenSSL is found. (See [openssl](https://lifegpc.github.io/pixiv_downloader/openssl/#manual) for more information.)
