「Mixi アプリ Twitter 検索」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==mixi アプリ Twitter 検索== [mixi アプリ] ===Twitter の 検索を行うサンプル=== *Twitter の 検索を行う File:0800_mixi_app_twitter01.jpg…」) |
|||
1行目: | 1行目: | ||
==mixi アプリ Twitter 検索== | ==mixi アプリ Twitter 検索== | ||
− | [mixi アプリ] | + | [[mixi アプリ]] |
===Twitter の 検索を行うサンプル=== | ===Twitter の 検索を行うサンプル=== | ||
10行目: | 10行目: | ||
*[http://code.google.com/intl/ja/apis/gadgets/docs/remote-content.html#Fetch_JSON Google Gadgets API JSON利用サンプル] | *[http://code.google.com/intl/ja/apis/gadgets/docs/remote-content.html#Fetch_JSON Google Gadgets API JSON利用サンプル] | ||
− | + | <?xml version="1.0" encoding="UTF-8" ?> | |
− | + | <Module> | |
− | + | <ModulePrefs title="twitter search sample"> | |
− | + | <Require feature="opensocial-0.8"/> | |
− | + | </ModulePrefs> | |
− | + | <Content type="html"> | |
− | + | <![CDATA[ | |
− | + | <style type="text/css"> | |
a:active, a:hover, .b:active, .link:active { | a:active, a:hover, .b:active, .link:active { | ||
color:#AAAAAA; | color:#AAAAAA; | ||
27行目: | 27行目: | ||
text-decoration:none; | text-decoration:none; | ||
} | } | ||
− | + | </style> | |
− | + | <script type="text/javascript"> | |
/** | /** | ||
* mixi アプリ : Twitterの検索を行う | * mixi アプリ : Twitterの検索を行う | ||
53行目: | 53行目: | ||
var next_page = jsondata['next_page']; | var next_page = jsondata['next_page']; | ||
if (next_page) { | if (next_page) { | ||
− | html += " | + | html += "<a href='javascript:search_twitter(\"" + next_page + "\");'>next page</a>"; |
− | html += " | + | html += "<br/>"; |
} | } | ||
var results = jsondata['results']; | var results = jsondata['results']; | ||
− | html +=" | + | html +="<table border='0'>"; |
− | for (var i=0; i | + | for (var i=0; i<results.length; i++) { |
var result = results[i]; | var result = results[i]; | ||
− | html += " | + | html += "<tr style='font-size:small;'>"; |
− | html += " | + | html += "<td>"; |
− | html += " | + | html += "<a href='http://twitter.com/" + result['from_user'] + "' target='_blank'>"; |
− | html += " | + | html += "<img src='" + result['profile_image_url'] + "' border='none'/>"; |
− | html += " | + | html += "</a>"; |
− | html += " | + | html += "</td>"; |
− | html += " | + | html += "<td>"; |
− | html += " | + | html += "<a href='http://twitter.com/" + result['from_user'] + "' target='_blank'>"; |
− | html += " | + | html += "<span style='color:#2FC2EF;font-weight:bold;'>" + result['from_user'] + ":</span>" |
− | html += " | + | html += "</a>"; |
− | html += createLink(result['text']) + " | + | html += createLink(result['text']) + "</br>"; |
− | html += " | + | html += "</td>"; |
− | html += " | + | html += "</tr>"; |
} | } | ||
− | html += " | + | html += "</table>"; |
document.getElementById('content_div').innerHTML = html; | document.getElementById('content_div').innerHTML = html; | ||
88行目: | 88行目: | ||
var ary = ptn.exec(text); | var ary = ptn.exec(text); | ||
while(ary) { | while(ary) { | ||
− | ret = ret.replace(ary[0], " | + | ret = ret.replace(ary[0], "<a href='" + RegExp.$1 + "' target='_blank'>" + ary[0] + "</a>"); |
ary = ptn.exec(text); | ary = ptn.exec(text); | ||
} | } | ||
99行目: | 99行目: | ||
var ary = ptn.exec(text); | var ary = ptn.exec(text); | ||
while(ary) { | while(ary) { | ||
− | ret = ret.replace(ary[0], " | + | ret = ret.replace(ary[0], "<a href='http://twitter.com/" + RegExp.$1 + "' target='_blank'>" + ary[0] + "</a>"); |
ary = ptn.exec(text); | ary = ptn.exec(text); | ||
} | } | ||
117行目: | 117行目: | ||
return ret; | return ret; | ||
} | } | ||
− | + | </script> | |
− | + | <input type="text" size="16" id="q"/><input type="button" name="search" value="twitter search" onclick="javascript:search_twitter();"/> | |
− | + | <div id="content_div"/> | |
− | ]] | + | ]]> |
− | + | </Content> | |
− | + | </Module> |
2020年2月15日 (土) 08:04時点における版
mixi アプリ Twitter 検索
Twitter の 検索を行うサンプル
- Twitter の 検索を行う
ソース
<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="twitter search sample"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ <style type="text/css"> a:active, a:hover, .b:active, .link:active { color:#AAAAAA; text-decoration:underline; } a, .link { color:#2694E8; cursor:pointer; text-decoration:none; } </style> <script type="text/javascript"> /** * mixi アプリ : Twitterの検索を行う */ function search_twitter(url) { var baseurl = "http://search.twitter.com/search.json"; if (url) { url = baseurl + url; } else { url = baseurl + makeHttpParam('q', true); } var params = {}; params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON; gadgets.io.makeRequest(url, searchResponse, params); } /** * 検索結果処理 */ function searchResponse(responseObj) { var html = ""; var jsondata = responseObj.data var next_page = jsondata['next_page']; if (next_page) { html += "<a href='javascript:search_twitter(\"" + next_page + "\");'>next page</a>"; html += "<br/>"; } var results = jsondata['results']; html +="<table border='0'>"; for (var i=0; i<results.length; i++) { var result = results[i]; html += "<tr style='font-size:small;'>"; html += "<td>"; html += "<a href='http://twitter.com/" + result['from_user'] + "' target='_blank'>"; html += "<img src='" + result['profile_image_url'] + "' border='none'/>"; html += "</a>"; html += "</td>"; html += "<td>"; html += "<a href='http://twitter.com/" + result['from_user'] + "' target='_blank'>"; html += "<span style='color:#2FC2EF;font-weight:bold;'>" + result['from_user'] + ":</span>" html += "</a>"; html += createLink(result['text']) + "</br>"; html += "</td>"; html += "</tr>"; } html += "</table>"; document.getElementById('content_div').innerHTML = html; } function createLink(text) { // URL置き換えの正規表現がなぜか行末にマッチしないので最後にスペース1文字付加 return toUserUrlText(toFuzzyUrlText(text + ' ')); } /** ちょっといい加減にURLをリンクに変更する関数 */ function toFuzzyUrlText(text) { var ret = text; var ptn = /(http:\/\/.*?)[ $]/g; // 行末にマッチしない??? var ary = ptn.exec(text); while(ary) { ret = ret.replace(ary[0], "<a href='" + RegExp.$1 + "' target='_blank'>" + ary[0] + "</a>"); ary = ptn.exec(text); } return ret; } /** ちょっといい加減にTwitter IDをリンクに変更する関数 */ function toUserUrlText(text) { var ret = text; var ptn = /@([A-Za-z]{1,}?):/g; var ary = ptn.exec(text); while(ary) { ret = ret.replace(ary[0], "<a href='http://twitter.com/" + RegExp.$1 + "' target='_blank'>" + ary[0] + "</a>"); ary = ptn.exec(text); } return ret; } /** * HTTP GETリクエストパラメータを生成 */ function makeHttpParam(param_id, isFirstParam) { isFirstParam = !(isFirstParam == undefined); var paramObj = document.getElementById(param_id); var ret = ""; if (paramObj != null) { ret = ((isFirstParam)?"?":"&") + param_id + "=" + encodeURIComponent(paramObj.value); } return ret; } </script> <input type="text" size="16" id="q"/><input type="button" name="search" value="twitter search" onclick="javascript:search_twitter();"/> <div id="content_div"/> ]]> </Content> </Module>
© 2006 矢木浩人