Exemple #1
0
        private void bSearchStart_Click(object sender, EventArgs e)
        {
            asc.Add(tSearchTerm.Text);

            flThumbnail.Controls.Clear();

            string url = string.Format("http://gelbooru.com/index.php?page=dapi&s=post&q=index&limit=25&tags={0}", tSearchTerm.Text);
            XDocument xml = XDocument.Load(url);

            IEnumerable<XElement> result =
                from item in xml.Descendants("post")
                select item;

            foreach (var sResult in result)
            {
                // 야한건 안된다고 생각해요! >_<
                if (Properties.Settings.Default.MatureSensing && sResult.Attribute("rating").Value != "s") { }
                else
                {
                    Thumbnail item = new Thumbnail(this.flThumbnail);

                    item.ThumbURL = sResult.Attribute("preview_url").Value;
                    item.Tags = sResult.Attribute("tags").Value;
                    item.Id = sResult.Attribute("id").Value;
                    item.ThumbClick += ShowImage;

                    flThumbnail.Controls.Add(item);
                }
            }
        }
Exemple #2
0
        public void FindImages(string keyword, int target_page)
        {
            tSearchTerm.Text = keyword;
            _asc.Add(tSearchTerm.Text);
            flThumbnail.Controls.Clear();

            string url = string.Format(
                "http://gelbooru.com/index.php?page=dapi&s=post&q=index&limit={0}&tags={1}&pid={2}",
                Properties.Settings.Default.PreviewCount, keyword, target_page - 1);
            XDocument xml = XDocument.Load(url);

            IEnumerable<XElement> page_count = from item in xml.Descendants("posts") select item;
            foreach (var sResult in page_count)
                _last_page = Int32.Parse(sResult.Attribute("count").Value) / Decimal.ToInt32(Properties.Settings.Default.PreviewCount);

            IEnumerable<XElement> result = from item in xml.Descendants("post") select item;
            foreach (var sResult in result)
            {
                bool isSkip = false;

                #region Tag Filtering
                // 태그 필터링을 위한 n^2... 으아니!
                if (Properties.Settings.Default.TagFiltering)
                {
                    string[] tagset = sResult.Attribute("tags").Value.Split(' ');
                    foreach (string s in tagset)
                        foreach (string tag in Properties.Settings.Default.FilterSource)
                            if (s == tag) isSkip = true;
                }
                #endregion
                #region Rating Check
                // 야한건 안된다고 생각해요! >_<
                if ((Properties.Settings.Default.MatureSensing && sResult.Attribute("rating").Value != "s") && !Properties.Settings.Default.OnlyMature)
                    isSkip = true;

                // Hidden Function :P
                else if (Properties.Settings.Default.OnlyMature && sResult.Attribute("rating").Value == "s")
                    isSkip = true;

                // 최저 해상도 제한 옵션이 걸려 있다면 걸고 넘어지기
                else if (Properties.Settings.Default.MinimumImageSize && (Int32.Parse(sResult.Attribute("width").Value) < Properties.Settings.Default.MinWidth || Int32.Parse(sResult.Attribute("height").Value) < Properties.Settings.Default.MinHeight))
                    isSkip = true;
                #endregion

                // 위의 조건들에서 걸리면 스킵 ㄳ
                if(isSkip) continue;

                Thumbnail item = new Thumbnail(this.flThumbnail);

                item.ThumbURL = sResult.Attribute("preview_url").Value;
                item.Tags = sResult.Attribute("tags").Value;
                item.Id = sResult.Attribute("id").Value;
                item.ThumbClick += ShowImage;

                flThumbnail.Controls.Add(item);

            }

            Page = target_page;
            lPage.Text = string.Format("{0} / {1}", _page, _last_page);

            GC.Collect();
        }