Esempio n. 1
0
        static async Task Main(string[] args)
        {
            string str1     = "<font color=\\\"#00a1d6\\\">&gt;&gt;Po.6214</font><br />另外已知的是套壳客户端发不了图片,因为就是个套壳网页所以没办法唤醒相册[^o^]ノ";
            var    config   = Configuration.Default;
            var    context  = new BrowsingContext(config);
            var    document = await context.OpenAsync(req => req.Content(str1));

            var visitor = new RichTextBlockVisitor();

            Dfs(document.DocumentElement, 1);
            var documentNode = new HTMLNode((IHtmlHtmlElement)document.DocumentElement);
            var renderer     = documentNode.Accept(visitor);

            renderer.Print();
            Console.Read();

            while (true)
            {
                var str = Console.ReadLine();
                var ans = GetIPAddr(str);
                ans.ForEach(Console.WriteLine);
            }
            GetIPAddr("88881");

            /*
             * var config = new ApiConfig();
             * ForumController f = new ForumController(config);
             * var res = await f.GetForumsAsync();
             * var p = new PostController(config);
             * var posts = await p.GetPostAsync(res[0].Id, 1);
             * var t = new ThreadController(config);
             * var threads = await t.GetThreadsAsync(posts[0].No, 1);
             * Console.ReadLine();
             */
        }
Esempio n. 2
0
        private string f()
        {
            HTMLNode bodyNode = this.a.BodyNode;
            int      A_2      = -1;

            return(this.de() + this.dc() + this.da() + this.db() + "\\viewkind4\\uc1\\pard" + this.da(this.a.RootNode, new FontStyle(HTMLTree.defaultFontName, HTMLTree.defaultFontSize, HTMLTree.defaultColor, Colors.Transparent), ref A_2) + this.dd());
        }
        void IAstVisitor <ParsingContext> .Visit(HTMLNode node, ParsingContext context)
        {
            context.Stack.Push(new Paragraph());
            node.Body.Accept(this, context);
            var c = context.Stack.Pop();

            context.Blocks.Add(c);
        }
        public Render Visit(HTMLNode node)
        {
            recursionLevel += 1;
            var render = new Render(recursionLevel, "html");
            var body   = node.Body.Accept(this);

            render.Children.Add(body);
            recursionLevel -= 1;
            return(render);
        }
Esempio n. 5
0
 public bool replaceChild(int index, HTMLNode node)
 {
     return false;
 }
Esempio n. 6
0
 public bool addChild(int index, HTMLNode node)
 {
     return false;
 }
Esempio n. 7
0
 public bool replaceChild(int index, HTMLNode node)
 {
     throw new NotImplementedException();
 }
Esempio n. 8
0
 void IAstVisitor <ResolveContext> .Visit(HTMLNode node, ResolveContext context)
 {
     context.Parent = node;
     node.Body.Accept(this, context);
 }
Esempio n. 9
0
        public async static Task <string> LoadFromHtml(HTMLNode imgNode, string baseUrl)
        {
            Param  param = imgNode.Param.ByName("src");
            string str   = "";

            if (param == null)
            {
                return(str);
            }
            string url = param.Value.Trim().ToLower();

            if ((url == "#") || url.Equals(string.Empty))
            {
                return("");
            }
            if ((url.StartsWith("http://") || url.StartsWith("ftp://")) || url.StartsWith("file://"))
            {
                url = param.Value.Trim();
            }
            else
            {
                url = baseUrl + param.Value.Trim();
            }
            ImageStyle style = new ImageStyle(url);

            using (Stream stream = await NetHelper.Get(url))
            {
                int          width  = 0;
                int          height = 0;
                RandomStream rs     = new RandomStream(stream);
                BitmapImage  image  = new BitmapImage();
                {
                    image.SetSource(rs);
                    width  = image.PixelWidth;
                    height = image.PixelHeight;
                    Param param2 = imgNode.Param.ByName("width");
                    if (param2 != null)
                    {
                        style.Width = HTMLTree.FontSizeFromHTML(param2.Value.Trim());
                    }
                    Param param3 = imgNode.Param.ByName("height");
                    if (param3 != null)
                    {
                        style.Height = HTMLTree.FontSizeFromHTML(param3.Value.Trim());
                    }
                    if ((style.Width != -1) && (style.Height != -1))
                    {
                        width  = style.Width;
                        height = style.Height;
                    }
                    else if (style.Width != -1)
                    {
                        height = (width * style.Height) / style.Width;
                        width  = style.Width;
                    }
                    else if (style.Height != -1)
                    {
                        width  = (height * style.Width) / style.Height;
                        height = style.Height;
                    }
                }
                StringBuilder builder = new StringBuilder();
                builder.AppendFormat("{{\\pict\\wmetafile8\\picwgoal{0}\\pichgoal{1}\n", width * 20, height * 20);
                byte[] buffer = new byte[40];
                stream.Position = 0L;
                int num3 = 0;
                while ((num3 = stream.Read(buffer, 0, 40)) > 0)
                {
                    for (int i = 0; i < num3; i++)
                    {
                        builder.Append(buffer[i].ToString("x").PadLeft(2, '0'));
                    }
                    builder.Append("\n");
                }
                builder.Append("}");
                return(builder.ToString());
            }
        }
Esempio n. 10
0
        private string da(HTMLNode A_0, FontStyle A_1, ref int A_2)
        {
            if (A_0.TagName.Equals("head"))
            {
                return("");
            }
            string    str       = "";
            FontStyle fontStyle = A_1;
            int       A_2_1     = -1;
            int       index1    = A_0.Css.Css.IndexOf("font-size", CssType.ForAll, "");

            if (index1 == -1)
            {
                int index2 = A_0.Css.Css.IndexOf("size", CssType.ForAll, "");
                if (index2 != -1)
                {
                    string fontsize = A_0.Css.Css[index2].Value.Trim();
                    fontStyle.FontSize = (uint)HTMLTree.FontSizeFromHTML(fontsize);
                    fontStyle.FontSize = (uint)((((int)fontStyle.FontSize - 1) * 2 + 10) * 2);
                }
            }
            else
            {
                string fontsize = A_0.Css.Css[index1].Value.Trim();
                fontStyle.FontSize = (uint)(HTMLTree.FontSizeFromHTML(fontsize) * 2);
            }
            int index3 = A_0.Css.Css.IndexOf("font-family", CssType.ForAll, "");

            if (index3 != -1)
            {
                fontStyle.FontName = A_0.Css.Css[index3].Value.Trim();
            }
            int index4 = A_0.Css.Css.IndexOf("color", CssType.ForAll, "");

            if (index4 != -1)
            {
                string color = A_0.Css.Css[index4].Value.Trim();
                fontStyle.FontColor = HTMLTree.ColorFromHTML(color);
            }
            int index5 = A_0.Css.Css.IndexOf("align", CssType.ForAll, "");

            if (index5 != -1)
            {
                string align = A_0.Css.Css[index5].Value.Trim();
                fontStyle.Align = HTMLTree.AlignFromHtml(align);
            }
            switch (A_0.TagName)
            {
            case "i":
            case "em":
                fontStyle.IsItalic = true;
                break;

            case "b":
            case "strong":
                fontStyle.IsBold = true;
                break;

            case "u":
                fontStyle.IsUnderLine = true;
                break;

            case "center":
                fontStyle.Align = Alignment.Center;
                break;

            case "ul":
                A_2_1 = 0;
                break;

            case "ol":
                A_2_1 = 1;
                break;

            case "sup":
                fontStyle.Raise = RaiseType.Sup;
                str             = str + "{";
                break;

            case "sub":
                fontStyle.Raise = RaiseType.Sub;
                str             = str + "{";
                break;
            }
            switch (A_0.TagName)
            {
            case "br":
                str = str + "\\par";
                break;

            case "li":
                if (A_2 == 0)
                {
                    str = str + "\\par\n" + this.da(fontStyle) + "{\\pntext\\'B7\\tab}" + this.da(A_0.Text);
                    break;
                }
                else if (A_2 > 0)
                {
                    str = str + "\\par\n " + this.da(fontStyle) + "{\\pntext " + A_2.ToString() + "\\tab}" + this.da(A_0.Text);
                    ++A_2;
                    break;
                }
                else
                {
                    break;
                }

            case "font":
                if (!A_0.Text.Trim().Equals(string.Empty))
                {
                    str = str + this.da(fontStyle) + " " + this.da(A_0.Text);
                    break;
                }
                else
                {
                    break;
                }

            case "p":
            case "div":
                str = str + "\\par\n\\pard" + this.da(fontStyle) + " " + this.da(A_0.Text);
                break;

            case "img":
                str = str + RTFImageHelper.LoadFromHtml(A_0, "");
                break;

            default:
                if (A_0.Text != string.Empty)
                {
                    str = str + this.da(fontStyle) + " " + this.da(A_0.Text);
                    break;
                }
                else
                {
                    break;
                }
            }
            for (int index2 = 0; index2 < A_0.Nodes.Count; ++index2)
            {
                str = str + this.da(A_0.Nodes[index2], fontStyle, ref A_2_1);
            }
            switch (A_0.TagName)
            {
            case "sup":
            case "sub":
                str = str + "}";
                break;
            }
            return(str);
        }