コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: jonathansty/YtDownloader
        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);
                }

            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: jonathansty/YtDownloader
 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;
     }
 }