initial commit
This commit is contained in:
87
yt_download.c
Normal file
87
yt_download.c
Normal file
@ -0,0 +1,87 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
int download(char *path, char *url, char is_audio) {
|
||||
int ret;
|
||||
char *args[10];
|
||||
args[0] = "yt-dlp";
|
||||
args[1] = "--config-locations";
|
||||
if (is_audio) {
|
||||
args[2] = "/mnt/youtube/yt-dlp_audio.conf";
|
||||
} else {
|
||||
args[2] = "/mnt/youtube/yt-dlp_video.conf";
|
||||
}
|
||||
args[3] = "--download-archive";
|
||||
if (is_audio) {
|
||||
char *buf = malloc(strlen(path) + 1);
|
||||
sprintf(buf, "%s/downloaded_audio.txt", path);
|
||||
args[4] = buf;
|
||||
} else {
|
||||
char *buf = malloc(strlen(path) + 1);
|
||||
sprintf(buf, "%s/downloaded_video.txt", path);
|
||||
args[4] = buf;
|
||||
}
|
||||
args[5] = "--paths";
|
||||
args[6] = path;
|
||||
args[7] = "--yes-playlist";
|
||||
args[8] = url;
|
||||
args[9] = 0;
|
||||
|
||||
int pid = fork();
|
||||
|
||||
if (pid == -1) {
|
||||
printf("Couldn't fork'\n");
|
||||
return 1;
|
||||
} else if (pid > 0) {
|
||||
waitpid(pid, &ret, 0);
|
||||
} else {
|
||||
execvp(args[0], args);
|
||||
}
|
||||
free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc != 4) {
|
||||
fprintf(stderr, "Incorred amount of arguments\n");
|
||||
}
|
||||
char *path;
|
||||
char *url;
|
||||
char is_audio;
|
||||
size_t i;
|
||||
for (i = 1; i < 4; i++) {
|
||||
if (argv[i][0] == '-') {
|
||||
if (strcmp(argv[i], "-audio") == 0) {
|
||||
is_audio = 1;
|
||||
} else if (strcmp(argv[i], "-video") == 0) {
|
||||
is_audio = 0;
|
||||
} else {
|
||||
fprintf(stderr, "Invalid option: %s\n", argv[i]);
|
||||
return 1;
|
||||
}
|
||||
} else if (strstr(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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user