-
Notifications
You must be signed in to change notification settings - Fork 0
/
youtube_downloader_en.cpp
135 lines (121 loc) · 4.29 KB
/
youtube_downloader_en.cpp
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
bool isPlaylist();
//Music
void promptMusicPlaylist();
void createMusicPlaylistLink();
void createMusicNoPlaylistLink();
void createMusicNormalLink();
//Video
void promptVideoPlaylist();
void createVideoPlaylistLink();
void createVideoNoPlaylistLink();
void createVideoNormalLink();
struct{
string link="";
string command="";
} yt;
bool isPlaylist(){
bool playlist;
if(yt.link.find("list") != std::string::npos){
playlist = true;
}else playlist = false;
return playlist;
}
//Music
void promptMusicPlaylist(){
char r;
cout<<endl<<"This video is in a playlist! Do you want to download the entire playlist? (y/n) ";
cin>>r;
if(r=='y'||r=='Y'){
createMusicPlaylistLink();
}else createMusicNoPlaylistLink();
}
void createMusicPlaylistLink(){
yt.command = ".\\yt-dlp --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output \"downloaded\\%(title)s.%(ext)s\" --yes-playlist \"" + yt.link + "\"";
}
void createMusicNoPlaylistLink(){
yt.command = ".\\yt-dlp -x --no-playlist --audio-format mp3 --output \"downloaded\\%(title)s.%(ext)s\" \"" + yt.link + "\"";
}
void createMusicNormalLink(){
yt.command = ".\\yt-dlp -x --audio-format mp3 --output \"downloaded\\%(title)s.%(ext)s\" \"" + yt.link + "\"";
}
//Video
void promptVideoPlaylist(){
char r;
cout<<endl<<"This video is in a playlist! Do you want to download the entire playlist? (y/n) ";
cin>>r;
if(r=='y'||r=='Y'){
createVideoPlaylistLink();
}else createVideoNoPlaylistLink();
}
void createVideoPlaylistLink(){
yt.command = ".\\yt-dlp --yes-playlist -f mp4 --output \"downloaded\\%(title)s.%(ext)s\" \"" + yt.link + "\"";
}
void createVideoNoPlaylistLink(){
yt.command = ".\\yt-dlp -x --no-playlist -f mp4 --output \"downloaded\\%(title)s.%(ext)s\" \"" + yt.link + "\"";
}
void createVideoNormalLink(){
yt.command = ".\\yt-dlp -f mp4 --output \"downloaded\\%(title)s.%(ext)s\" \"" + yt.link + "\"";
}
int main(){
int scelta=0;
char continua;
bool cont;
do{
std::system("mkdir downloaded");
std::system("cls");
SetConsoleTextAttribute (h, 2);
std::cout<<"[YouTube Downloader v1.1 ~ by Gab8bit]\n";
SetConsoleTextAttribute (h, 7);
std::cout<<"\n1- Audio\n2- Video\n\n> ";
std::cin>>scelta;
std::cout<<"\n\n";
switch(scelta){
case 1:{
std::system("cls");
SetConsoleTextAttribute (h, 9);
std::cout<<"[YouTube Audio Downloader]";
SetConsoleTextAttribute (h, 7);
std::cout<<"\n\nVideo Link: ";
std::cin>>yt.link;
if(isPlaylist()){
promptMusicPlaylist();
}else createMusicNormalLink();
SetConsoleTextAttribute (h, 14);
std::cout<<"\n\nDownload Status:\n";
SetConsoleTextAttribute (h, 7);
std::system(yt.command.c_str());
std::cout<<"\n\n";
break;
};
case 2:{
std::system("cls");
SetConsoleTextAttribute (h, 9);
std::cout<<"[YouTube Video Downloader]";
SetConsoleTextAttribute (h, 7);
std::cout<<"\n\nVideo Link: ";
std::cin>>yt.link;
if(isPlaylist()){
promptVideoPlaylist();
}else createVideoNormalLink();
SetConsoleTextAttribute (h, 14);
std::cout<<"\n\nDownload Status:\n";
SetConsoleTextAttribute (h, 7);
std::system(yt.command.c_str());
std::cout<<"\n\n";
break;
};
};
SetConsoleTextAttribute (h, 2);
cout<<endl<<"Finished!"<<endl<<"Do you want to download more audios or videos? (y/n) ";
SetConsoleTextAttribute (h, 7);
cin>>continua;
if(continua=='y'||continua=='Y'){
cont = true;
}else cont = false;
}while(cont);
}