Utility program for downloading bookmarked YouTube links using yt-dlp. It replicates the folder structure of your Chrome/Brave/Firefox/etc. bookmarks and calls yt-dlp to download all YouTube videos among the bookmarks.
- Run the executable and select your browser profile to auto-import bookmarks, or load a Google Takeout Chrome bookmarks HTML file.
- Choose an output folder for the downloaded files.
- If necessary, specify the location of the yt-dlp executable in the settings.
- CLI usage options are available.
Make sure yt-dlp is installed: If you do not have the newest version you can get it here. Download the executable for your system from releases. bookmark-dlp is packaged in some platforms native package distribution.
sudo dnf copr enable neurofibromin/bookmark-dlp
sudo dnf install bookmark-dlp
yay bookmark-dlp
Windows | Linux | OSX (semi-supported) |
---|---|---|
x64 | x64 | x64 |
x32 | N/A | N/A |
arm64 | arm64 | arm64 |
Linux Installers:
- Currently "exports" from browsers do not work.
- Output folder cannot be a network folder on some platforms.
Put the Bookmarks.html and the yt-dlp(.exe) into the same directory as the executable. Get the Bookmarks.html from a Google takeout.
Run the executable:
Windows: in CMD or PowerShell: bookmark-dlp-0.4.1.exe --interactive
Linux: in terminal in the directory: ./bookmark-dlp-linux-x64-0.4.1 --interactive
More flags/usage info: ./bookmark-dlp --help
- The program checks for a Bookmarks.html file in its root directory. If not found, it searches default locations for supported browsers.
- It replicates the folder structure of the bookmarks bar on disk.
- YouTube links are extracted from the bookmarks and organized into text files.
- Helper scripts are generated for each folder to call yt-dlp for downloading.
- Optional: Provide a yt-dlp.conf file in the program root directory for advanced configurations.
If a Bookmarks.html exists within its root directory/where it was called from, that is the default input file. Default locations for some browsers (see list of supported browsers) are checked, to find any browser profiles with bookmarks.
When a bookmark containing file is found or provided, the content is taken in, and the folder structure of the bookmarks bar is replicated on disk, in the chosen output directory (root(running) directory by default).
The youtube links in the given folder are written into a ${foldername}.txt file. Complex youtube links (not links for video, but for channels and playlists etc) can be included, but are excluded by default.
A helper script (.bat or .sh) is also generated for each folder. If a folder contains no links (and no files at all) it is deleted. The helper scripts are called, these in turn call yt-dlp. The presence of yt-dlp binaries is checked details at Locations for files.
The scripts run one at a time, in sequence. I recommend also providing a yt-dlp.conf file into program root (running) directory, and enabling the archive function - that way bookmark-dlp can be run from the same directory again, and only new files get downloaded.
If the same directory is used for different profiles things can get written into same directories, but probably nothing should be lost.
- local
Path.Combine(Directory.GetCurrentDirectory(), "bookmark-dlp.conf")
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bookmark-dlp.conf")
- OS config directory
- windows =
Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "bookmark-dlp\\bookmark-dlp.conf")
- linux =
Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "bookmark-dlp/bookmark-dlp.conf")
- osx =
Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Personal), "bookmark-dlp/bookmark-dlp.conf")
- windows =
If no config is found at startup popup asks for location for new config file.
- program is called from
- program executable is found in
- chosen output folder
- path
accepted filenames for the yt-dlp binary:
- osx: { "yt-dlp", "yt-dlp_macos", "yt-dlp_macos_legacy" }
- linux: {"yt-dlp", "yt-dlp_linux", "yt-dlp_linux_aarch64", "yt-dlp_linux_armv7l" }
- windows: "yt-dlp.exe"
https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#configuration
- bookmark-dlp program is called from
- yt-dlp executable is found in
- bookmark-dlp chosen output folder
- bookmark-dlp executable is found in
- yt-dlp default folder
${XDG_CONFIG_HOME}/yt-dlp.conf
${XDG_CONFIG_HOME}/yt-dlp/config
${XDG_CONFIG_HOME}/yt-dlp/config.txt
${APPDATA}/yt-dlp.conf
${APPDATA}/yt-dlp/config
${APPDATA}/yt-dlp/config.txt
~/yt-dlp.conf
~/yt-dlp.conf.txt
~/.yt-dlp/config
~/.yt-dlp/config.txt
/etc/yt-dlp.conf
/etc/yt-dlp/config
/etc/yt-dlp/config.txt
Windows and linux compatible, written in C#, builds for x86 and ARM available. Flatpaks, DEB and RPM packages are also generated. Arch packagebuild is in the repo, but also available in the AUR.
Build your own: this project is open source
CI/CD
- OpenSuse Build Service
- Nix
- Flathub
- Debian
- Arch/AUR
- Fedora Copr
- Gitea mirror
- sourceforge mirror
- NuGet
- innosetup
- winget
- chocolatey
new features
- start console and gui from same binary
- better versioning
- refactor bookmarks import to library
- tray icon
- dot desktop file
- add manpages
- logging
- create project icon
Increase support
- safari support
- opera osx support
- bsd support
- docker
- netcore3.1
- browsers installed as flatpaks
- sign appimage with pupnet
- Add screenshots to README.md
- Add manpage to .spec
- Add manpage to PKGBUILD
- Add manpage to .nix
The following pgp keys are valid:
Fingerprint | Description |
---|---|
9F9BFE94618AD26667BD28214F671AFAD8D4428B | used in git and manually signed packages |
5C85EF4F34E089A04B2063A5833E01FC62E56779 | used in CICD pipelines to autosign packages where supported |
Keyservers:
Public keys are also distributed with the build files.
SHA256 hashes for the binaries are produced in the GitHub workflow and found in checksum.txt under release assets.
The bookmark-dlp icons are licensed under CC BY-NC-SA 4.0.
Install dependencies: dotnet
git clone -b master https://github.com/Neurofibromin/bookmark-dlp bookmark-dlp
cd bookmark-dlp
dotnet restore
dotnet publish bookmark-dlp/bookmark-dlp.csproj --configuration Release