2013-03-14 116 views
4

我需要從多個博客鏈接生成快照。使用mvc創建博客條目的快照/縮略圖

我有的是這樣的 文本列表「報告:Twitter將發佈音樂搜索應用程序本月http://on.mash.to/10L1v49通過@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 

回答

7

我從你的問題理解什麼是你需要的東西像一個鏈接就是我們得到粘貼到Facebook分享領域的一些鏈接的預覽。

Facebook的調試方法返回一個HTML頁面,其中包含您的博客條目的圖像從給定的鏈接。

使用HtmlAgilityPack解析您的HTML從Facebook調試

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); 

返回and..there你有你的博客條目的圖像。同樣的功能可以修改,以撤銷標題,描述和博客條目的更新時間。

+1

謝謝..它的工作;) – Rifaj 2013-03-15 13:17:36