#include #include #include 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; }