Skip to content

HaipingShi/DL-CART

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

27 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ‡ฌ๐Ÿ‡ง English | ๐Ÿ‡จ๐Ÿ‡ณ ็ฎ€ไฝ“ไธญๆ–‡

็‹ฌ่ฝฎ่ฝฆ Logo

็‹ฌ่ฝฎ่ฝฆ DL Cart

A Full-Featured Video Downloader โ€” Powered by yt-dlp

Latest Release Build Status License Windows Python

๐Ÿ“ฅ Download EXE (Windows, no install needed)


What is this? A standalone video downloader called ็‹ฌ่ฝฎ่ฝฆ (DL Cart) that integrates the full power of yt-dlp and FFmpeg into a single double-clickable .exe. No Python, no FFmpeg, no command line โ€” just paste a URL and download.

็‹ฌ่ฝฎ่ฝฆ DL Cart Screenshot

What It Can Do

Everything yt-dlp can do, accessible through a clean GUI:

Core Download Engine

  • 1000+ sites supported โ€” YouTube, Bilibili, Twitter/X, TikTok, Douyin, Vimeo, and many more (same as yt-dlp)
  • Best quality by default โ€” Automatically selects the best available video + audio streams and merges them
  • Quality presets โ€” 4K, 1080p, 720p, 480p, or audio-only, one click to switch
  • Custom format string โ€” Advanced users can enter any yt-dlp format string directly
  • Speed limiting โ€” Cap download bandwidth (KB/s), useful on shared connections

Subtitles & Metadata

  • 10+ subtitle languages โ€” English, Chinese (Simplified / Traditional), Japanese, Korean, Spanish, French, German, Russian, auto-detect
  • Auto-generated subtitles โ€” Download machine-generated subtitles where available
  • Thumbnail embedding โ€” Automatically embeds video thumbnails into downloaded files
  • Metadata tagging โ€” Writes title, uploader, and other metadata via FFmpeg

Download Management

  • Concurrent downloads โ€” Up to 10 simultaneous downloads (configurable)
  • Queue system โ€” Add multiple URLs, they download in order as slots free up
  • Cancel & retry โ€” Cancel in-progress downloads cleanly; retry failed ones with one click
  • Persistent history โ€” Last 200 downloads saved to disk, survives app restart
  • Right-click actions โ€” Cancel / Retry / Open File / Open Folder / Delete from list

Real-Time Monitoring

  • Visual progress bar โ€” Unicode block bar โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ 45% updates in real time
  • Speed & ETA โ€” Live download speed and estimated time remaining
  • File size tracking โ€” Shows total and downloaded bytes
  • Color-coded status โ€” Green = done, Yellow = downloading, Red = failed

System Integration

  • Bundled FFmpeg โ€” ffmpeg.exe is packed inside the EXE, zero external dependencies
  • Windows notifications โ€” Toast notification pops up when a download finishes
  • Dark / Light theme โ€” Switch in settings, dark mode by default
  • Proxy support โ€” Configure HTTP/SOCKS proxy for restricted networks
  • Safer proxy handling โ€” Ignores broken HTTP_PROXY / HTTPS_PROXY environment settings unless you explicitly configure a proxy in the app
  • Cookie fallback โ€” If browser cookie access fails, the app automatically retries without browser cookies when possible

๐Ÿ”’ Windows SmartScreen Warning

When you run the EXE for the first time, Windows may show:

"Windows protected your PC"

This is a false positive โ€” the app is built from public source code by GitHub Actions. It happens because the EXE is not code-signed.

How to bypass:

  1. Click "More info"
  2. Click "Run anyway"

If you prefer not to bypass it, you can build the EXE yourself from source or run directly with Python.


Download & Install

Windows EXE (Recommended)

  1. Go to Latest Release
  2. Download DLCart.exe
  3. Double-click to run โ€” no installer, no dependencies

The EXE already includes yt-dlp + FFmpeg. It just works.

Running from Source

Requirements: Python 3.8+, Windows / macOS / Linux.

git clone https://github.com/HaipingShi/ytdlp-lh.git
cd ytdlp-lh
pip install -r requirements.txt
python ytdlp_gui.py

FFmpeg should be installed separately if running from source. On Windows, place ffmpeg.exe next to ytdlp_gui.py. If you want browser-based extraction fallback for supported sites, also run python -m playwright install chromium.

Building from Source

pip install pyinstaller yt-dlp playwright
python -m playwright install chromium

# Windows (bundles ffmpeg.exe if present in current dir)
pyinstaller --onefile --windowed --collect-all yt_dlp ^
  --add-binary "ffmpeg.exe;." --add-binary "ffprobe.exe;." ^
  --name DLCart ytdlp_gui.py

Quick Start

  1. Double-click DLCart.exe
  2. Paste any video URL into the input box (Ctrl+V)
  3. Pick quality โ€” leave "Best" for maximum quality
  4. Click Download
  5. Done โ€” click "Open File" in the right-click menu to play it

Simple Usage Guide

If this is your first time using DL Cart, follow this flow:

  1. Open DLCart.exe
  2. Copy a video page link from your browser
  3. Paste the link into the Video URL box
  4. Leave Best Quality selected unless you want a smaller file
  5. Click Download
  6. Wait for the row to change to COMPLETED
  7. Right-click the finished row and choose Open File or Open Folder

Tips:

  • If a site needs login, open Advanced or Settings and choose a browser in Cookie Browser
  • If your network requires a proxy, enter it in Proxy URL
  • If a download fails, right-click the row and choose Retry
  • If you only want audio, select Audio Only before downloading

Beginner-Friendly Walkthrough

Here is the easiest way to use the app without touching advanced settings:

  1. Open the video in your browser and copy the full page URL
  2. Return to DL Cart and paste the URL into the top input box
  3. Keep the quality on Best Quality
  4. Click Download
  5. Watch the task appear in the list below

What you will see:

  • QUEUED means the task is waiting for a free slot
  • DOWNLOADING means the file is actively downloading
  • PROCESSING means yt-dlp / FFmpeg is finishing the file
  • COMPLETED means the file is ready to open
  • FAILED means something went wrong and you can use Retry

When you need Advanced or Settings:

  • Use Audio Only if you want music, podcasts, or spoken content only
  • Use Proxy URL only if your network really requires a proxy
  • Use Cookie Browser only for sites that require login or age/account verification
  • Leave advanced settings empty for normal public videos

Three common examples:

  1. Download a normal public video: Paste the link, keep Best Quality, click Download
  2. Download only audio: Paste the link, choose Audio Only, click Download
  3. Download a members-only / login-required video: Paste the link, open Advanced, choose your browser in Cookie Browser, then download

Keyboard & Mouse Shortcuts

Action How
Paste URL Ctrl+V in URL field, or right-click โ†’ Paste
Cancel download Right-click row โ†’ Cancel
Retry failed Right-click row โ†’ Retry
Open downloaded file Right-click row โ†’ Open File
Open download folder Right-click row โ†’ Open Folder
Clear URL Click the Clear button

Settings

Open via the โš™๏ธ button. All settings persist across sessions.

Setting Description Default
Download Directory Where files are saved ~/Downloads
Max Concurrent Parallel download slots (1โ€“10) 3
Speed Limit KB/s cap, 0 = unlimited 0
Proxy URL Explicit HTTP/SOCKS proxy, blank = disabled empty
Cookie Browser Load cookies from Chrome / Edge / Firefox when needed empty
Theme Dark or Light Dark

Settings are stored at ~/.dlcart/settings.json.


Supported Sites

This application supports every site that yt-dlp supports โ€” over 1000 and counting. Here are some popular ones:

Site Site Site
YouTube Bilibili Twitter/X
TikTok / Douyin Vimeo Dailymotion
Facebook Instagram Reddit
SoundCloud Niconico Twitch
Pinterest Tumblr Many more...

Full list: yt-dlp supported sites


Project Structure

ytdlp-lh/
โ”œโ”€โ”€ ytdlp_gui.py          # Entire application in a single file
โ”œโ”€โ”€ requirements.txt      # Runtime/build dependencies
โ”œโ”€โ”€ .github/workflows/
โ”‚   โ””โ”€โ”€ build.yml         # CI: build EXE + publish to GitHub Releases
โ”œโ”€โ”€ docs/                 # Documentation & plans
โ””โ”€โ”€ README.md

Troubleshooting

Windows says "protected your PC"

This is SmartScreen blocking an unsigned app. Click "More info" โ†’ "Run anyway". See the Security Notice section above for details and alternatives.

Video downloads but has no audio

This means video and audio streams were not merged. Make sure FFmpeg is available. If using the EXE, FFmpeg is bundled and this shouldn't happen. If running from source, install FFmpeg.

"Unsupported URL" error
  • Check your internet connection
  • Make sure the URL works in a browser
  • The site might require login, be region-locked, or not be supported by yt-dlp yet
Downloads are slow
  • Try setting a speed limit (Settings โ†’ Speed Limit) โ€” some servers throttle aggressive connections
  • Select a lower quality to reduce file size
  • Your ISP might be throttling video traffic โ€” try a VPN
Downloads fail because of a proxy error
  • If you did not explicitly configure a proxy in the app, DL Cart ignores HTTP_PROXY / HTTPS_PROXY from the shell environment
  • If you do need a proxy, set it in Advanced or Settings instead of relying on environment variables
  • If downloads still fail, clear the in-app proxy field and try again
Browser cookie loading fails
  • Some Windows/browser setups block access to the browser cookie database while the browser is running
  • DL Cart automatically retries without browser cookies when possible
  • If the site truly requires login, open Advanced or Settings and choose the correct browser only when needed
  • Leaving Cookie Browser blank is the safest default for public videos
App won't start

EXE version:

  • Requires Windows 10 1809+
  • Right-click โ†’ Properties โ†’ check "Unblock" if downloaded from the internet
  • Try Run as Administrator

Python version:

  • Ensure Python 3.8+: python --version
  • Install deps: pip install -r requirements.txt
  • Check dlcart.log for error details

Contributing

  1. Fork the repo
  2. Create a branch: git checkout -b feature/my-feature
  3. Commit: git commit -m 'Add my feature'
  4. Push: git push origin feature/my-feature
  5. Open a Pull Request

Bug reports and feature requests welcome at Issues.


License

MIT License โ€” see LICENSE.


Acknowledgments

  • yt-dlp โ€” The download engine that makes everything possible
  • FFmpeg โ€” Stream merging, metadata, and thumbnail embedding
  • Python + Tkinter โ€” Application runtime and GUI

Star โญ this repo if you find it useful!

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors