Python-based proxy subscription converter for Clash
Project description
py-subconverter
Python-based proxy subscription converter for Clash. Convert proxy subscriptions to Clash configuration format with full support for subconverter INI configurations.
Features
- ✅ Convert proxy subscriptions to Clash YAML format
- ✅ Support for Shadowsocks, VMess, Trojan, VLESS protocols
- ✅ Full subconverter INI configuration support
- ✅ Custom proxy groups with regex matching
- ✅ Rule-based routing with automatic rule set downloading
- ✅ Filter unsupported rule types automatically
- ✅ No external services required - 100% local conversion
Installation
pip install py-subconverter
Quick Start
Command Line Usage
Basic conversion:
py-sub-conv --output config.yaml
With environment variables (.env file):
DLER_EMAIL=your@email.com
DLER_PASSWORD=yourpassword
RULE_URL=https://example.com/config.ini
Then run:
py-sub-conv --output config.yaml
Python API Usage
from py_subconverter import SubscriptionConverter
converter = SubscriptionConverter()
# Convert subscription
config = converter.convert(
subscription_url="https://example.com/subscription",
rule_url="https://example.com/config.ini", # Optional INI config
output_file="config.yaml"
)
Supported Rule Types
py-subconverter automatically filters rules to only include types supported by standard Clash:
- ✅
DOMAIN- Match exact domain - ✅
DOMAIN-SUFFIX- Match domain suffix - ✅
DOMAIN-KEYWORD- Match domain keyword - ✅
IP-CIDR- Match IPv4 CIDR - ✅
IP-CIDR6- Match IPv6 CIDR - ✅
GEOIP- Match GeoIP database - ✅
MATCH- Match all (final rule) - ✅
PROCESS-NAME- Match process name
Automatically filtered (Clash Meta only):
- ❌
USER-AGENT - ❌
URL-REGEX
INI Configuration Support
py-subconverter fully supports subconverter INI format:
[custom]
ruleset=🎯 Direct,https://example.com/rules/direct.list
ruleset=🚀 Proxy,https://example.com/rules/proxy.list
ruleset=🐟 Final,[]MATCH
custom_proxy_group=🚀 Proxy`select`[]♻️ Auto`[]🇭🇰 HK`[]DIRECT
custom_proxy_group=♻️ Auto`url-test`.*`http://www.gstatic.com/generate_204`300
custom_proxy_group=🇭🇰 HK`url-test`香港|HK`http://www.gstatic.com/generate_204`300
CLI Options
py-sub-conv [OPTIONS]
Options:
-o, --output FILE Output YAML file path (default: config.yaml)
-s, --subscription URL Subscription URL (overrides .env)
-r, --rule URL Custom rule URL (overrides .env)
-v, --verbose Show detailed conversion process
-h, --help Show this help message
Development
Setup Development Environment
git clone https://github.com/gencylee/py-subconverter.git
cd py-subconverter
# Install in development mode
pip install -e ".[dev]"
Run Tests
pytest
Build Package
python -m build
Differences from Original Subconverter
py-subconverter is a pure Python implementation that:
- No External Services - All conversion is done locally
- Better Performance - Direct Python implementation without HTTP overhead
- Rule Filtering - Automatically filters unsupported rule types
- Modern Python - Clean, maintainable codebase with type hints
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Links
Project details
Release history Release notifications | RSS feed
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 subconverter_py-0.1.2.tar.gz.
File metadata
- Download URL: subconverter_py-0.1.2.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c68f0d2a2724d461c4b80b812048f2a43dca5a1f7caaf27cfec3d90c8f1ceadc
|
|
| MD5 |
6a4849768e1e794d1dc8b26620c7a0cd
|
|
| BLAKE2b-256 |
ffdfc5a04f9135f366dbc49276256f4b0eb1646f6459b02d574aae14de49b2b6
|
File details
Details for the file subconverter_py-0.1.2-py3-none-any.whl.
File metadata
- Download URL: subconverter_py-0.1.2-py3-none-any.whl
- Upload date:
- Size: 29.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07a37e8d54af19d8efc5499a8691d7089fe1d3703f7272703b754836949d00c4
|
|
| MD5 |
2917ab8bad9370be9a13d2667a19ebe8
|
|
| BLAKE2b-256 |
3a1c9538406bb28167ad04a34ca5dfaacf7d4dc7f1fe36d2227c9d7f25774fce
|