Пример #1
0
        public ImageRakerDownloadForm(string saveFolder, List<UrlPair> urls,
            FilePathMaker.FileNameMakingMethod fileNameMakingMethod, bool closeOnSucceed, ImageRaker.SaveType saveType)
        {
            InitializeComponent();

            this.saveFolder = saveFolder;
            this.urls = urls;
            this.fileNameMakingMethod = fileNameMakingMethod;
            this.closeOnSucceed = closeOnSucceed;
            //			this.overwrite = overwrite;
            //			this.transparent = transparent;
            this.saveType = saveType;

            messageLabel.Text = "이미지 다운로드 준비 중";
            progressLabel.Text = "0 / 0";
        }
Пример #2
0
        public ImageRakerDownloadForm(string saveFolder, List <UrlPair> urls,
                                      FilePathMaker.FileNameMakingMethod fileNameMakingMethod, bool closeOnSucceed, ImageRaker.SaveType saveType)
        {
            InitializeComponent();

            this.saveFolder           = saveFolder;
            this.urls                 = urls;
            this.fileNameMakingMethod = fileNameMakingMethod;
            this.closeOnSucceed       = closeOnSucceed;
//			this.overwrite = overwrite;
//			this.transparent = transparent;
            this.saveType = saveType;

            messageLabel.Text  = "이미지 다운로드 준비 중";
            progressLabel.Text = "0 / 0";
        }
Пример #3
0
        private void saveButton_Click(object sender, EventArgs e)
        {
            string saveFolder = Config.Instance.GetConfig("SaveFolder");

            /*
             * save by gdi+
             * 모니터 해상도 크기 이상의 이미지는 저장되지 않는다.
             */

            /*
             * Logger.Log("save images by gdi+");
             * Stopwatch sw = new Stopwatch();
             * sw.Start();
             *
             * FilePathMaker filePathMaker = new FilePathMaker(saveFolder);
             *
             * foreach(ListViewItem item in thumbnailListView.CheckedItems)
             * {
             *      ImageRakerThumbnailListViewItem myitem = item.Tag as ImageRakerThumbnailListViewItem;
             *      //string src = myitem.ImageSource;
             *      //string referer = myitem.RefererUrl;
             *
             *      //urls.Add(new UrlPair(src, referer));
             *
             *      using (Bitmap originalBitmap = new Bitmap(myitem.Width, myitem.Height))
             *      {
             *              using (Graphics g = Graphics.FromImage(originalBitmap))
             *              {
             *                      myitem.Render.DrawToDC(g.GetHdc());
             *              }
             *
             *              Logger.DLog("    save to file: {0} * {1}, url: {2}", myitem.Width, myitem.Height, myitem.ImageSource);
             *
             *              string filepath = filePathMaker.MakeFilePath(myitem.ImageSource, fileNameMakingMethod);
             *
             *              originalBitmap.Save(filepath);
             *      }
             * }
             *
             * sw.Stop();
             * Logger.Log("save images by gdi+ DONE - elapsed: {0}", sw.ElapsedMilliseconds);
             *
             * return;
             */

            // 자동선택됐지만 선택 해제된 아이템들을 블럭. 다시 선택된 애들은 블럭 리스트에서 삭제.
            // 최초 저장시만 사용한다. 두번째 저장부터는 실패한 것일 수 있음.
            if (Config.Instance.GetConfigBool("UseBlockUrls") && saveCount == 0)
            {
                Dictionary <string, long> blockUrls = Config.Instance.GetBlockUrls();
                bool blockUrlsChanged = false;

                foreach (ImageRakerThumbnailListViewItem autoitem in originallyAutoSelectedImageItems)
                {
                    string autourl = autoitem.ImageSource;

                    foreach (ListViewItem item in thumbnailListView.Items)
                    {
                        ImageRakerThumbnailListViewItem myitem = item.Tag as ImageRakerThumbnailListViewItem;

                        if (myitem.ImageSource == autourl)
                        {
                            if (item.Checked == false)
                            {
                                if (!blockUrls.ContainsKey(autourl))
                                {
                                    Logger.DLog("auto selected but unchecked, not added in blocks yet: {0}, ADD TO BLOCK URLS", autourl);

                                    Config.Instance.AddBlockUrl(autourl);
                                    blockUrlsChanged = true;
                                }
                            }
                            else
                            {
                                if (blockUrls.ContainsKey(autourl))
                                {
                                    Logger.DLog("originally auto selected, blocked, but checked again: {0}, REMOVE FROM BLOCK URLS", autourl);

                                    Config.Instance.RemoveBlockUrl(autourl);
                                    blockUrlsChanged = true;
                                }
                            }
                        }
                    }
                }

                if (blockUrlsChanged)
                {
                    Config.Instance.SaveBlockUrls();
                }
            }

            ExceptionTester.Instance.Throw("random_save1");

            // extract urls to save
            List <UrlPair> urls = new List <UrlPair>();

            foreach (ListViewItem item in thumbnailListView.CheckedItems)
            {
                ImageRakerThumbnailListViewItem myitem = item.Tag as ImageRakerThumbnailListViewItem;
                string src     = myitem.ImageSource;
                string referer = myitem.RefererUrl;

                urls.Add(new UrlPair(src, referer));
            }

            // determine selected file name making method
            //FilePathMaker.FileNameMakingMethod fileNameMakingMethod = FilePathMaker.FileNameMakingMethod.FullUrl;
            FilePathMaker.FileNameMakingMethod fileNameMakingMethod = FilePathMaker.GetFileNameMakingMethodFromConfig();
            bool exitOnComplete = Config.Instance.GetConfigBool("ExitOnComplete");

//			bool overwrite = Config.Instance.GetConfigBool("Overwrite");

            UsageReporter.Instance.SaveCountInSession = saveCount++;

            ExceptionTester.Instance.Throw("random_save2");

            ImageRaker.SaveType saveType = ImageRaker.SaveType.ByForm;

            if (instantMode)
            {
                saveType = ImageRaker.SaveType.ByInstant;
            }

            ImageRakerDownloadForm form = new ImageRakerDownloadForm(saveFolder, urls,
                                                                     fileNameMakingMethod, exitOnComplete, saveType);

            DialogResult result = form.ShowDialog();

            ExceptionTester.Instance.Throw("random_save3");

            if (result != DialogResult.Abort)
            {
                bool failed = false;

                // 실패한 이미지 체크 기능
                if (Config.Instance.GetConfigBool("MarkFailed") == true)
                {
                    // reset checked first
                    deselectAllButton.PerformClick();

                    // check on failed urls
                    Logger.Log("check on failed urls...");

                    foreach (UrlPair url in urls)
                    {
                        if (url.Result == UrlPair.SaveResult.Failed ||
                            url.Result == UrlPair.SaveResult.Duplicated)
                        {
                            foreach (ListViewItem item in thumbnailListView.Items)
                            {
                                ImageRakerThumbnailListViewItem myitem = item.Tag as ImageRakerThumbnailListViewItem;

                                if (myitem.ImageSource == url.Url)
                                {
                                    failed       = true;
                                    item.Checked = true;
                                }
                            }
                        }
                    }
                }

                // exit when exit on complete enabled.
                if (!failed && (exitOnComplete && (result == DialogResult.OK || result == DialogResult.Cancel)))
                {
                    // exit the program
                    this.Close();
                }
            }
            else
            {
                Logger.Warn("cannot start downloader! reason: {0}", form.ExceptionMessage);
                Message.Warn("이미지 레이커 다운로더를 실행할 수 없습니다.\n" + form.ExceptionMessage);

                //MessageBox.Show("이미지 레이커 다운로더를 실행할 수 없습니다.\n" + form.ExceptionMessage,
                //    About.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #4
0
        public void SendUsageReport(string pageUrl, int total, int failed, int elapsed, ImageRaker.SaveType saveType)
        {
            Dictionary <string, string> post = new Dictionary <string, string>();

            FillPostBasics(post);

            post.Add("PageUrl", pageUrl);
            post.Add("Total", total.ToString());
            post.Add("Failed", failed.ToString());
            post.Add("Elapsed", elapsed.ToString());
            post.Add("SaveType", ((int)saveType).ToString());

            // from previous value
            post.Add("SaveCountInSession", saveCountInSession.ToString());
            post.Add("FormLoadTime", formLoadTime.ToString());

            Report(post, UsageReportUrl, Config.Instance.GetConfigBool("ImproveProgram"));
        }