{"id":810,"date":"2010-05-04T01:54:20","date_gmt":"2010-05-03T16:54:20","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/archives\/810"},"modified":"2010-05-04T02:11:40","modified_gmt":"2010-05-03T17:11:40","slug":"%e6%8a%95%e7%a8%bf%e5%b0%82%e7%94%a8twitter%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%82%92%e4%bd%9c%e3%82%8b2","status":"publish","type":"post","link":"https:\/\/www.moonmile.net\/blog\/archives\/810","title":{"rendered":"\u6295\u7a3f\u5c02\u7528Twitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f5c\u308b(2)"},"content":{"rendered":"<p>\u524d\u56de\u306e\u53cd\u7701\u3092\u8e0f\u307e\u3048\u3066\u3001bit.ly \u306f\u771f\u9762\u76ee\u306b\u30c6\u30b9\u30c8\u3057\u3064\u3064\u3084\u308b\u3002\u30d7\u30ed\u30b0\u30e9\u30de\u6839\u6027\u3068\u3044\u3046\u3068\u3053\u308d\u3002<\/p>\n<p>\u3055\u3066\u3001bit.ly \u306e API \u3092\u4f7f\u3048\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u306f\u3044\u305f\u3082\u306e\u306e\u3001<\/p>\n<p>API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u898b\u308b\u306e\u3082\u3057\u3093\u3069\u3044\u3057<br \/>\n<a title=\"http:\/\/code.google.com\/p\/bitly-api\/\" href=\"http:\/\/code.google.com\/p\/bitly-api\/\">http:\/\/code.google.com\/p\/bitly-api\/<\/a><\/p>\n<p>\u305d\u3093\u306a\u8a33\u3067\u3001\u691c\u7d22\u3057\u3066\u63a2\u3059\u3068\u3001<\/p>\n<p>bit.ly (\u77ed\u7e2eURL) API\u547c\u3073\u51fa\u3057 (\u305d\u306e1)<br \/>\n<a title=\"http:\/\/d.hatena.ne.jp\/m-kawato\/20090603\/1244041369\" href=\"http:\/\/d.hatena.ne.jp\/m-kawato\/20090603\/1244041369\">http:\/\/d.hatena.ne.jp\/m-kawato\/20090603\/1244041369<\/a><\/p>\n<p>\u304c\u3042\u308b\u306e\u3067\u53c2\u7167\u3059\u308b\u3002<\/p>\n<ol>\n<li>bit.ly \u3067 api key \u3092\u53d6\u5f97\u3059\u308b\u3002<\/li>\n<li>.NET\u306eWebClient\u3092\u4f7f\u3046\u3053\u3068\u306b\u6c7a\u5b9a\u3002<\/li>\n<li>\u30af\u30a8\u30ea\u547c\u3073\u51fa\u3057\u304c\u697d\u306a\u306e\u3067\u3001OpenRead\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3046\u3002<\/li>\n<li>\u30c6\u30b9\u30c8\u7528\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u3063\u3066\u3001\u9577\u3044URL\u3092\u6e21\u3057\u3066\u7d50\u679c\u3092\u8fd4\u3059\u3068\u3053\u308d\u307e\u3067\u5b8c\u6210\u3002<\/li>\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fJSON\u3067\u8fd4\u3063\u3066\u304f\u308b\u306e\u3067\u3001format\u3092xml\u3067\u6307\u5b9a\u3002<\/li>\n<li>\u30b9\u30c8\u30ea\u30fc\u30e0\u3092 XmlTextReader \u2192 XmlDocument \u306b\u5909\u63db\u3002<\/li>\n<li>\u300cshortUrl\u300d\u3092\u63a2\u3057\u3066\u5909\u63db\u30c6\u30b9\u30c8<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nstring transBitUrl(string longurl)\r\n{\r\n\u00a0\u00a0\u00a0 string query = &amp;quot;&amp;quot;;\r\n\u00a0\u00a0\u00a0 string shorturl = &amp;quot;&amp;quot;;\r\n\r\n\u00a0\u00a0\u00a0 WebClient web = new WebClient();\r\n\r\n\u00a0\u00a0\u00a0 query = &amp;quot;http:\/\/api.bit.ly\/shorten?format=xml&amp;&amp;quot;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + &amp;quot;version=2.0.1&amp;longUrl=&amp;quot; + longurl\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + &amp;quot;&amp;login=&amp;quot; + bitLogin + &amp;quot;&amp;apiKey=&amp;quot; + bitApiKey;\r\n\r\n\u00a0\u00a0\u00a0 Debug.Print(query);\r\n\r\n\u00a0\u00a0\u00a0 Stream st = web.OpenRead(query);\r\n\u00a0\u00a0\u00a0 XmlTextReader xr = new XmlTextReader(st);\r\n\u00a0\u00a0\u00a0 XmlDocument doc = new XmlDocument();\r\n\u00a0\u00a0\u00a0 doc.Load(xr);\r\n\u00a0\u00a0\u00a0 var lst = doc.GetElementsByTagName(&amp;quot;shortUrl&amp;quot;);\r\n\u00a0\u00a0\u00a0 if (lst != null &amp;&amp; lst.Count &gt; 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 XmlElement el = lst&#x5B;0] as XmlElement;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 shorturl = el.InnerText;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 st.Close();\r\n\r\n\u00a0\u00a0\u00a0 return shorturl;\r\n}\r\n<\/pre>\n<p>\u3053\u308c\u304c\u30c6\u30b9\u30c8\u3067\u304d\u305f\u306e\u3067\u3001\u4eca\u5ea6\u306f\u6587\u7ae0\u4e2d\u306eURL\u3092\u5909\u63db\u3055\u305b\u308b\u3002<\/p>\n<ol>\n<li>IndexOf\u30e1\u30bd\u30c3\u30c9\u3067\u5909\u63db\u3057\u3088\u3046\u3068\u601d\u3063\u305f\u304c\u3001\u9762\u5012\u305d\u3046\u3002<\/li>\n<li>\u6b63\u898f\u8868\u73fe\u306e Regex \u30af\u30e9\u30b9\u3092\u4f7f\u3046\u3053\u3068\u306b\u6c7a\u5b9a\u3002<\/li>\n<li>\u7c21\u5358\u306e\u305f\u3081\u306b\u201dhttp:\/\/[^ ]+ \u201c \u306e\u3088\u3046\u306b\u3001\u5f8c\u308d\u306b\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u3067\u533a\u5207\u308b\u3002<br \/>\n\u5b9f\u306f\u3001\u6587\u7ae0\u672b\u306e\u5834\u5408\u306e\u30c1\u30a7\u30c3\u30af\u304c\u5fc5\u8981\u306a\u306e\u3060\u304c\u3001\u3053\u3053\u3067\u306f\u7701\u304f\u3002<\/li>\n<li>\u898b\u3064\u304b\u3063\u305f\u6587\u5b57\u5217\u3092 MatchCollection \u3067\u53d7\u3051\u3066\u3001Replace \u3059\u308c\u3070 OK\u3002<\/li>\n<li>\u30ed\u30fc\u30ab\u30eb\u3067\u30c1\u30a7\u30c3\u30af\u3057\u3066OK\u306a\u306e\u3067\u3001\u3053\u308c\u3092\u5148\u306e\u30a2\u30d7\u30ea\u306b\u7d44\u307f\u8fbc\u3080\u3002<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nstring transShortUrl(string text)\r\n{\r\n\u00a0\u00a0\u00a0 Regex reg = new Regex(&quot;http:\/\/&#x5B;^ ]+ &quot;);\r\n\u00a0\u00a0\u00a0 MatchCollection mc = reg.Matches(text);\r\n\u00a0\u00a0\u00a0 if (mc == null || mc.Count == 0)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return text;\r\n\u00a0\u00a0\u00a0 } \u00a0\u00a0\u00a0 foreach (Match m in mc)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string lurl = m.Value;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (!lurl.StartsWith(http:\/\/bit.ly))\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string surl = transBitUrl(lurl);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (surl != &quot;&quot;)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 text = text.Replace(lurl, surl+&quot; &quot;);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 return text;\r\n}\r\n<\/pre>\n<p>Bit\u30dc\u30bf\u30f3\u3092\u4ed8\u3051\u3066\u3001<\/p>\n<p><a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2010\/05\/20100504-02.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"20100504_02\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2010\/05\/20100504-02-thumb.png\" border=\"0\" alt=\"20100504_02\" width=\"244\" height=\"200\" \/><\/a><\/p>\n<p>\u306a\u72b6\u614b\u304b\u3089\u3001Bit\u30dc\u30bf\u30f3\u3092\u62bc\u305b\u3070\u3001<\/p>\n<p><a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2010\/05\/20100504-03.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"20100504_03\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2010\/05\/20100504-03-thumb.png\" border=\"0\" alt=\"20100504_03\" width=\"244\" height=\"200\" \/><\/a><\/p>\n<p>\u306a\u72b6\u614b\u3078\u3002\u3053\u3053\u307e\u3067\u306f\uff11\u6642\u9593\u534a\u7a0b\u5ea6\u3001\u307e\u305a\u307e\u305a\u304b\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u53cd\u7701\u3092\u8e0f\u307e\u3048\u3066\u3001bit.ly \u306f\u771f\u9762\u76ee\u306b\u30c6\u30b9\u30c8\u3057\u3064\u3064\u3084\u308b\u3002\u30d7\u30ed\u30b0\u30e9\u30de\u6839\u6027\u3068\u3044\u3046\u3068\u3053\u308d\u3002 \u3055\u3066\u3001bit.ly \u306e API \u3092\u4f7f\u3048\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u306f\u3044\u305f\u3082\u306e\u306e\u3001 API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u898b\u308b\u306e\u3082\u3057\u3093\u3069\u3044\u3057 http:\/\/c &hellip; <a href=\"https:\/\/www.moonmile.net\/blog\/archives\/810\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-810","post","type-post","status-publish","format-standard","hentry","category-dev"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=810"}],"version-history":[{"count":5,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/810\/revisions"}],"predecessor-version":[{"id":815,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/810\/revisions\/815"}],"wp:attachment":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}