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 に答える