ytdl_link_gen/README.md

88 lines
2.2 KiB
Markdown
Raw Normal View History

2022-09-19 00:27:44 +02:00
# YTDL Link Gen
2022-09-19 00:26:02 +02:00
A little python script that helps archiving youtube (and other) channels using yt-dlp.
## Features
- Generates a simple batch file that you can use to get everything.
- Skips downloading all video metadata, unlike vanilla yt-dlp.
- Keeps track the videos you have without needing to keep the videos accessible, and only dowloads missing stuff.
2022-09-19 00:28:38 +02:00
- Numbers each video, also remembers old numbering (meaning: deleted videos will not screw it up).
2022-09-19 00:29:03 +02:00
- Backs up it's own data before an update.
2022-09-19 00:26:02 +02:00
## Usage
### Python
2022-09-19 00:26:02 +02:00
First make sure that you have python 3 installed.
#### Without python virtual environments (global install)
2022-09-19 00:26:02 +02:00
Install yt-dlp:
` sudo pip install yt-dlp `
#### Using python virtual environments
create a new virtual environment in the current folder:
` python -m venv venv `
This will create a new venv folder.
Activate it:
POSIX:
bash/zsh ` $ source venv/bin/activate `\
fish ` $ source venv/bin/activate.fish `\
csh/tcsh ` $ source venv/bin/activate.csh `\
PowerShell ` $ venv/bin/Activate.ps1 `\
bash (alternate) ` $ . ./venv/bin/activate `
Windows:
cmd.exe ` C:\> venv\Scripts\activate.bat `\
PowerShell ` PS C:\> venv\Scripts\Activate.ps1 `
Install yt-dlp:
` pip install yt-dlp `
Here are the [full python virtualenv docs](https://docs.python.org/3/library/venv.html) if needed.
### Script
2022-09-19 00:26:02 +02:00
Set up your config file:
` cp config.txt.example config.txt `
Add all channels that you want to grab to your new config.txt.
Run the script:
` python ytdl_link_gen.py `
If you run into any issue you can safely run the script again, it will continue where it left off.
2022-09-19 00:30:23 +02:00
Once this is finished you can (and should, if you want to update videos again) delete the new `temp` directory which got created. It contains channel data,
2022-09-19 00:26:02 +02:00
so if an error occurs it won't have to re-download channel lists again.
You should have a ` dl.sh ` now. Containing yt-dlp commands to all videos since the previous run.
Run it single threaded:
```
chmod +x dl.sh
./dl.sh
```
Or for example using parallel:
` parallel -j4 -a dl.sh --progress `
### Note
If you get an error conplaining about a null object being unindexable check the .json for that channel in the temp directory.
if it only has a null in in delete it. That should solve the issue.