Search
  1. 単一キーワード検索〔キーワード〕
  2. OR検索〔キーワード OR キーワード〕
  3. AND検索〔キーワード AND キーワード〕
  4. フレーズ検索〔iphone app〕
  5. ハッシュタグ検索〔#hashtag〕
  6. 特定ユーザー宛のリプライ検索〔@スクリーンネーム〕
  7. 特定ユーザーが投稿したツイート検索〔from:スクリーンネーム〕
  8. 特定アプリから投稿されたツイート検索〔news source:投稿元アプリ名〕

単一キーワード検索
キーワード

2011/5/30

http://search.twitter.com/search?q=キーワード

各キーワードが含まれるツイートのをTwitter検索して、結果を表示します。

例)http://search.twitter.com/search.json?q=%E5%9C%B0%E9%9C%87

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res"
                    },options);
                    this.click(function(){
                        var _type=$(this).attr("class");
                        var _q=$(this).attr("rel");
                        var _txt=$(this).text();
                        var _url=settings.url+"?q="+_q+"&type=recent&page="+settings.page+"&callback={callback}";
                        $.getJSONP(_url, function(json){
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for“"+_txt+"”");
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                                $("#"+settings.holderID+" > ul").html(s);
                            });
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("p a").twSearch();
                $("p a:first-child").click();
            });
        </script>
        <style type="text/css">
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <p>このAPIは認証不要です。下記のリンクをクリックすると、各キーワードでのTwitter検索結果を表示します(1ページ分)。</p>
<!-- CODE -->
            <p>
                クエリ:
                <a href="#" class="mixed" rel="%E5%9C%B0%E9%9C%87">地震</a> 
                <a href="#" class="recent" rel="%E6%9D%B1%E4%BA%AC%E7%9B%B4%E4%B8%8B">東京直下</a> 
                <a href="#" class="popular" rel="%E5%8E%9F%E7%99%BA">原発</a>
            </p>
            <div id="res"><h2></h2><ul></ul></div>
<!-- / CODE -->
        </div>
    </body>
</html>

OR検索
キーワード OR キーワード

2011/5/30

http://search.twitter.com/search?q=キーワード OR キーワード

指定したキーワードのいずれかを含むツイートを取得します。

例)http://search.twitter.com/search?q=android%20OR%20iphone

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //キーワード1
                        var _kw1=$("#kw1").val();
                        var _kw2=$("#kw2").val();
                        //クエリ
                        var _query=_kw1+" OR "+_kw2;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for“"+_query+"”");
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>例)OR検索 - キーワード OR キーワード</h2>
            <p>いずれかのキーワードが含まれるツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="kw1"><input type="text" value="android" name="kw1" id="kw1" /></label> 
                OR 
                <label for="kw2"><input type="text" value="アンドロイド" name="kw2" id="kw2" /></label> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

AND検索
キーワード AND キーワード

2011/5/30

http://search.twitter.com/search.json?q=キーワード キーワード

指定したキーワード両方を含むツイートを取得します。

例)http://search.twitter.com/search.json?q=android%20iphone

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //キーワード1
                        var _kw1=$("#kw1").val();
                        var _kw2=$("#kw2").val();
                        //クエリ
                        var _query=_kw1+" "+_kw2;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for“"+_query+"”");
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>例)AND検索 - キーワード キーワード</h2>
            <p>指定したキーワード両方を含むツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="kw1"><input type="text" value="android" name="kw1" id="kw1" /></label> 
                + 
                <label for="kw2"><input type="text" value="アンドロイド" name="kw2" id="kw2" /></label> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

フレーズ検索
iphone app

2011/5/30

http://search.twitter.com/search.json?q="フレーズ"

「iphone app」等ハンカクスペースを含むフレーズが含まれるツイートを取得します。フレーズは、引用符で括る必要があります。括らないとキーワード検索と同じ扱いになります。

例)http://search.twitter.com/search.json?q=%22iphone%20app%22

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //キーワード1
                        var _phrase=$("#phrase").val();
                        //クエリ
                        var _query='"'+_phrase+'"';
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for "+_query);
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>フレーズ検索 - "iphone app"</h2>
            <p>指定したフレーズを含むツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="phrase">フレーズ:</label>
                “<input type="text" value="iphone app" name="phrase" id="phrase" />” 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

ハッシュタグ検索
#hashtag

2011/5/30

http://search.twitter.com/search.json?q=#ハッシュタグ

指定したハッシュタグがつけられたツイートを取得します。

例)http://search.twitter.com/search.json?q=%23jquery

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //キーワード1
                        var _hash=$("#hash").val();
                        //クエリ
                        var _query=_hash;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for "+_query);
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>ハッシュタグ検索 - "#hashtag"</h2>
            <p>指定したハッシュタグが付けられたツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="phrase">ハッシュタグ:</label>
                <input type="text" value="#jquery" name="hash" id="hash" /> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

特定ユーザー宛のリプライ検索
@スクリーンネーム

2011/5/30

http://search.twitter.com/search?q=@スクリーンネーム

指定したユーザー宛のリプライツイートを取得します。

例)http://search.twitter.com/search.json?q=%40cocoism

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //キーワード1
                        var _mentions=$("#mentions").val();
                        //クエリ
                        var _query="@"+_mentions;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for "+_query);
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>リプライ検索 - @username</h2>
            <p>指定したユーザー宛のリプライツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="phrase">@</label>
                <input type="text" value="cocoism" name="mentions" id="mentions" /> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

特定ユーザーが投稿したツイート検索
from:スクリーンネーム

2011/5/30

http://search.twitter.com/search?q=from:スクリーンネーム

指定したユーザー名が投稿したツイートを取得します。

例)http://search.twitter.com/search.json?q=from:cocoism

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"5",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //スクリーンネーム
                        var _screenname=$("#screenname").val();
                        if(!_screenname) _screenname="cocoism";
                        //クエリ
                        var _query="from:"+_screenname;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        //alert(_url);
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for“"+_query+"”");
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#searchurl").html("検索URL:"+_url).show();
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>例)「from:スクリーンネーム」</h2>
            <p>指定したユーザーが投稿したツイートを検索し、結果を表示します(1ページ分)。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="screenname">from:<input type="text" value="cocoism" name="screenname" id="screenname" /></label> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

特定アプリから投稿されたツイート検索
news source:投稿元アプリ名

2011/5/30

http://search.twitter.com/search?q=news source:投稿元アプリ名

指定したアプリから投稿されたツイートを取得します。

例)http://search.twitter.com/search.json?q=news%20source:HootSuite
例)http://search.twitter.com/search.json?q=news%20source:tweet_button

設置サンプルサンプルを見る
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="imagetoolbar" content="no" />
        <title>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</title>
        <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript" src="/content/lib/jquery/jquery.jsonp.js"></script>
        <!-- JS -->
        <script type="text/javascript">
            (function($){
                var pcnt=1;
                $.fn.twSearch=function(options){
                    var settings=$.extend({
                        url:"http://search.twitter.com/search.json",
                        page:"1",
                        holderID:"res",
                        readmore:false
                    },options);
                    this.click(function(){
                        //検索タイプ
                        var _type=$("#result_type").val();
                        if(!_type) _type="mixed";
                        //投稿元アプリ名
                        var _newssource=$("#newssource").val();
                        if(!_type) _type="hootsuite";
                        //クエリ
                        var _query="news source:"+_newssource;
                        //API
                        if(settings.readmore){
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+pcnt+"&callback={callback}";
                            //alert(_url);
                            pcnt++;
                        }else{
                            var _url=settings.url+"?q="+encodeURIComponent(_query)+"&type="+_type+"&page="+settings.page+"&callback={callback}";
                        }
                        $.getJSONP(_url, function(json){
                            $("#loading").show();
                            if(json.results==""){
                                  $("#btn_more").hide();
                                  $("#"+settings.holderID).append("<p id='caution'>※もうデータがありません</p>");
                                  return false;
                            }
                            var s="";
                            $("#"+settings.holderID+" > h2").html("Results for“"+_query+"”");
                            $.each(json.results, function(i, item){
                                s+="<li>";
                                s+="<a href='http://twitter.com/"+item.from_user+"'><img src='"+item.profile_image_url+"' /></a> ";
                                s+="<a href='http://twitter.com/"+item.from_user+"'>"+item.from_user+"</a>: "+formatStr(item.text)+"";
                                s+="<div>";
                                s+="<span><a href='http://twitter.com/"+item.from_user+"/status/"+item.id_str+"'>"+relativeTime(item.created_at)+"</a></span>";
                                s+="<span class='hoge'>"+formatSource(item.source)+"から</span>";
                                s+="</div>";
                                s+="</li>";
                            });
                            if(settings.readmore){
                                // もっと読む
                                $("#"+settings.holderID+" > ul").append(s);
                            }else{
                                // 検索
                                $("#"+settings.holderID+" > ul").html(s);
                                $("#btn_more").show();
                                pcnt=settings.page;
                                pcnt++;
                            }
                            $("#loading").hide();
                            return false;
                        });
                    });
                    var formatStr=function(str){
                        str = str.replace(/((ftp|http|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.-]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
                        str = str.replace(/@(\w+)/gm,'@<a href="http://twitter.com/$1" target="_blank">$1</a>');
                        str = str.replace((\w+)/gm,'<a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a>');
                        return str;
                    }
                    var formatSource=function(str){
                        str = str.replace(/&gt;/gm,">");
                        str = str.replace(/&lt;/gm,"<");
                        return str;
                    }
                    var relativeTime=function(pastTime){
                        var origStamp = Date.parse(pastTime);
                        var curDate = new Date();
                        var currentStamp = curDate.getTime();
                        var difference = parseInt((currentStamp - origStamp)/1000);
                        if(difference < 5)                return "いまさっき";
                        if(difference <= 20)            return "数秒前";
                        if(difference <= 60)            return "1分以内";
                        if(difference < 3600)            return parseInt(difference/60)+" 分前";
                        if(difference <= 1.5*3600)         return "1時間前";
                        if(difference < 23.5*3600)        return Math.round(difference/3600)+" 時間前";
                        if(difference < 1.5*24*3600)    return "1日前";
                        var dateArr = pastTime.split(' ');
                        return (parseInt(difference / 86400)).toString() + '日前';
                    }
                    return this;
                };
            })(jQuery);
            $(function(){
                $("#btn_serach").twSearch();
                $("#btn_more").twSearch({readmore:true});
            });
        </script>
        <style type="text/css">
            #loading,#searchurl,#btn_more { display:none; }
            #res ul { margin:0; padding:0; list-style:none; border-top:1px solid #ccc; }
            #res li { background-color:#fff; margin:0; padding:10px 10px 10px 62px; list-style:none; display:block; position:relative; min-height:42px; height:auto!important; height:42px; font-size:13px; border-bottom:1px solid #ccc; }
            #res li:hover { background-color:#d3f7ff; }
            #res li img { display:block; width:32px; height:32px; margin:0; padding:1px; outline:1px solid #ccc; background:#fff; position:absolute; top:10px; left:10px; }
            #res li div { margin:5px 0; padding:0; font-size:11px; }
            #res li div span { margin:0 10px 0 0; padding:0; }
            #searchurl { font-size:10px; border:1px dotted #ccc; background:#eee; word-break:break-all; }
            #caution { margin:10px 0; padding:10px; background:#ffffcc; }
        </style>
    </head>
    <body>
        <div id="wrap">
            <h1>Twitter API:検索関連メソッド:search(Twitter検索) | 設置サンプル</h1>
            <h2>例)「news source:投稿元アプリ名」</h2>
            <p>指定したアプリから投稿されたツイートを検索し、結果を表示します(1ページ分)。<br>【検索】ボタンをクリックすると1ページ分取得します。<br>さらに検索後に表示される「もっと読む」をクリックすると、次のページを取得します。</p>
<!-- CODE -->
            <p>
                <label for="result_type">検索タイプ:</label>
                <select name="result_type" id="result_type">
                    <option value="mixed" selected="selected">mixed</option>
                    <option value="recent">recent</option>
                    <option value="popular">popular</option>
                </select> 
                <label for="newssource">投稿元アプリ:</label>
                <select name="newssource" id="newssource">
                    <option value="hootsuite" selected="selected">HootSuite</option>
                    <option value="tweet_button">Tweet Button</option>
                    <option value="tweetdeck">TweetDeck</option>
                    <option value="desktopxevo">Desktopxevo</option>
                    <option value="twitterfeed">twitterfeed</option>
                    <option value="Echofon">Echofon</option>
                    <option value="instagram">instagram</option>
                    <option value="hatena">Hatena</option>
                    <option value="web">web</option>
                </select> 
                <input type="button" value=" 検索 " id="btn_serach" />
            </p>
            <div id="searchurl"></div>
            <div id="res"><div id='loading'>loading...</div><h2></h2><ul></ul></div>
            <p><a href="#" id="btn_more" onclick="return false;">もっと見る</a></p>
<!-- / CODE -->
        </div>
    </body>
</html>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women