Exemple #1
0
        /// <summary>
        /// do in a separate thread
        /// 下载缩略图线程
        /// </summary>
        /// <param name="page"></param>
        /// <param name="count"></param>
        /// <param name="word"></param>
        public void PreFetchPage(int page, int count, string word, ImageSite site)
        {
            (new Thread(new ThreadStart(() =>
            {
                try
                {
                    preFetchedPage = site.GetPageString(page, count, word, proxy);
                    prePage = page;
                    preCount = count;
                    preWord = word;
                    preSite = site;
                    List <Img> imgs = site.GetImages(preFetchedPage, proxy);

                    //获得所有图片列表后反馈得到的数量
                    PreListLoaded(imgs.Count, null);
                    if (imgs.Count < 1)
                    {
                        return;
                    }

                    SessionClient sweb = new SessionClient();
                    SessionHeadersCollection shc = new SessionHeadersCollection();
                    shc.Accept = null;
                    shc.ContentType = SessionHeadersValue.ContentTypeAuto;
                    shc.Add("Accept-Ranges", "bytes");
                    shc.Referer = site.Referer;

                    imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes,
                                          MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false);

                    //预加载缩略图
                    foreach (HttpWebRequest req1 in imgReqs)
                    {
                        if (req1 != null)
                        {
                            req1.Abort();
                        }
                    }
                    preFetchedImg.Clear();
                    imgReqs.Clear();

                    //prefetch one by one
                    int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count;
                    for (int i = 0; i < cacheCount; i++)
                    {
                        WebResponse res = sweb.GetWebResponse(imgs[i].PreviewUrl, proxy, 9000, shc);
                        System.IO.Stream str = res.GetResponseStream();

                        if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl))
                        {
                            preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str));
                        }
                    }
                }
                catch
                {
                    //Console.WriteLine("useless");
                }
            }))).Start();
        }
Exemple #2
0
        /// <summary>
        /// do in a separate thread
        /// 下载缩略图线程
        /// </summary>
        /// <param name="page"></param>
        /// <param name="count"></param>
        /// <param name="word"></param>
        public void PreFetchPage(int page, int count, string word, ImageSite site)
        {
            (new Thread(new ThreadStart(() =>
            {
                try
                {
                    preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy);
                    prePage = page;
                    preCount = count;
                    preWord = word;
                    preSite = site;
                    List <Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy);

                    //获得所有图片列表后反馈得到的数量
                    PreListLoaded(imgs.Count, null);
                    if (imgs.Count < 1)
                    {
                        return;
                    }

                    imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes,
                                          MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false);

                    //预加载缩略图
                    foreach (HttpWebRequest req1 in imgReqs)
                    {
                        if (req1 != null)
                        {
                            req1.Abort();
                        }
                    }
                    preFetchedImg.Clear();
                    imgReqs.Clear();

                    //prefetch one by one
                    int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count;
                    for (int i = 0; i < cacheCount; i++)
                    {
                        HttpWebRequest req = WebRequest.Create(imgs[i].PreviewUrl) as HttpWebRequest;
                        imgReqs.Add(req);
                        req.Proxy = MainWindow.WebProxy;

                        req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36";
                        req.Referer = site.Referer;

                        WebResponse res = req.GetResponse();
                        System.IO.Stream str = res.GetResponseStream();

                        if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl))
                        {
                            preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str));
                        }
                    }
                }
                catch
                {
                    //Console.WriteLine("useless");
                }
            }))).Start();
        }
Exemple #3
0
        /// <summary>
        /// do in a separate thread
        /// </summary>
        /// <param name="page"></param>
        /// <param name="count"></param>
        /// <param name="word"></param>
        public void PreFetchPage(int page, int count, string word, ImageSite site)
        {
            (new Thread(new ThreadStart(() =>
            {
                try
                {
                    //List<Img> imgs = site.GetImages(page, count, word, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, MainWindow.WebProxy, true);
                    preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy);
                    prePage = page;
                    preCount = count;
                    preWord = word;
                    preSite = site;
                    List <Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy);
                    imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false);

                    //预加载缩略图
                    foreach (System.Net.HttpWebRequest req1 in imgReqs)
                    {
                        if (req1 != null)
                        {
                            req1.Abort();
                        }
                    }
                    preFetchedImg.Clear();
                    imgReqs.Clear();

                    //prefetch one by one
                    int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count;
                    for (int i = 0; i < cacheCount; i++)
                    {
                        System.Net.HttpWebRequest req = System.Net.WebRequest.Create(imgs[i].PreviewUrl) as System.Net.HttpWebRequest;
                        imgReqs.Add(req);
                        req.Proxy = MainWindow.WebProxy;

                        req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
                        req.Referer = site.Referer;

                        System.Net.WebResponse res = req.GetResponse();
                        System.IO.Stream str = res.GetResponseStream();

                        if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl))
                        {
                            preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str));
                        }
                    }
                }
                catch
                {
                    //Console.WriteLine("useless");
                }
            }))).Start();
        }
Exemple #4
0
        /// <summary>
        /// do in a separate thread
        /// </summary>
        /// <param name="page"></param>
        /// <param name="count"></param>
        /// <param name="word"></param>
        public void PreFetchPage(int page, int count, string word, ImageSite site)
        {
            (new Thread(new ThreadStart(() =>
            {
                try
                {
                    //List<Img> imgs = site.GetImages(page, count, word, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, MainWindow.WebProxy, true);
                    preFetchedPage = site.GetPageString(page, count, word, MainWindow.WebProxy);
                    prePage = page;
                    preCount = count;
                    preWord = word;
                    preSite = site;
                    List<Img> imgs = site.GetImages(preFetchedPage, MainWindow.WebProxy);
                    imgs = site.FilterImg(imgs, MainWindow.MainW.MaskInt, MainWindow.MainW.MaskRes, MainWindow.MainW.LastViewed, MainWindow.MainW.MaskViewed, true, false);

                    //预加载缩略图
                    foreach (System.Net.HttpWebRequest req1 in imgReqs)
                    {
                        if (req1 != null) req1.Abort();
                    }
                    preFetchedImg.Clear();
                    imgReqs.Clear();

                    //prefetch one by one
                    int cacheCount = CachedImgCount < imgs.Count ? CachedImgCount : imgs.Count;
                    for (int i = 0; i < cacheCount; i++)
                    {
                        System.Net.HttpWebRequest req = System.Net.WebRequest.Create(imgs[i].PreviewUrl) as System.Net.HttpWebRequest;
                        imgReqs.Add(req);
                        req.Proxy = MainWindow.WebProxy;

                        req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
                        req.Referer = site.Referer;

                        System.Net.WebResponse res = req.GetResponse();
                        System.IO.Stream str = res.GetResponseStream();

                        if (!preFetchedImg.ContainsKey(imgs[i].PreviewUrl))
                        {
                            preFetchedImg.Add(imgs[i].PreviewUrl, MainWindow.MainW.CreateImageSrc(str));
                        }
                    }
                }
                catch
                {
                    //Console.WriteLine("useless");
                }
            }))).Start();
        }