1

重複の可能性:
ツイートがリツイートかどうかの判断?

そこで、フィードを取得する Twitter フィード スクリプトに取り組んできました。特定のツイートがリツイートされているかどうかを確認するにはどうすればよいでしょうか。リツイートされている場合は、代わりにリツイートされたツイートの情報を使用したいと考えています。これは、リツイートのために twitter API が生成する連想配列の例です。

Array
(
    [0] => Array
        (
            [created_at] => Sun Jan 06 08:28:39 +0000 2013
            [id] => 287838076443705345
            [id_str] => 287838076443705345
            [text] => RT @Fullscreen: Heads-up: many YT partners are reporting issues claiming their videos. It appears to be a YT bug. We will keep you posted.
            [source] => web
            ... 
            [user] => Array
                (
                    [id] => 212642904
                    [id_str] => 212642904
                    [name] => Elias Ranz-Schleifer
                    [screen_name] => Xxplosions
                    ... 
                )
                ...
            [retweeted_status] => Array
                (
                    [created_at] => Sun Jan 06 02:08:43 +0000 2013
                    [id] => 287742460824805378
                    [id_str] => 287742460824805378
                    [text] => Heads-up: many YT partners are reporting issues claiming their videos. It appears to be a YT bug. We will keep you posted.
                    ... 
                    [user] => Array
                        (
                            [id] => 238110322
                            [id_str] => 238110322
                            [name] => Fullscreen, Inc.
                            [screen_name] => Fullscreen
                            ... 
                        )
                        ...
                )

            [retweet_count] => 44
            ...
        )

)

したがって、本質的には、存在する場合にのみ[text] => RT @Fullscreen: Heads-up: many...置き換えたいと考えています。[text] => Heads-up: many...存在しない場合は、ツイートから情報を取得する通常の方法を使用します。基本的に私が取得しようとしているのは、[retweeted_status]存在するかどうかを確認し、そうでない場合はその情報を取得してから、他の情報を取得する方法です。可能なように見えるので、そこにRTを入れないようにして、次のような情報を使用したいと思いますid_str, text, screen_name, etc.

通常のツイート プルの情報を取得するために使用するコードは次のとおりです。

id = tweets[i]["id_str"];
twitPic = tweets[0]["user"]["profile_image_url_https"];
content = tweets[i]["text"];
tweetTime = tweets[i]["created_at"];

whereiは for ループのインデックスに置き換えられます。私が何をしようとしているのかについて質問があれば、お知らせください。喜んで解決させていただきます。

4

2 に答える 2

1

次のようにキーが存在するかどうかをテストできます。

// by using the 'in' operator
content = ('retweeted_status' in tweets[i]) ?  tweets[i]["retweeted_status"] : tweets[i]["text"];
// or by using the method 'hasOwnProperty()'
if(tweets[i].hasOwnProperty('retweeted_status')) {
    content = tweets[i]["retweeted_status"];
} else {
    content = tweets[i]["text"];
}

未定義をチェックすることもできますが、これはキーが存在するかどうかをテストする正確な方法ではありません (キーが存在するが、値が実際に未定義の場合はどうなるでしょうか?)。

于 2013-01-06T09:43:14.393 に答える
0
// save current tweet
var tweet = tweets[i];
var id = tweet.id_str;
var twitPic = tweet.user.profile_image_url_https;
var tweetTime = tweet.created_at;
var isRetweet = Object.prototype.toString.call(tweet.retweeted_status).slice(8, -1) === 'Object';
// try to use text from original tweet
var content = isRetweet ? tweet.retweeted_status.text : tweet.text;
于 2013-01-06T09:38:13.133 に答える