25

私は数年前に小さなJavaScriptを作成しました。これは、ユーザー(私の)の最新のツイートを取得し、リンクや日付などを含む表示用に解析しました。

このjson呼び出しを使用してツイートを取得したため、機能しなくなりました。

http://twitter.com/statuses/user_timeline/radfan.json

エラーが返されるようになりました。

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}

私はAPIバージョン(以下のコード)を使用することを検討しましたが、これには認証が必要です。これは、プロファイルページで公開されているWebサイトに最新のツイートを表示するだけなので、認証を行う必要はありません。

http://api.twitter.com/1/statuses/radfan.json

TwitterのAPIの変更についていくことができなくなったので、実際には作業していません。この問題を回避する方法はありますか、それとも不可能ですか?

4

8 に答える 8

17

以前は、検索APIは何らかの形式のOAuthを必要としない唯一のTwitterAPIでした。今では認証が必要です。

TwitterのSearchAPIは、サードパーティの買収から取得されたものです。サードパーティがサポートすることはめったになく、存在することすら熱心ではないようです。その上、ペイロードには多くの制限があります。これには、返されるJSONまたはXMLファイルのキーと値のペアの大幅に削減されたセットが含まれますが、これらに限定されません。

これを聞いてショックを受けました。最小限のコードを使用して単純なGETリクエスト(タイムラインの表示など)を実行する方法を理解するのに長い時間を費やしました。

関連するペイロードを確保できるように、OAuthルートを使用することにしました。これを行うには、サーバー側の言語が必要です。JavaScriptはエンドユーザーに表示されるため、必要なキーシークレットを.jsファイルに含めることはお勧めできません。

私は大きなライブラリを使いたくなかったので、私にとっての答えはPHPであり、@Riversの答えをここで助けてください。その下の@lackovic10による回答は、認証にクエリを含める方法を説明しています。

これにより、他の人が新しいOAuth要件でTwitterのAPIを使用する方法を考える時間を節約できることを願っています。

于 2013-04-22T04:21:57.000 に答える
12

ログインしていなくても、高度な検索を介してTwitterにアクセスしてスクレイプできます。

GETリクエスト

基本的な検索リクエストを実行すると、次のようになります。

https://twitter.com/search?q=Babylon%205&src=typd
  • q(エンコードされたクエリ)
  • src(クエリのソースであると想定されます。つまり入力されます)

デフォルトでは、Twitterは上位25件の結果を返しますが、クリックする allとリアルタイムのツイートを取得できます。

https://twitter.com/search?f=realtime&q=Babylon%205&src=typd

JSONコンテンツ

より多くのツイートがAJAXを介してページにロードされます:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=TWEET-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

max_position次のツイートをリクエストするために使用します

次のjson配列は、コンテンツをスクレイプするために必要なすべてを返します。

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd
  • has_more_items(bool)
  • items_html(html)
  • max_position(キー)
  • refresh_cursor(キー)

DOM要素

DOM elements抽出に使用できるリストがあります

著者のツイッターハンドル

div.original-tweet[data-tweet-id]   

著者の名前

div.original-tweet[data-name]

著者のユーザーID

div.original-tweet[data-user-id]    

投稿のタイムスタンプ

span._timestamp[data-time]  

投稿のタイムスタンプ(ミリ秒)

span._timestamp[data-time-ms]

ツイートのテキスト

p.tweet-text
 

リツイート数

span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-tweet-stat-count] 

好きな人の数

span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-tweet-stat-count]    

資力

于 2015-05-18T18:19:50.990 に答える
6

それでもJSONで認証されていないツイートを探している場合は、これが機能するはずです: https ://github.com/cosmocatalano/tweet-2-json

于 2013-08-08T13:04:16.143 に答える
0

ドキュメントでわかるように、REST APIを使用すると、これを行うためにOAuthトークンが必要になります。幸い、検索(OAuthを使用しない)を使用して、from:[USERNAME]演算子を使用できます

例: http
://search.twitter.com/search.json?q = from:marcofolio そのユーザーからのツイートを含むJSONオブジェクトを提供します。

object.results[0]

最後のツイートをします。

于 2012-11-19T13:03:42.373 に答える
0

Twitter api v1を使用すると、OAuthを使用せずにツイートを取得できます。例:このリンクは、@jackの最後の100件のツイートになります。

タイムラインのドキュメントはこちらです。

于 2012-12-05T18:42:50.697 に答える
0

これは、 http://anyorigin.comを使用してTwitterサイトで最新のツイートを取得するクイックハック(実際にはハックです。将来を保証するものではないため、注意して使用する必要があります)です。

http://codepen.io/JonOlick/pen/XJaXBd

これは、anyorigin(使用するには料金を支払う必要があります)を使用してHTMLを取得することで機能します。次に、jqueryを使用してHTMLを解析し、関連するツイートを抽出します。

モバイルサイトのツイートでは、クラス.tweet-textのdivが使用されているため、これは非常に簡単です。

関連するコードは次のようになります。

$.getJSON('http://anyorigin.com/get?url=mobile.twitter.com/JonOlick&callback=?', function(data){

  // Remap ... utf8 encoding to ascii. 
  var bar = data.contents;
  bar = bar.replace(/…/g, '...');

  var el = $( '<div></div>' );
  el.html(bar);

  // Change all links to point back at twitter
  $('.twitter-atreply', el).each(function(i){
    $(this).attr('href', "https://twitter.com" + $(this).attr('href'))
  });

  // For all tweets
  $('.tweet-text', el).each(function(i){
    // We only care about the first 4 tweets
    if(i < 4) {
      var foo = $(this).html();
      $('#test').html($('#test').html() + "<div class=ProfileTweet><div class=ProfileTweet-contents>" + foo + "</div></div><br>");
    }
  });

});
于 2015-02-03T18:11:01.770 に答える
0

Twitter APIの機能の限定されたセットを提供するTweetJS.comなどのTwitterAPIラッパーを使用できますが、認証は必要ありません。このように呼ばれます。

TweetJs.ListTweetsOnUserTimeline("PetrucciMusic",
function (data) {
    console.log(data);
});
于 2019-08-01T15:22:31.057 に答える
-4

メソッド「GETstatuss/user_timeline」には、公式ドキュメントに記載されているようなユーザー認証が必要です。

認証を必要としない検索方法「GETsearch」を使用できます。

ここから開始するためのコードがあります:http://jsfiddle.net/73L4c/6/

function searchTwitter(query) {
    $.ajax({
        url: 'http://search.twitter.com/search.json?' + jQuery.param(query),
        dataType: 'jsonp',
        success: function(data) {
            var tweets = $('#tweets');
            tweets.html('');
            for (res in data['results']) {
                tweets.append('<div>' + data['results'][res]['from_user'] + ' wrote: <p>' + data['results'][res]['text'] + '</p></div><br />');
            }
        }
    });
}

$(document).ready(function() {
    $('#submit').click(function() {
        var params = {
            q: $('#query').val(),
            rpp: 5
        };
        // alert(jQuery.param(params));
        searchTwitter(params);
    });
})
于 2013-05-06T17:20:38.340 に答える