4

我需要从多个博客链接生成快照。

我所拥有的是这样的文本列表“报告:Twitter 将在本月发布音乐发现应用程序http://on.mash.to/10L1v49 via @mashable

我想将链接显示为博客的快照,然后是我认为的文本。或者至少我需要把图片附加到博客上。

使用 facebook 调试,http://developers.facebook.com/tools/debug,我得到了这个..

fb:app_id:  122071082108
og:url: http://mashable.com/2013/03/13/twitter-music-app/
og:type:    article
og:title:   Report: Twitter Will Release Music Discovery App This Month
og:image:   
og:description: Twitter is planning to release a standalone music app for iOS   called Twitter Music as soon as the end of this month, according to CNET. CNET reports that Twitter Music will help...
og:site_name:   Mashable
og:updated_time:    1363267654

我从我的 c# 代码中尝试了相同的链接,访问了带有参数“q”的链接作为我想要的链接。我得到了与回复相同的 html,但我无法找到关联的图像,因为不同链接的图像不同。

任何人都可以建议在 mvc 中执行此操作的更好方法吗?

我在控制器中访问 facebook 调试的代码:

    var client = new RestClient
            {
                BaseUrl = "http://developers.facebook.com/tools/debug/og/object"
            };
            var request = new RestRequest
            {
                DateFormat = DataFormat.Xml.ToString(),
                Resource = "Add",
                Method = Method.GET
            };
            request.AddParameter("q", "http://on.mash.to/10L1v49");

            IRestResponse response = client.Execute(request);
            var content = response.Content; // raw content as string
4

1 回答 1

7

我从您的问题中了解到的是,您需要链接预览之类的东西,我们在 Facebook 共享区域上粘贴一些链接时会得到什么。

Facebook 调试方法返回一个 html 页面,其中包含来自给定链接的博客条目的图像。

使用 HtmlAgilityPack 解析从 facebook 调试返回的 html

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(content);
        HtmlNode root = doc.DocumentNode;
        var imageurl = doc.DocumentNode.SelectNodes("//img/@src").LastOrDefault();
        string imagesrc = imageurl.OuterHtml.ToString();
        int start = imagesrc.IndexOf("url=");
        int to = imagesrc.IndexOf("\"", start + "url=".Length);
        string s = imagesrc.Substring(
                       start + "url=".Length,
                       to - start - "url=".Length);
        string a = Uri.UnescapeDataString(s);

和..那里你有你的博客条目的形象。可以修改相同的函数来检索博客条目的标题、描述和更新时间。

于 2013-03-15T12:57:23.237 回答