static void Download(linkInfo info, string dir) { switch (info.downloadType) { case type.MP3: Program.DownloadMP3(info.link, dir); break; case type.MP4: Program.DownloadMP4(info.link, dir); break; case type.None: break; default: break; } }
static void Run() { StreamReader config = File.OpenText("config.cfg"); if (config.EndOfStream) { Console.WriteLine("Failed to open config.cfg"); Console.ReadKey(); return; } while (!config.EndOfStream) { string extractedLine = config.ReadLine(); if (extractedLine.Contains("download_path")) { int startIndex = extractedLine.IndexOf("=") + 2; int endIndex = extractedLine.IndexOf("\"", startIndex); downloadDirectory = extractedLine.Substring(startIndex, endIndex - startIndex); } } config.Close(); List <linkInfo> m_Links = new List <linkInfo>(); youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "AIzaSyDzqeoR5mWrtJJ1Qt1SL_DLRDJvVKStdSo", ApplicationName = new Program().GetType().ToString() }); /* * Main loop */ while (true) { Console.Write("$ "); string input = Console.ReadLine(); string link = ""; type downloadType = type.None; string command; try { command = input.Substring(0, input.IndexOf(" ")); } catch (Exception) { command = input; } bool directDownload = false; if (command.ToLower().Contains("download_mp4") || input.Contains("d-mp4")) { int id = input.IndexOf(command) + command.Length; link = input.Substring(id); downloadType = type.MP4; directDownload = true; } else if (command.ToLower().Contains("download_mp3") || command.Contains("d-mp3")) { int id = input.IndexOf(command) + command.Length; link = input.Substring(id); downloadType = type.MP3; directDownload = true; } else if (command.ToLower().Equals("help")) { StreamReader reader = File.OpenText("README.txt"); while (!reader.EndOfStream) { Console.WriteLine(reader.ReadLine()); } reader.Close(); } else if (command.ToLower().Contains("add_mp3")) { int id = input.IndexOf(command) + command.Length; string tmpLink = input.Substring(id); linkInfo tmpInfo; tmpInfo.link = tmpLink; tmpInfo.downloadType = type.MP3; m_Links.Add(tmpInfo); } else if (command.ToLower().Contains("add_mp4")) { int id = input.IndexOf(command) + command.Length; string tmpLink = input.Substring(id); linkInfo tmpInfo; tmpInfo.link = tmpLink; tmpInfo.downloadType = type.MP4; m_Links.Add(tmpInfo); } else if (command.ToLower().Equals("list")) { foreach (var item in m_Links) { IEnumerable <VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(item.link); Console.WriteLine(videoInfos.First().Title); } } else if (command.ToLower().Equals("start")) { DownloadPlaylist(m_Links, downloadDirectory); } else if (command.Contains("startPlaylist")) { List <linkInfo> playlist = new List <linkInfo>(); string playlistFile = input.Substring(input.IndexOf(command) + command.Length + 1); StreamReader tmpFile = File.OpenText(playlistFile); string fileName = playlistFile.Substring(0, playlistFile.Length - 4); while (!tmpFile.EndOfStream) { string line = tmpFile.ReadLine(); linkInfo tmpInfo = new linkInfo(); string tmpType = line.Substring(0, line.IndexOf(" ")); if (tmpType.ToLower() == "mp3") { tmpInfo.downloadType = type.MP3; } else if (tmpType.ToLower() == "mp4") { tmpInfo.downloadType = type.MP4; } int endOfType = line.IndexOf(" "); string tmpLink = line.Substring(endOfType + 1); tmpInfo.link = tmpLink; playlist.Add(tmpInfo); } DownloadPlaylist(playlist, downloadDirectory + "/" + fileName); Console.WriteLine("Finished downloading " + fileName); } else if (command.Equals("downloadChannel")) { int firstSpace = input.IndexOf(" "); int secondSpace = input.IndexOf(" ", firstSpace + 1); string strtype = input.Substring(firstSpace + 1, secondSpace - firstSpace - 1); type tmpType = type.None; if (strtype.ToLower().Equals("mp3")) { tmpType = type.MP3; } else if (strtype.ToLower() == "mp4") { tmpType = type.MP4; } string channelname = input.Substring(secondSpace + 1); try { new Program().downloadChannel(channelname, tmpType).Wait(); } catch (AggregateException e) { foreach (var item in e.InnerExceptions) { Console.WriteLine(item.Message); } } } else if (command.Equals("downloadPlaylist")) { int firstSpace = input.IndexOf(" "); int secondSpace = input.IndexOf(" ", firstSpace + 1); string strtype = input.Substring(firstSpace + 1, secondSpace - firstSpace - 1); type tmpType = type.None; if (strtype.ToLower().Equals("mp3")) { tmpType = type.MP3; } else if (strtype.ToLower() == "mp4") { tmpType = type.MP4; } string playlist = input.Substring(secondSpace + 1); try { new Program().downloadPlaylist(playlist, tmpType).Wait(); } catch (AggregateException e) { foreach (var item in e.InnerExceptions) { Console.WriteLine(item.Message); } } } if (directDownload == true) { linkInfo info = new linkInfo(); info.link = link; info.downloadType = downloadType; Download(info, downloadDirectory); } } }
static void Run() { StreamReader config = File.OpenText("config.cfg"); if (config.EndOfStream) { Console.WriteLine("Failed to open config.cfg"); Console.ReadKey(); return; } while (!config.EndOfStream) { string extractedLine = config.ReadLine(); if (extractedLine.Contains("download_path")) { int startIndex = extractedLine.IndexOf("=") + 2; int endIndex = extractedLine.IndexOf("\"", startIndex); downloadDirectory = extractedLine.Substring(startIndex, endIndex - startIndex); } } config.Close(); List<linkInfo> m_Links = new List<linkInfo>(); youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "AIzaSyDzqeoR5mWrtJJ1Qt1SL_DLRDJvVKStdSo", ApplicationName = new Program().GetType().ToString() }); /* * Main loop */ while (true) { Console.Write("$ "); string input = Console.ReadLine(); string link = ""; type downloadType = type.None; string command; try { command = input.Substring(0, input.IndexOf(" ")); } catch (Exception) { command = input; } bool directDownload = false; if (command.ToLower().Contains("download_mp4") || input.Contains("d-mp4")) { int id = input.IndexOf(command) + command.Length; link = input.Substring(id); downloadType = type.MP4; directDownload = true; } else if (command.ToLower().Contains("download_mp3") || command.Contains("d-mp3")) { int id = input.IndexOf(command) + command.Length; link = input.Substring(id); downloadType = type.MP3; directDownload = true; } else if (command.ToLower().Equals("help")) { StreamReader reader = File.OpenText("README.txt"); while (!reader.EndOfStream) { Console.WriteLine(reader.ReadLine()); } reader.Close(); } else if (command.ToLower().Contains("add_mp3")) { int id = input.IndexOf(command) + command.Length; string tmpLink = input.Substring(id); linkInfo tmpInfo; tmpInfo.link = tmpLink; tmpInfo.downloadType = type.MP3; m_Links.Add(tmpInfo); } else if (command.ToLower().Contains("add_mp4")) { int id = input.IndexOf(command) + command.Length; string tmpLink = input.Substring(id); linkInfo tmpInfo; tmpInfo.link = tmpLink; tmpInfo.downloadType = type.MP4; m_Links.Add(tmpInfo); } else if (command.ToLower().Equals("list")) { foreach (var item in m_Links) { IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(item.link); Console.WriteLine(videoInfos.First().Title); } } else if (command.ToLower().Equals("start")) { DownloadPlaylist(m_Links, downloadDirectory); } else if (command.Contains("startPlaylist")) { List<linkInfo> playlist = new List<linkInfo>(); string playlistFile = input.Substring(input.IndexOf(command) + command.Length + 1); StreamReader tmpFile = File.OpenText(playlistFile); string fileName = playlistFile.Substring(0, playlistFile.Length - 4); while (!tmpFile.EndOfStream) { string line = tmpFile.ReadLine(); linkInfo tmpInfo = new linkInfo(); string tmpType = line.Substring(0, line.IndexOf(" ")); if (tmpType.ToLower() == "mp3") { tmpInfo.downloadType = type.MP3; } else if (tmpType.ToLower() == "mp4") { tmpInfo.downloadType = type.MP4; } int endOfType = line.IndexOf(" "); string tmpLink = line.Substring(endOfType + 1); tmpInfo.link = tmpLink; playlist.Add(tmpInfo); } DownloadPlaylist(playlist, downloadDirectory + "/" + fileName); Console.WriteLine("Finished downloading " + fileName); } else if (command.Equals("downloadChannel")) { int firstSpace = input.IndexOf(" "); int secondSpace = input.IndexOf(" ", firstSpace + 1); string strtype = input.Substring(firstSpace + 1, secondSpace - firstSpace - 1); type tmpType = type.None; if (strtype.ToLower().Equals("mp3")) { tmpType = type.MP3; } else if (strtype.ToLower() == "mp4") { tmpType = type.MP4; } string channelname = input.Substring(secondSpace + 1); try { new Program().downloadChannel(channelname, tmpType).Wait(); } catch (AggregateException e) { foreach (var item in e.InnerExceptions) { Console.WriteLine(item.Message); } } } else if (command.Equals("downloadPlaylist")) { int firstSpace = input.IndexOf(" "); int secondSpace = input.IndexOf(" ", firstSpace + 1); string strtype = input.Substring(firstSpace + 1, secondSpace - firstSpace - 1); type tmpType = type.None; if (strtype.ToLower().Equals("mp3")) { tmpType = type.MP3; } else if (strtype.ToLower() == "mp4") { tmpType = type.MP4; } string playlist = input.Substring(secondSpace + 1); try { new Program().downloadPlaylist(playlist, tmpType).Wait(); } catch (AggregateException e) { foreach (var item in e.InnerExceptions) { Console.WriteLine(item.Message); } } } if (directDownload == true) { linkInfo info = new linkInfo(); info.link = link; info.downloadType = downloadType; Download(info, downloadDirectory); } } }
static void Download(linkInfo info,string dir) { switch (info.downloadType) { case type.MP3: Program.DownloadMP3(info.link, dir); break; case type.MP4: Program.DownloadMP4(info.link, dir); break; case type.None: break; default: break; } }