Hiroto's diary

プログラミング関連を書くかも

Twitterで280文字のツイートをする

Twitterは9月26日に、ツイート可能な文字数を140文字から280文字に増やすための実験を開始すると発表。

blog.twitter.com

しかし、対象ユーザーは無作為に選ばれる上に日本語, 中国語, 韓国語は対象ではありません

APIにパラメータをつければ誰でも280文字ツイートが出来たので280文字投稿の方法を紹介。

この記事ではPHPCowitterを用いて投稿しますが、他の言語やライブラリでもパラメーターをつければ投稿可能です。

280文字の投稿方法

簡単に言ってしまうとツイートを投稿するAPIであるstatuses/updateを叩く際、パラメーターにweighted_character_count=trueを付ければ投稿可能です。

とりあえずサンプルコードを書いてみます。

<?php

require __DIR__."/vendor/autoload.php";

use mpyw\Cowitter\Client as CowitterClient;

// ランダムな文字列を生成。
function rand_str($len = 10) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ0123456789';
    $str = '';
    for ($i = 0; $i < $len; ++$i) {
        $str .= $chars[mt_rand(0, 61)];
    }
    return $str;
}

$client = new CowitterClient(['CK', 'CS', 'AT', 'ATS']);

// パラメーターにweighted_character_count=trueを付けて280文字をツイート。
// また、ツイートの文字数が140文字を越すためtweet_mode=extendedを使用。
$params = [
    'status' => '280文字ツイート'. PHP_EOL. rand_str(270),
    'tweet_mode' => 'extended',
    'weighted_character_count' => true,
];
$response = $client->post('statuses/update', $params);

// 280文字全てを取得するため、textではなくfull_textを使用。
echo 'text : '. $response->full_text. PHP_EOL. PHP_EOL;
echo 'length : '. mb_strlen($response->full_text);

実行すれば分かると思いますが、これだけで誰でも280文字投稿が可能です。

ここで注意が必要なのは、140文字オーバーのツイートを投稿する時や取得する時にはパラメーターにtweet_mode=extendedが必要になることです。詳しくは以前書いた以下の記事をどうぞ。

hiroto-k.hatenablog.com

エラーメッセージ

280文字を越してAPIを叩いても、エラーメッセージは140文字を超えている時と同じメッセージが返ってきます。

<?php

try {
    // statusに295文字を使用。
    // 280文字を超えているのでもちろんエラーが返ってきます。
    $response = $client->post('statuses/update', ['status' => '280文字以上のツイートテスト'. rand_str(280), 'tweet_mode' => 'extended', 'weighted_character_count' => true]);

    echo 'text : '. $response->full_text. PHP_EOL. PHP_EOL;
    echo 'length : '. mb_strlen($response->full_text);
} catch (\Exception $e) {
    var_dump($e->getMessage());}
}

実行してみると

Status is over 140 characters.

とエラーが返ります。

© 2015-2017 Hiroto-K