72 lines
1.8 KiB
C
72 lines
1.8 KiB
C
#include <strops.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
int download(char *path, char *url, char is_audio) {
|
|
int ret;
|
|
char *downloaded = malloc(strops_length(path) + 1);
|
|
is_audio ? sprintf(downloaded, "%s/downloaded_audio.txt", path)
|
|
: sprintf(downloaded, "%s/downloaded_video.txt", path);
|
|
|
|
int pid = fork();
|
|
|
|
if (pid == -1) {
|
|
printf("Couldn't fork'\n");
|
|
return 1;
|
|
} else if (pid > 0) {
|
|
waitpid(pid, &ret, 0);
|
|
} else {
|
|
execlp("yt-dlp", "yt-dlp",
|
|
"--config-locations", is_audio ? "/mnt/youtube/yt-dlp_audio.conf" : "/mnt/youtube/yt-dlp_video.conf",
|
|
"--download-archive", downloaded,
|
|
"--paths", path,
|
|
"--yes-playlist",
|
|
url,
|
|
NULL);
|
|
}
|
|
free(downloaded);
|
|
return ret;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
if (argc != 4) {
|
|
fprintf(stderr, "Incorred amount of arguments\n");
|
|
return 1;
|
|
}
|
|
char *path, *url, is_audio;
|
|
size_t i;
|
|
for (i = 1; i < 4; i++) {
|
|
if (argv[i][0] == '-') {
|
|
if (strops_equals(argv[i], "-audio")) {
|
|
is_audio = 1;
|
|
} else if (strops_equals(argv[i], "-video")) {
|
|
is_audio = 0;
|
|
} else {
|
|
fprintf(stderr, "Invalid option: %s\n", argv[i]);
|
|
return 1;
|
|
}
|
|
} else if (strops_starts_with(argv[i], "https://")) {
|
|
url = argv[i];
|
|
} else {
|
|
path = argv[i];
|
|
}
|
|
}
|
|
if (!path) {
|
|
fprintf(stderr, "No path specified\n");
|
|
return 1;
|
|
}
|
|
if (!url) {
|
|
fprintf(stderr, "No valid url specified\n");
|
|
return 1;
|
|
}
|
|
|
|
int ret;
|
|
ret = download(path, url, is_audio);
|
|
if (ret != 0) {
|
|
fprintf(stderr, "Download Failed\n");
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|