about summary refs log tree commit diff
path: root/home/profiles/ytdlp.nix
blob: ce2e32c1652b792e032ec5a49dd652dcefe14e18 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{ pkgs, ... }:
{
  home.packages = with pkgs; [
    yt-dlp
  ];

  xdg.configFile."yt-dlp/config".source = pkgs.writeText "config" ''
    # Preferred formats:
    # 1. 1080p, combined, mp4 (for some non-youtube sites).
    # 2. 1080p, combined, any format (in case mp4 is not available).
    # 3. 1080p, best video + best audio (only available with separate video and audio on youtube).
    # 4. >30fps (any resolution), best video + best audio (only available with separate video and audio on youtube).
    # 5. 720p, pre-joined, because it is available on youtube.
    # 6. <720p, best video + best audio (480p and some other lower resolutions are only available with separate video and audio on youtube).
    # 7. When all else fails, take whatever youtube-dl thinks is the best (mainly for non-YT websites).
    --format="best[height=1080][ext=mp4]/best[height=1080]/bestvideo[height=1080][ext=mp4]+bestaudio[ext=m4a]/bestvideo[fps>30][ext=mp4]+bestaudio[ext=m4a]/best[height=720][ext=mp4]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"

    --continue

    --sub-langs all
    --write-subs

    --convert-subs=srt

    --restrict-filenames
    --output="$HOME/media/videos/%(uploader)s/%(playlist)s/%(upload_date)s-%(title)s.%(ext)s"
    --merge-output-format mkv

    --embed-metadata
    --embed-chapters
    --embed-info-json
    # create chapter entries to mark sponsor segments
    --sponsorblock-mark all

    --yes-playlist
  '';
}