Fast, easy-to-use multi-platform file downloader with zero dependencies
Project description
easyget
easyget is a wget/curl-compatible command-line downloader written in Python.
It supports modern features like multithreading, speed limits, resume support, wildcard URL expansion, and progress bars — all in a user-friendly bilingual (English + Korean) interface.
easyget는 Python으로 작성된 wget/curl 호환 명령줄 다운로드 도구입니다.
멀티스레드, 속도 제한, 이어받기, 와일드카드 URL 확장, 진행률 표시 등 현대적인 기능을 지원하며, 영어와 한국어로 모두 친절하게 안내합니다.
easyget philosophy: Easy for human, optimized for AI.
easyget 철학: 사람에게는 쉽고, AI에는 토큰 효율적으로 최적화.
Features / 특징
-
✅ wget/curl-style options (
-O,-c,--limit-rate) -
✅ Multithreaded downloads (default 4 threads)
-
✅ Speed limits (e.g.,
--max-speed 1M) -
✅ Resume support (
--resumeor-c) -
✅ Wildcard (*) expansion in URLs (parsing directory listings)
-
✅ Input from txt, csv, tsv files
-
✅ Progress bars (total file count and individual download progress)
-
✅ Ignore cache (
--no-cache, ignore.partfiles) -
✅ Basic auth / Bearer token support
-
✅ Python HTTP client API (sync + async) for
requests/aiohttp-style migration -
✅ AI-optimized structured outputs (
--ai) and structured diagnostics for automation/agents -
✅ Download modes (
--mode fastoraccurate)fast(default): minimizes metadata probes and downloads immediately in common single-file casesaccurate: probes metadata (HEAD/Range) to improve size/range detection and multithread decisions
-
✅ English/Korean comments and error messages
-
✅ wget/curl 스타일 옵션 지원 (
-O,-c,--limit-rate) -
✅ 멀티스레드 다운로드 (기본 4개 스레드)
-
✅ 속도 제한 (e.g.,
--max-speed 1M) -
✅ 이어받기 지원 (
--resume또는-c) -
✅ URL 내 와일드카드(*) 확장 지원 (디렉토리 리스트 파싱)
-
✅ txt, csv, tsv 파일 입력 지원
-
✅ 진행률 표시 (총 파일 수 및 개별 파일 다운로드)
-
✅ 캐시 무시 기능 (
--no-cache,.part파일 무시) -
✅ 기본 인증 / Bearer 토큰 지원
-
✅ Python HTTP 클라이언트 API (동기 + 비동기) (
requests/aiohttp마이그레이션 용도) -
✅ AI 최적화 구조화 출력 (
--ai) 및 구조화 진단 정보 -
✅ 다운로드 모드 (
--mode fast또는accurate)fast(기본값): 일반적인 단일 파일 다운로드에서 메타데이터 조회를 최소화하고 즉시 다운로드accurate: HEAD/Range 기반 메타데이터를 조회해 크기/Range/멀티스레드 판단 정확도를 높임
-
✅ 영어/한글 주석 및 에러 메시지
Installation / 설치
pip install easyget
easyget is a zero-dependency tool that works with the Python 3.12+ standard library. Or go to Release page and download the latest version.
easyget은 Python 3.12+ 표준 라이브러리만 사용하는 무의존성(zero-dependency) 도구입니다. 또는 릴리즈 페이지에서 최신 버전을 다운로드하세요.
Usage / 사용법
1. Single file download / 단일 파일 다운로드
easyget "https://example.com/file.zip"
# or
python -m easyget "https://example.com/file.zip"
2. Specify mode / 모드 지정 (fast or accurate)
easyget --mode accurate "https://example.com/file.zip"
3. Specify output filename / 파일명 지정
easyget "https://example.com/file.zip" -O myfile.zip
4. Resume download / 이어받기
easyget "https://example.com/file.zip" -c
5. Multi-threaded with speed limit / 멀티스레드 + 속도 제한
easyget "https://example.com/large.iso" --mode accurate --multi 8 --max-speed 2M
6. Use input file list (txt, csv, tsv) / URL 리스트로 다운로드
easyget urls.csv
7. Wildcard in URL / 와일드카드 URL 사용
easyget "https://example.com/files/*.zip"
8. Python API (sync + async) / 파이썬 API (동기 + 비동기)
import easyget
# Sync (requests-like)
resp = easyget.get("https://httpbin.org/get", params={"q": "easyget"})
resp.raise_for_status()
print(resp.status_code, resp.json())
# auth + cookies
secure = easyget.get(
"https://httpbin.org/headers",
auth=("user", "pass"),
cookies={"sid": "abc"},
)
print(secure.status_code)
# Multipart upload
upload = easyget.post(
"https://httpbin.org/post",
data={"name": "demo"},
files={"file": ("hello.txt", b"hello world", "text/plain")},
)
print(upload.status_code)
import asyncio
import easyget
async def main():
async with easyget.AsyncSession() as session:
# aiohttp-like: async with session.get(...)
async with session.get("https://httpbin.org/get") as resp:
data = await resp.json()
print(resp.status, data)
asyncio.run(main())
9. curl-style HTTP request mode / curl 스타일 HTTP 요청 모드
# POST JSON request
easyget -X POST --json-data '{"name":"easyget"}' -i -L https://httpbin.org/post
# HEAD request
easyget -I https://example.com
# TLS/proxy + compressed response
easyget -X GET --proxy http://proxy.local:8080 --cacert ./ca.pem --compressed https://example.com/api
# Multipart form upload
easyget -X POST -F "name=demo" -F "file=@./hello.txt;type=text/plain" https://httpbin.org/post
# AI-optimized compact payload
easyget --ai -X GET --output-select status https://example.com/api
Input File Format / 입력 파일 형식
txt
https://example.com/file1.zip
https://example.com/file2.zip
csv or tsv
| url | filename |
|---|---|
| https://example.com/a.pdf | lecture_a.pdf |
| https://example.com/b.pdf | lecture_b.pdf |
Advanced Options / 고급 옵션
| Option | Description / 설명 |
|---|---|
--output, -o, -O |
Output file name (단일 파일 다운로드 시) |
--resume, -c |
Resume download (이어받기) |
--multi |
Number of threads (스레드 수) |
--max-speed |
Download speed limit (e.g., 1M, 500K) |
--no-cache |
Ignore .part cache and force redownload |
--header |
Custom HTTP headers (e.g., "Key: Value") |
--user-agent |
User-Agent 설정 |
--username, --password |
Basic 인증용 계정 정보 |
--token |
Bearer 토큰 인증 |
--mode |
Download mode: fast or accurate |
--continue, --retry-delay, --retry-max-delay, --retry-backoff, --timestamping |
wget-style advanced download controls |
-X, -d, --json-data, --data-urlencode |
HTTP request mode body/method options |
-F, -I, -L, --fail, -i |
curl-style request mode controls |
--output-select |
request mode response selection (all/status/headers/body) |
--proxy, --cacert, -k, --cert, --key, --compressed |
request mode transport/TLS controls |
--json, --ai |
machine output mode / AI compact output mode |
Notes / 주의사항
-
When a download is interrupted, a
.partfile is created. -
Use
--no-cacheto ignore existing.partfiles and redownload. -
Wildcard URLs are based on
href="..."format in HTML directory listings. -
다운로드가 중단되면
.part파일이 생성됩니다. -
--no-cache옵션을 사용하면 기존.part파일을 무시하고 새로 다운로드합니다. -
와일드카드 URL은 HTML 디렉토리 리스트에서
href="..."형식을 기반으로 파일을 찾습니다.
License
This project is licensed under the MIT License.
이 프로젝트는 MIT 라이선스를 따릅니다。
Contribute / 기여
For questions or improvements, feel free to open an issue or pull request!
기여하고 싶거나 궁금한 점이 있으면 언제든 이슈나 PR을 열어주세요!
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 easyget-1.0.3.tar.gz.
File metadata
- Download URL: easyget-1.0.3.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34f527a1a632a8ee981a1d54a68a231adf3061d0fd733c8d8a0a59eb600ab746
|
|
| MD5 |
13ee6b0c952653724aafea26371fff3e
|
|
| BLAKE2b-256 |
356a98ab1373ad62e00919a9710798988797ffd998351deadf30ec95c7504183
|
File details
Details for the file easyget-1.0.3-py3-none-any.whl.
File metadata
- Download URL: easyget-1.0.3-py3-none-any.whl
- Upload date:
- Size: 29.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25ab905dd75c4f432889f738edc634d2390a3991af334239584ffffaa3e6b4a3
|
|
| MD5 |
c86133530cfbe8a03d16c00eee0d9ced
|
|
| BLAKE2b-256 |
e7166176587af337734847073e84d345987551820a467b492148a776d1976ea2
|