Skip to content

Repository files navigation

Douyin Downloader

douyin-downloader

简体中文 · English

Download Douyin videos and photos without watermarks. Use Douzy for a desktop interface, or the Python CLI for scripts.

Douzy Desktop

A desktop app for Douyin, TikTok, YouTube, Telegram, and X. Paste links, track downloads, and browse your local archive.

Download for Windows / macOS

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
Douzy Douyin download options Douzy TikTok workspace Douzy YouTube workspace
Telegram setup X Platform switcher
Douzy Telegram setup Douzy X workspace Douzy platform switcher

Screenshots: Douzy 0.11.6 on macOS. Telegram is shown before setup. Click an image to enlarge.

CLI Status

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.

Quick Start

Requires Python 3.9+ on Windows, macOS, or Linux. Read the CLI limitations above first.

1. Install

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 chromium

2. Configure and sign in

Copy config.example.yml to config.yml:

cp config.example.yml config.yml
python -m tools.cookie_fetcher --config config.yml

On 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: true

3. Run

python run.py -c config.yml

Use 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

Configuration

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 8000

Comments, transcription, notifications, and live recording are configured in config.example.yml.

FAQ

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.

Development

python -m pip install -e ".[dev]"
python -m pytest tests/
ruff check .

Community & License

QQ group · LINUX DO · MIT License

Community QR code

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.

Star History

View GitHub Star History

About

A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。

Resources

Stars

12.0k stars

Watchers

61 watching

Forks

Releases

Packages

Used by

Contributors

Languages