mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
c86182d53a
It now includes a yt-dlp script that includes the arguments as an extra package. This is nice for custom downloads with the same preferences for downloading.
135 lines
4.7 KiB
Nix
135 lines
4.7 KiB
Nix
{ config, options, lib, pkgs, ... }:
|
|
|
|
let cfg = config.tasks.multimedia-archive;
|
|
in {
|
|
options.tasks.multimedia-archive.enable =
|
|
lib.mkEnableOption "multimedia archiving setup";
|
|
|
|
config = lib.mkIf cfg.enable (let
|
|
yt-dlp-args = [
|
|
# Make a global list of successfully downloaded videos as a cache for yt-dlp.
|
|
"--download-archive videos"
|
|
|
|
# It gave me problems so no continues.
|
|
"--no-continue"
|
|
|
|
# No overwriting of videos and related files.
|
|
"--no-force-overwrites"
|
|
|
|
# Embed metadata in the file.
|
|
"--embed-metadata"
|
|
|
|
# Embed chapter markers, if possible.
|
|
"--embed-chapters"
|
|
|
|
# Write the subtitle file.
|
|
"--write-subs"
|
|
|
|
# Write the description in a separate file.
|
|
"--write-description"
|
|
|
|
# The global output for all of the jobs.
|
|
"--output '%(uploader,artist,creator|Unknown)s/%(release_date>%Y,upload_date>%Y|Unknown)s-%(title)s.%(ext)s'"
|
|
|
|
# Select only the most optimal format for my usecases.
|
|
"--format '(webm,mkv,mp4)[height<=?1280]'"
|
|
|
|
# Prefer MKV whenever possible for video formats.
|
|
"--merge-output-format mkv"
|
|
|
|
# Prefer Vorbis when audio-only downloads are used.
|
|
"--audio-format vorbis"
|
|
"--audio-quality 2"
|
|
];
|
|
yt-dlp-archive-variant = pkgs.writeScriptBin "yt-dlp-archive-variant" ''
|
|
${pkgs.yt-dlp}/bin/yt-dlp ${lib.escapeShellArgs yt-dlp-args}
|
|
'';
|
|
in {
|
|
environment.systemPackages = [ yt-dlp-archive-variant ];
|
|
|
|
services.yt-dlp = {
|
|
enable = true;
|
|
archivePath = "/archives/yt-dlp-service";
|
|
|
|
# This is applied on all jobs. It is best to be minimal as much as
|
|
# possible for this.
|
|
extraArgs = yt-dlp-args;
|
|
|
|
jobs = {
|
|
arts = {
|
|
urls = [
|
|
"https://www.youtube.com/channel/UCjdHbo8_vh3rxQ-875XGkvw" # 3DSage
|
|
"https://www.youtube.com/channel/UCHv_hNLkxqlcY20MwVyayfw" # Ali Bahabadi
|
|
"https://www.youtube.com/c/DavidRevoy" # David Revoy
|
|
"https://www.youtube.com/channel/UCGMyyn2FdEFcDfP1wQRh5lQ" # Erindale
|
|
"https://www.youtube.com/c/Jazza" # Jazza
|
|
"https://www.youtube.com/channel/UCcBnT6LsxANZjUWqpjR8Jpw" # Marcello Barenghi
|
|
"https://www.youtube.com/c/ronillust" # ronillust
|
|
];
|
|
startAt = "weekly";
|
|
extraArgs = [
|
|
"--playlist-end 20" # Only check the first N videos.
|
|
];
|
|
};
|
|
|
|
compsci = {
|
|
urls = [
|
|
"https://www.youtube.com/channel/UC_mYaQAE6-71rjSN6CeCA-g" # NeetCode
|
|
"https://www.youtube.com/c/ThePrimeagen" # ThePrimeagen
|
|
"https://www.youtube.com/c/EasyTheory" # EasyTheory
|
|
"https://www.youtube.com/c/K%C3%A1rolyZsolnai" # Two Minute Papers
|
|
"https://www.youtube.com/c/TheCodingTrain" # TheCodingTrain
|
|
];
|
|
startAt = "weekly";
|
|
extraArgs = [
|
|
"--playlist-end 20" # Only check the first N videos.
|
|
];
|
|
};
|
|
|
|
cooking = {
|
|
urls = [
|
|
"https://www.youtube.com/channel/UCJHA_jMfCvEnv-3kRjTCQXw" # Babish Culinary Universe
|
|
"https://www.youtube.com/channel/UCb5QRUn5w8_g0j8QVaWzcjQ" # BORE.D
|
|
"https://www.youtube.com/channel/UCzqbfYjQmf9nLQPMxVgPhiA" # emmymade
|
|
"https://www.youtube.com/channel/UCgmOd6sRQRK7QoSazOfaIjQ" # Emma's Goodies
|
|
"https://www.youtube.com/channel/UCcp9uRaBwInxl_SZqGRksDA" # Hidamari Cooking
|
|
"https://www.youtube.com/channel/UCvQrjgLj841wiQAKDgtKFOw" # Ninong Ry
|
|
"https://www.youtube.com/channel/UCekQr9znsk2vWxBo3YiLq2w" # You Suck at Cooking
|
|
"https://www.youtube.com/channel/UCUAKaXyq2hVBCph1LOUtuqg" # 집밥요리 Home Cooking
|
|
];
|
|
startAt = "weekly";
|
|
extraArgs = [
|
|
"--playlist-end 15" # Check the first N videos.
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
services.gallery-dl = {
|
|
enable = true;
|
|
archivePath = "/archives/gallery-dl-service";
|
|
extraArgs = [
|
|
# Record all downloaded files in an archive file.
|
|
"--download-archive ${config.services.gallery-dl.archivePath}/photos"
|
|
|
|
# Write metdata to info.json file.
|
|
"--write-info-json"
|
|
];
|
|
|
|
jobs = {
|
|
arts = {
|
|
urls = [
|
|
"https://www.deviantart.com/xezeno" # Xezeno
|
|
#"https://www.pixiv.net/en/users/60562229" # Ravioli
|
|
"https://www.artstation.com/kuvshinov_ilya" # Ilya Kuvshinov
|
|
"https://www.artstation.com/meiipng" # Meiiart
|
|
"https://www.artstation.com/bassem_wageeh" # Bassem wageeh
|
|
"https://hyperjerk.newgrounds.com" # HyperJerk
|
|
];
|
|
startAt = "weekly";
|
|
};
|
|
};
|
|
};
|
|
});
|
|
}
|