Metadata-Version: 2.4
Name: rustore-apk
Version: 0.1.0
Summary: Download APKs published in RuStore
Author: Mffff4
License-Expression: MIT
Project-URL: Homepage, https://github.com/Mffff4/rustore-apk
Project-URL: Repository, https://github.com/Mffff4/rustore-apk
Project-URL: Issues, https://github.com/Mffff4/rustore-apk/issues
Keywords: rustore,apk,downloader,android
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# rustore-apk

[![PyPI version](https://img.shields.io/pypi/v/rustore-apk.svg)](https://pypi.org/project/rustore-apk/)
[![Python](https://img.shields.io/pypi/pyversions/rustore-apk.svg)](https://pypi.org/project/rustore-apk/)

A dependency-free CLI for downloading APK artifacts published in [RuStore](https://www.rustore.ru/). It uses Python's standard-library `urllib` only.

## Install / run

With [uv](https://docs.astral.sh/uv/):

```bash
uvx rustore-apk DangerousSlope.apk
```

A RuStore catalog URL works too:

```bash
uvx rustore-apk \
  'https://www.rustore.ru/catalog/app/DangerousSlope.apk' \
  --out ./downloads
```

`-o` is short for `--out`. A multi-file split APK bundle is downloaded as separate files into that directory.

Show metadata without requesting a download link:

```bash
uvx rustore-apk DangerousSlope.apk --info
```

## Security behavior

- Retrieves a temporary download URL through RuStore's public Android-client API flow.
- Accepts only HTTPS download links returned from RuStore/VK CDN domains.
- Checks that each downloaded artifact is a ZIP/APK container.
- Prints SHA-256 for every saved artifact.
- Does not send account credentials and does not require a RuStore account.

TLS verification is on by default. If a minimal container has no valid CA roots, pass a PEM CA bundle:

```bash
rustore-apk DangerousSlope.apk --ca-file /path/to/ca-bundle.pem
```

`--insecure` disables TLS certificate validation. It is intended solely to diagnose a broken local CA store and is **not recommended** for routine downloads.

## Development

```bash
uv sync --dev
uv run ruff check .
uv run pytest
uv build
```

## Disclaimer

This project is an unofficial client and is not affiliated with RuStore or VK. RuStore API behavior and availability may change. Download and use apps only where permitted by their publisher and RuStore's terms.

## License

MIT.
