Esempio n. 1
0
        public static async Task<ImagePack> GetImage(string uri)
        {
            var result = new ImagePack();

            var req = (HttpWebRequest) WebRequest.Create(uri);

            var html = "";

            var encoder = Encoding.GetEncoding(@"UTF-8");
            using (var res = await req.GetResponseAsync())
            using (var resStream = res.GetResponseStream())
                if (resStream != null)
                {
                    using (var sr = new StreamReader(resStream, encoder))
                    {
                        html = sr.ReadToEnd();
                    }
                }

            var doc = new HAP.HtmlDocument
            {
                OptionCheckSyntax = false,
                OptionFixNestedTags = true
            };

            doc.LoadHtml(html);

            var divStyle = doc.DocumentNode.SelectSingleNode(@"//div[@id='_image']")?.GetAttributeValue(@"style", null);
            if (!string.IsNullOrEmpty(divStyle))
            {
                var regex = new Regex(@"background:url\((.*)\).*");
                if (regex.IsMatch(divStyle))
                {
                    var imageUri = regex.Matches(divStyle)[0].Groups[1].Value;
                    result.ImageUri = imageUri;

                    req = (HttpWebRequest)WebRequest.Create(imageUri);
                    using (var res = await req.GetResponseAsync())
                    using (var resStream = res.GetResponseStream())
                    using (var ms = new MemoryStream())
                    {
                        resStream?.CopyTo(ms);
                        result.ImageData = ms.ToArray();
                    }
                }
            }

            return result;
        }
Esempio n. 2
0
        public static async Task<ImagePack> GetImage(string uri)
        {
            var result = new ImagePack();

            var req = (HttpWebRequest) WebRequest.Create(uri);

            var html = "";

            var encoder = Encoding.GetEncoding(@"UTF-8");
            using (var res = await req.GetResponseAsync())
            using (var resStream = res.GetResponseStream())
                if (resStream != null)
                {
                    using (var sr = new StreamReader(resStream, encoder))
                    {
                        html = sr.ReadToEnd();
                    }
                }

            var doc = new HAP.HtmlDocument
            {
                OptionCheckSyntax = false,
                OptionFixNestedTags = true
            };

            doc.LoadHtml(html);

            var imageUri = doc.DocumentNode.SelectSingleNode(@"//meta[@property='og:image']")?
                .GetAttributeValue(@"content", string.Empty)?
                .Replace(@"/sp/", @"/");
            if (!string.IsNullOrEmpty(imageUri))
            {
                result.ImageUri = imageUri;

                req = (HttpWebRequest) WebRequest.Create(imageUri);
                using (var res = await req.GetResponseAsync())
                using (var resStream = res.GetResponseStream())
                using (var ms = new MemoryStream())
                {
                    resStream?.CopyTo(ms);
                    result.ImageData = ms.ToArray();
                }
            }

            return result;
        }
Esempio n. 3
0
        public static async Task<ImagePack> GetImage(string uri)
        {
            var result = new ImagePack();

            if (_cookie == null)
            {
                var cookie = CookieHelper.LoadCookie(Service);
                if (cookie != null)
                {
                    _cookie = cookie;
                }
            }

            var getHtml = new Func<string, Task<string>>(async u =>
            {
                var r = string.Empty;

                var req = (HttpWebRequest) WebRequest.Create(u);
                req.CookieContainer = _cookie;

                var encoder = Encoding.GetEncoding(@"UTF-8");
                using (var res = await req.GetResponseAsync())
                using (var resStream = res.GetResponseStream())
                {
                    if (resStream != null)
                    {
                        using (var sr = new StreamReader(resStream, encoder))
                        {
                            r = sr.ReadToEnd();
                        }
                    }
                }

                return r;
            });

            var html = await getHtml(uri);
            if (!html.Contains(@"ログアウト"))
            {
                await Login();
                html = await getHtml(uri);
            }
            else
            {
                CookieHelper.SaveCookie(_cookie, Service);
            }

            var doc = new HAP.HtmlDocument
            {
                OptionCheckSyntax = false,
                OptionFixNestedTags = true
            };

            doc.LoadHtml(html);

            var imageUri =
                doc.DocumentNode.SelectSingleNode(@"//img[@class='original-image']")?
                    .GetAttributeValue(@"data-src", null) ??
                doc.DocumentNode.SelectSingleNode(@"//meta[@property='og:image']")?
                    .GetAttributeValue(@"content", string.Empty)?
                    .Replace(@"150x150", @"1200x1200");
            if (!string.IsNullOrEmpty(imageUri))
            {
                result.ImageUri = imageUri;

                var req = (HttpWebRequest) WebRequest.Create(imageUri);
                req.CookieContainer = _cookie;
                req.Referer = uri;
                using (var res = await req.GetResponseAsync())
                using (var resStream = res.GetResponseStream())
                using (var ms = new MemoryStream())
                {
                    resStream?.CopyTo(ms);
                    result.ImageData = ms.ToArray();
                }
            }

            return result;
        }
Esempio n. 4
0
        public static async Task<ImagePack> GetImage(string uri)
        {
            var result = new ImagePack();

            if (_cookie == null && Config.IsUseNicoSeigaWebScraping)
            {
                var cookie = CookieHelper.LoadCookie(Service);
                if (cookie != null)
                {
                    _cookie = cookie;
                }
            }

            var getHtml = new Func<string, Task<string>>(async u =>
            {
                var r = string.Empty;

                var req = (HttpWebRequest) WebRequest.Create(u);
                req.CookieContainer = _cookie;

                var encoder = Encoding.GetEncoding(@"UTF-8");
                using (var res = await req.GetResponseAsync())
                using (var resStream = res.GetResponseStream())
                {
                    if (resStream != null)
                    {
                        using (var sr = new StreamReader(resStream, encoder))
                        {
                            r = sr.ReadToEnd();
                        }
                    }
                }

                return r;
            });

            var html = await getHtml(uri);
            if (Config.IsUseNicoSeigaWebScraping && !html.Contains(@"ログアウト"))
            {
                await Login();
                html = await getHtml(uri);
            }
            if (Config.IsUseNicoSeigaWebScraping)
            {
                CookieHelper.SaveCookie(_cookie, Service);
            }

            var doc = new HAP.HtmlDocument
            {
                OptionCheckSyntax = false,
                OptionFixNestedTags = true
            };

            doc.LoadHtml(html);

            string imageUri;
            var fallbackUri = doc.DocumentNode.SelectSingleNode(@"//meta[@property='og:image']")?
                .GetAttributeValue(@"content", string.Empty);
            if (Config.IsUseNicoSeigaWebScraping)
            {
                var nextUri = doc.DocumentNode.SelectSingleNode(@"//a[@id='illust_link']")?
                    .GetAttributeValue(@"href", null);
                if (!string.IsNullOrEmpty(nextUri))
                {
                    html = await getHtml(BaseUri + nextUri);
                    doc.LoadHtml(html);

                    var origUri = doc.DocumentNode.SelectSingleNode(@"//div[@class='illust_view_big']")?
                        .ChildNodes?.Where(x => x.Name == @"img").ElementAt(0)?
                        .GetAttributeValue(@"src", string.Empty);
                    imageUri = !string.IsNullOrEmpty(origUri) ? LohasUri + origUri : fallbackUri;
                }
                else
                {
                    imageUri = fallbackUri;
                }
            }
            else
            {
                imageUri = fallbackUri;
            }

            if (!string.IsNullOrEmpty(imageUri))
            {
                result.ImageUri = imageUri;

                var req = (HttpWebRequest) WebRequest.Create(imageUri);
                using (var res = await req.GetResponseAsync())
                using (var resStream = res.GetResponseStream())
                using (var ms = new MemoryStream())
                {
                    resStream?.CopyTo(ms);
                    result.ImageData = ms.ToArray();
                }
            }

            CookieHelper.SaveCookie(_cookie, Service);

            return result;
        }