コード例 #1
0
        public void Start(string host, string url, string novelName, string maxPage, string updateMode)
        {
            try
            {
                IsRunning = true;
                StartTime = DateTime.Now;

                LogFile = DateTime.Now.ToString("yyyyMMdd_HHmmssfff") + ".txt";

                novelName = FileDownloadUtil.GetInvalidPath(novelName);

                SaveTo = string.Format("{0}/Downloads", AppDomain.CurrentDomain.BaseDirectory);

                if (string.IsNullOrEmpty(novelName))
                {
                    mLogSaveToFileUrl = "Downloads/" + LogFile;
                }
                else
                {
                    mLogSaveToFileUrl = "Downloads/" + novelName + "/" + LogFile;
                }

                mSaveToDirectory = SaveTo + System.IO.Path.DirectorySeparatorChar + novelName;

                SetLog(mSaveToDirectory);

                Url  = url;
                Host = host;

                ProgressArgs arg = new ProgressArgs();
                arg.Progress = ProgressEnum.Progressing;
                FireOnProgressChangedEvent(arg);

                if (string.IsNullOrEmpty(novelName))
                {
                    Logger.Instance.Error("Novel Name can't be empty");

                    EndTime      = DateTime.Now;
                    arg.Progress = ProgressEnum.FinishFailed;
                    FireOnProgressChangedEvent(arg);

                    return;
                }


                NovelName = novelName;

                if (!int.TryParse(maxPage, out MaxPages))
                {
                    MaxPages = 1000;
                    Logger.Instance.Error("Use Default Max Pages 1000");
                }

                UpdateMode = !updateMode.Equals("YES", StringComparison.OrdinalIgnoreCase);

                if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                    Host.TrimStart().TrimEnd().Equals("BIQUGE.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("BIQUGE.CO", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeCODownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("DAYANWENXUE", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("DAYANWENXUE.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new DayanwenxueDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("XIAOSHUOM", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("XIAOSHUOM.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new XiaoshuomDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("SHUKEJU", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("SHUKEJU.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new ShukejuDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("WENXUELOU", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("WENXUELOU.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new WenxuelouDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("BIQUGE.CC", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeCCDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else
                {
                    Logger.Instance.Error("Can't find plug-in for this host");

                    EndTime      = DateTime.Now;
                    arg.Progress = ProgressEnum.FinishFailed;
                    FireOnProgressChangedEvent(arg);

                    return;
                }

                if (download != null)
                {
                    download.CopyFiles();

                    download.OnProgressChanged += new ProgressChangeDelegate(download_OnProgressChanged);

                    thread = new Thread(new ThreadStart(download.ProcessAllOneByOne));
                    thread.Start();
                }
            }
            catch (Exception ex)
            {
                Logger.Instance.Error(ex.ToString());
                ProgressArgs arg = new ProgressArgs();
                arg.Progress = ProgressEnum.FinishFailed;
                FireOnProgressChangedEvent(arg);
            }
            finally
            {
                IsRunning = false;
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: hellocome/NovelDownload
        static void Main(string[] args)
        {
            try
            {
                ConsoleLogger.Instance.Info("Init Console Log");
                Logger.Instance.Info("Init Log");
                Logger.Instance.Info("Start Processing");

                if (ParseArgs(args))
                {
                    Logger.Instance.Info("************************  Parameters  ****************************");
                    Logger.Instance.Info(string.Format("Host: {0}", Host));
                    Logger.Instance.Info(string.Format("Url: {0}", Url));
                    Logger.Instance.Info(string.Format("SaveTo: {0}", SaveTo));
                    Logger.Instance.Info(string.Format("NovelName: {0}", NovelName));
                    Logger.Instance.Info(string.Format("MaxPages: {0}", MaxPages));
                    Logger.Instance.Info(string.Format("UpdateMode: {0}", UpdateMode));
                    Logger.Instance.Info("******************************************************************");

                    string outNovelBaseDir       = string.Empty;
                    IDownloadImagesText download = null;

                    if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                        Host.TrimStart().TrimEnd().Equals("BIQUGE.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new BiqugeDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("BIQUGE.CO", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new BiqugeCODownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("DAYANWENXUE", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("DAYANWENXUE.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new DayanwenxueDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("XIAOSHUOM", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("XIAOSHUOM.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new XiaoshuomDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("SHUKEJU", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("SHUKEJU.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new ShukejuDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("WENXUELOU", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("WENXUELOU.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new WenxuelouDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("BIQUGE.CC", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new BiqugeCCDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("1KANSHU", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("1KANSHU.COM", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new YaokanShuDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }
                    else if (Host.TrimStart().TrimEnd().Equals("AOYECC", StringComparison.OrdinalIgnoreCase) ||
                             Host.TrimStart().TrimEnd().Equals("AOYE.CC", StringComparison.OrdinalIgnoreCase))
                    {
                        download = new AoyeCCDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                    }



                    if (download != null)
                    {
                        if (StartFromIndex > 0)
                        {
                            Logger.Instance.Info("Start From Index: " + StartFromIndex);
                            download.Argument.StartFromIndex = StartFromIndex;
                        }

                        string argumentsLine = string.Empty;
                        foreach (string argument in args)
                        {
                            if (argument.Equals("s", StringComparison.OrdinalIgnoreCase))
                            {
                                argumentsLine += argument + " ";
                            }
                        }

                        if (!string.IsNullOrEmpty(argumentsLine) && !selfExec)
                        {
                            download.SaveLastWorkingArguments(argumentsLine);
                        }

                        if (!selfExec)
                        {
                            download.CopyFiles();
                            download.SaveToConfig();
                        }

                        download.ProcessAllOneByOne();

                        Logger.Instance.Info("Finish Processing");
                        Console.Read();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
コード例 #3
0
        public void Start(string host, string url, string novelName, string maxPage, string updateMode, string saveTo)
        {
            try
            {
                IsRunning = true;
                StartTime = DateTime.Now;

                Url  = url;
                Host = host;

                ProgressArgs arg = new ProgressArgs();
                arg.Progress = ProgressEnum.Progressing;
                FireOnProgressChangedEvent(arg);

                if (string.IsNullOrEmpty(novelName))
                {
                    Logger.Instance.Error("Novel Name can't be empty");

                    EndTime      = DateTime.Now;
                    arg.Progress = ProgressEnum.FinishFailed;
                    FireOnProgressChangedEvent(arg);

                    return;
                }

                SaveTo    = saveTo;
                NovelName = novelName;

                if (string.IsNullOrEmpty(SaveTo))
                {
                    SaveTo = string.Format("{0}\\DOWNLOAD", AppDomain.CurrentDomain.BaseDirectory);
                }

                if (!int.TryParse(maxPage, out MaxPages))
                {
                    MaxPages = 1000;
                    Logger.Instance.Error("Use Default Max Pages 1000");
                }

                UpdateMode = !updateMode.Equals("YES", StringComparison.OrdinalIgnoreCase);


                if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                    Host.TrimStart().TrimEnd().Equals("BIQUGE.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("BIQUGE.CO", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeCODownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("DAYANWENXUE", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("DAYANWENXUE.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new DayanwenxueDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("XIAOSHUOM", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("XIAOSHUOM.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new XiaoshuomDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("SHUKEJU", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("SHUKEJU.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new ShukejuDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("WENXUELOU", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("WENXUELOU.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new WenxuelouDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("BIQUGE", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("BIQUGE.CC", StringComparison.OrdinalIgnoreCase))
                {
                    download = new BiqugeCCDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("1KANSHU", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("1KANSHU.COM", StringComparison.OrdinalIgnoreCase))
                {
                    download = new YaokanShuDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else if (Host.TrimStart().TrimEnd().Equals("AOYECC", StringComparison.OrdinalIgnoreCase) ||
                         Host.TrimStart().TrimEnd().Equals("AOYE.CC", StringComparison.OrdinalIgnoreCase))
                {
                    download = new AoyeCCDownloadImagesText(Url, SaveTo, NovelName, UpdateMode, MaxPages);
                }
                else
                {
                    Logger.Instance.Error("Can't find plug-in for this host");

                    EndTime      = DateTime.Now;
                    arg.Progress = ProgressEnum.FinishFailed;
                    FireOnProgressChangedEvent(arg);

                    return;
                }


                if (download != null)
                {
                    download.CopyFiles();
                    download.SaveToConfig();

                    string arguments = BuildArguments(host, url, novelName, maxPage, updateMode, saveTo);

                    download.SaveLastWorkingArguments(arguments);

                    download.OnProgressChanged += new ProgressChangeDelegate(download_OnProgressChanged);

                    thread = new Thread(new ThreadStart(download.ProcessAllOneByOne));
                    thread.Start();
                }
            }
            catch (Exception ex)
            {
                Logger.Instance.Error(ex.ToString());
                ProgressArgs arg = new ProgressArgs();
                arg.Progress = ProgressEnum.FinishFailed;
                FireOnProgressChangedEvent(arg);
            }
        }