Twitter API でコメント付きリツイート

June 16, 2015

Twitter API でコメント付きリツイートする場合、特に専用のエンドポイントは用意されていないので、通常のツイートとして コメントとコメントを付けたいツイートの URL を status に入れて POST します。

Retweet with Comment via Twitter REST API using PHP TwitterOAuth

それだけなら話は終わりですが、いざコードに組み込もうとすると、色んな疑問点が出てきました。いくつか検証したのでその結果と、その他お役立ち情報をまとめておきます。

TwitterOAuth を使ったサンプルコード

Twitter REST API の PHP ライブラリとしては最もポピュラーな TwitterOAuth を使ってコメント付きリツイートするコードです。

define('CONSUMER_KEY',        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('CONSUMER_SECRET',     'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('ACCESS_TOKEN',        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('ACCESS_TOKEN_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

require 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

$toa = new TwitterOAuth( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET );

$tweet = $toa->post( 'statuses/update', array(
	'status' => 'コメント https://twitter.com/xxxxxxxx/status/9999999999999999',
	'trim_user' => true
) );

TwitterOAuth は使い方(というか初期化の方法)が最近になって変わったようで、グーグル先生が教えてくれる日本語情報は あまりあてになりません。2015年 6月現在は以下ですが、また変わるかも知れませんね。本家サイトでお確かめください。

require 'twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

コメント付きリツイートの元ツイートは quoted_status として返される

2015年 5月下旬くらいから、コメント付きリツイートを API で取得すると、quoted_status オブジェクトとして元ツイートが返されるようになりました。意外に知られていない(?)けど、これは便利。

コメント付きリツイートのもろもろ検証結果

コメント付きリツイートは、本文に元ツイートの URL(以下 便宜的に「ステータス リンク」と表記します)を含めるだけ、というシンプルなものなので、例えば スタータス リンクを 2つ含めたらどうなるの? とか、画像を添付したらどうなるの? などなど、疑問が沢山あったので実際に試してみました。

複数のステータス リンクをツイート

'status' => 'コメント https://twitter.com/xxxxxxxx/status/9999999999999999 https://twitter.com/xxxxxxxx/status/1111111111111111'

結果

» 最後のステータス リンクが quoted_status になる

ステータス リンクと画像リンクをツイート

画像リンクとは、画像付きツイートのステータス リンク末尾に「/photo/1」を付加したリンクです。画像リンクをツイートすると、タイムラインに画像が表示されます(.jpg などの画像ファイルへの直接リンクとは挙動が異なります)。

'status' => 'コメント https://twitter.com/xxxxxxxx/status/9999999999999999 https://twitter.com/xxxxxxxx/status/1111111111111111/photo/1'

結果

» 画像付きツイートになる(コメント付きリツイートにならない

画像が優先されるのは注意点かも知れません。

ただし API でこのテスト ツイートを取得するとステータス リンクの quoted_status があります。また、API でアップロードした画像を media_urls で指定しても同じ結果でした。念のため、ステータス リンクと画像リンクの順序を変えても同じでした。

ステータス リンクと通常のリンクをツイート

'status' => 'コメント https://twitter.com/xxxxxxxx/status/9999999999999999 http://designhack.slashlab.net/'

結果

» コメント付きリツイートになる

尚、API でこのテスト ツイートを取得すると entities の urls はツイートに書いた順序のままであり、最後の url が元ツイートのステータス リンクではないので注意です。また、通常、ウェブ クライアントのタイムラインに表示されない元ツイートのステータス リンクが t.co の短縮 URL で表示されるのも通常のコメント付きリツイートと少し違う点です。

関連するお役立ちリンク

最初にリンクした Syncer さんは超素晴らしい記事ですね。お陰様でだいぶ捗りました。ありがとうございます。

最後にリンクしたのは Twitter 公式の自動化ガイドライン。
Twitter API を使うなんて、何かを自動化して楽したい効率化する以外にないでしょう。「自動フォローに限らず、自動フォローバックも禁止だって? ソースはどこだ。探しに行くつもりはない。ソースを出さない限り絶対に信じないぞ!」という筆者の脳内に生息する魔物に見て欲しい。

Automated following and unfollowing

You may not use or develop any application that allows for the following or unfollowing of user accounts in a bulk or automated manner. Using block as a means to unfollow users is also not allowed. Accounts and applications that engage in this practice will be suspended.

(意訳)
自動でフォローしたりアンフォローするとアカウントやアプリを凍結するよ。

最後はちょっとブレちゃったけど気にしない。では また次回。

コメントを残す

メールアドレスが公開されることはありません。