简体中文 · English
Download Douyin videos and photos without watermarks. Use Douzy for a desktop interface, or the Python CLI for scripts.
A desktop app for Douyin, TikTok, YouTube, Telegram, and X. Paste links, track downloads, and browse your local archive.
Platform features depend on enabled plugins or local components. Some batch and advanced features require activation.
| Platform | Content |
|---|---|
| Douyin | Videos, photos, profiles, collections; following, subscriptions, favorites, and likes |
| TikTok | Public videos, photos, and profiles |
| YouTube | Videos, Shorts, channels, and playlists; audio and subtitles |
| Telegram | Media from accessible chats, groups, and channels; requires setup and sign-in |
| X | Posts, profile media, your bookmarks and likes; requires account cookies |
| Douyin | TikTok | YouTube |
|---|---|---|
| Telegram setup | X | Platform switcher |
Screenshots: Douzy 0.11.6 on macOS. Telegram is shown before setup. Click an image to enlarge.
The CLI supports Douyin only. It includes batch downloads, date filters, retries, download history, and optional comments, transcription, and notifications.
Download limitations: Douyin's request verification currently blocks CLI downloads of individual videos/photos, collections, music, likes, and favorites. Profile posts can try the Playwright browser fallback, but success is not guaranteed. Use Douzy for everyday downloads.
Refreshing cookies or retrying does not fix this verification block. Live recording is experimental; HLS sources save a playlist, not a playable video.
Requires Python 3.9+ on Windows, macOS, or Linux. Read the CLI limitations above first.
git clone https://github.com/jiji262/douyin-downloader.git
cd douyin-downloader
python -m pip install -r requirements.txt
python -m pip install playwright
python -m playwright install chromiumCopy config.example.yml to config.yml:
cp config.example.yml config.yml
python -m tools.cookie_fetcher --config config.ymlOn Windows PowerShell, use Copy-Item config.example.yml config.yml to copy the file. Sign in to Douyin in the browser, then return to the terminal and press Enter to save cookies.
Replace the sample link in config.yml with your creator's profile URL. Keep the saved cookies and adjust these fields:
link:
- https://www.douyin.com/user/YOUR_SEC_UID
path: ./Downloaded/
mode: [post]
number:
post: 10 # 0 = unlimited
increase:
post: true # skip downloaded items
redownload_missing_files: truepython run.py -c config.ymlUse python run.py --help for all options.
| Option | Purpose |
|---|---|
-c, --config |
Config file |
-u, --url |
Append a URL to the links in the config; repeatable |
-p, --path |
Download folder |
-t, --thread |
Concurrent downloads |
-v, --verbose |
Detailed logs |
Full settings and examples: config.example.yml.
| Setting | Purpose |
|---|---|
number.post |
Item limit; 0 means unlimited |
start_time / end_time |
Date range (YYYY-MM-DD); includes the whole end date |
video_quality |
highest by default; original tries the original upload and falls back |
increase.post |
true skips downloaded items; false downloads again and overwrites files in the selected scope |
redownload_missing_files |
Default true: download missing files again. With false, valid database history can still skip them |
Incremental downloads check for non-empty primary media on disk. You do not need to clear the database to download again: set increase.post: false. The same switch is available for like, mix, and music.
More CLI commands
# Hot search board and keyword search → JSONL
python run.py --hot-board 30
python run.py --search "cats" --search-max 50
# Optional REST API server
python -m pip install fastapi uvicorn
python run.py --serve --serve-port 8000Comments, transcription, notifications, and live recording are configured in config.example.yml.
Cookies expired? Run python -m tools.cookie_fetcher --config config.yml again.
Only a few profile posts? Keep browser_fallback.enabled: true and headless: false. Complete any verification yourself in the browser; the current verification block may still prevent downloads.
Need logs? Run python run.py -c config.yml -v.
python -m pip install -e ".[dev]"
python -m pytest tests/
ruff check .QQ group · LINUX DO · MIT License
For learning and personal data management. Respect copyright, privacy, and platform rules. You are responsible for how you use this tool; platform changes may affect availability.