CLI foundation for building qBittorrent RSS rules from anime search input.
Project description
MikanCli
MikanCli is a Python CLI for turning an anime search keyword into a qBittorrent RSS feed and download-rule setup workflow.
Current increment
The repository currently contains the first small slice of the project:
- a Python CLI scaffold
- keyword normalization
- Mikan Bangumi search, subgroup discovery, and subgroup RSS feed resolution
- draft qBittorrent rule construction and interactive qBittorrent submission
- focused tests for the pure logic
This increment now searches Mikan, lets you select the Bangumi and subgroup, resolves the subgroup-specific RSS feed, and prints that feed alongside the draft rule details. In interactive search mode, MikanCli can now submit the RSS feed and auto-download rule to qBittorrent after you confirm the draft. After submission, it reads qBittorrent back to verify that the feed and rule were created. qBittorrent WebUI setup verification is also available.
Internally, the project is split by responsibility:
mikancli/cli/contains CLI entrypoint, prompts, and interactive navigationmikancli/core/contains models, normalization helpers, and rule-building logicmikancli/integrations/contains external service adapters such as Mikanconfig.pyanddisplay.pystay at the package root as shared support modules
Install from source
Clone the repository, then install it from the project folder:
git clone <repo-url>
cd MikanCli
python -m pip install -e .
This installs MikanCli in editable mode, installs the dependencies declared in
pyproject.toml, and registers the mikancli command. After that, you can run
MikanCli from any terminal location:
mikancli
You can also run the module directly from the project folder after installing the local environment:
python -m mikancli
Dependencies are installed by pip when the package is installed. MikanCli does
not install packages at runtime.
Usage
Search directly from the command line:
mikancli "solo leveling" --include HEVC --exclude 720p
You can also run it with no extra arguments and let the script guide you:
mikancli
To set up qBittorrent WebUI access for future increments:
mikancli --setup-qbittorrent
When you run mikancli with no extra arguments, the first menu now lets you choose between:
Search animeModify qBittorrent configurations
If you choose Search anime and qBittorrent is not configured yet, MikanCli can still guide you into qBittorrent setup before continuing.
If --save-path is omitted, MikanCli first checks for a saved default in the
user config file. On Windows, the default config location is
%APPDATA%\MikanCli\config.json.
In a normal interactive run, the guided prompts now use InquirerPy, so list selections stay in place instead of printing a new block of text on every key press.
Every interactive menu now includes an Exit MikanCli option, and text prompts accept exit or quit to stop the tool cleanly.
The first search prompt now says that explicitly, so the quit path is visible before any lookup starts.
- use the saved default folder
- use the system Downloads folder
- browse for a folder
- type a folder path manually
If the chosen folder is not already the saved default, MikanCli asks whether it should be saved for future runs.
Current guided flow:
- ask for anime keyword if you did not type one
- search Mikan for matching Bangumi entries
- let you choose the correct Mikan entry when more than one match is found
- fetch subgroup entries from the selected Bangumi page
- let you choose the correct subgroup RSS feed when more than one subgroup is found
- show the subgroup RSS contents before confirmation
- let you confirm, go back to subgroup selection, or search again
- optionally ask for include words
- optionally ask for exclude words
- let you choose the base download folder from a menu
- ask for the content folder name inside that base folder, defaulting to the selected Bangumi title
- allow quitting cleanly from any interactive menu or prompt
- print the resolved Mikan page URL, subgroup, and subgroup RSS feed URL with the draft rule summary
- ask whether to submit the RSS feed and download rule to qBittorrent when WebUI access is configured
- verify submitted qBittorrent feeds and rules by reading them back from the WebUI API
qBittorrent setup
Before MikanCli can talk to qBittorrent, do a one-time setup inside qBittorrent:
- Open qBittorrent settings.
- Enable WebUI / remote control.
- Check the WebUI address, username, and password there.
Then run:
mikancli --setup-qbittorrent
Setup notes:
- if you press Enter for the URL, MikanCli uses
http://localhost:8080 - you can enter
localhost:8080and MikanCli will normalize it automatically - username and password may be left blank for the first test if your local qBittorrent allows it
Troubleshooting:
- if MikanCli says it could not reach qBittorrent, WebUI may be disabled or using a different port
- if MikanCli says the credentials were rejected, re-check the WebUI username/password in qBittorrent settings
Packaging and release
MikanCli is structured as an installable Python CLI package. The console command
is declared in pyproject.toml:
[project.scripts]
mikancli = "mikancli.cli.entrypoint:main"
Current local install flow:
python -m pip install -e .
mikancli
Planned public install flow after publishing to PyPI:
python -m pip install mikancli
mikancli
Recommended CLI-app install flow after publishing:
pipx install mikancli
mikancli
Remaining packaging work:
- add a release workflow for building and publishing distributions
- later consider a Windows executable for non-technical users
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mikancli-0.1.1.tar.gz.
File metadata
- Download URL: mikancli-0.1.1.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf2237ca09b2ec3e2dc44b9f5f09b1b9106fc6ab0bc2c6b07424fc4619f54510
|
|
| MD5 |
c6d3cd2e3bf4fd9d6617375aaa5fab12
|
|
| BLAKE2b-256 |
158616aaaad5f7794bd03a361318c1861ac7b47f5a0223a23847135cbf35ed5f
|
Provenance
The following attestation bundles were made for mikancli-0.1.1.tar.gz:
Publisher:
publish.yml on JianHua-Deng/MikanCli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikancli-0.1.1.tar.gz -
Subject digest:
bf2237ca09b2ec3e2dc44b9f5f09b1b9106fc6ab0bc2c6b07424fc4619f54510 - Sigstore transparency entry: 1395267306
- Sigstore integration time:
-
Permalink:
JianHua-Deng/MikanCli@995929c32f50c6745341f21dd8f4052466dbe171 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/JianHua-Deng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@995929c32f50c6745341f21dd8f4052466dbe171 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mikancli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mikancli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 30.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed9db5e5cbd628525cd2b2738c3823ea82418a52890f58c9cf12f05b3bbfe57f
|
|
| MD5 |
e04d3aaadb904781a5bfbbb412481376
|
|
| BLAKE2b-256 |
f4b780373a70d96e94fcd1bf5cf2f9961c186ab2266e1ae0296118fd942a6683
|
Provenance
The following attestation bundles were made for mikancli-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on JianHua-Deng/MikanCli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikancli-0.1.1-py3-none-any.whl -
Subject digest:
ed9db5e5cbd628525cd2b2738c3823ea82418a52890f58c9cf12f05b3bbfe57f - Sigstore transparency entry: 1395267321
- Sigstore integration time:
-
Permalink:
JianHua-Deng/MikanCli@995929c32f50c6745341f21dd8f4052466dbe171 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/JianHua-Deng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@995929c32f50c6745341f21dd8f4052466dbe171 -
Trigger Event:
release
-
Statement type: