チュートリアル
メディアのアップロード
すべてのメディアのアップロードにおいて、メディアアップロードエンドポイントを使う必要があります。画像は単純アップロードエンドポイントを使用して直接アップロードできますが、動画などのメディアタイプはマルチパートのチャンク化アップロードエンドポイントを使用する必要があります。このエンドポイントは、INIT、APPEND、FINALIZEという3つの異なるステップで構成されています。
さらに、additional_ownersパラメーターを呼び出すこともできます。この値は、このメディアの使用を許可されるユーザーIDのリストに設定できます。たとえば、メディアエンティティをあるアカウントにアップロードし、その後にそのエンティティを@furniアカウントで共有するには、additional_ownersパラメーターを3805104374(@furniに対応)に設定します。
単純アップロード
単純アップロードエンドポイントは、画像のアップロードにのみ使用できます。
twurl -X POST -H upload.twitter.com "/1.1/media/upload.json?media_category=TWEET_IMAGE&additional_owners=3805104374" -f adsapi-heirarchy.png -F media
{
"media_id": 931270813906374700,
"media_id_string": "931270813906374657",
"media_key": "3_931270813906374657",
"size": 95294,
"expires_after_secs": 86400,
"image": {
"image_type": "image/png",
"w": 1000,
"h": 600
}
}
こちらでは-fはファイル自体を示し、-Fはファイルフィールドタイプを示しています。
media_id_string値とmedia_key値を使用すると、この画像を任意のツイートオブジェクトまたはカードオブジェクトに添付できます。
チャンク化アップロード
マルチパートのチャンク化アップロードエンドポイントは、その名前が示すとおり、複数のパートで構成されるアップロードプロセスです。このエンドポイントは、再開可能アップロードができるよう設計されています。
たとえば、認証されたユーザーのTwitterアカウントに動画をアップロードし、その同じエンティティを@furniアカウントと共有するような場合です。ただし、まずアップロードされるファイルに含まれる合計バイト数を確認する必要があります。
stat -f%z ~/Desktop/sample-video.mp4
514065
1MB(最大チャンクサイズ)を超えるファイルの場合、次のように複数のチャンクに分割できます。
split -b 5m ~/Desktop/sample-video.mp4
アップロード自体は、次に示すように一連の呼び出しで構成されています。
INIT
twurl -X POST -H upload.twitter.com "/1.1/media/upload.json?additional_owners=3805104374" -d
"command=INIT&media_type=video/mp4&media_category=amplify_video&total_bytes=5678971"
additional_ownersフィールドは@furniユーザーのアカウントIDに設定されます。また、media_categoryを使用すると、アップロードされるメディアの種類をGIF、動画、Amplify動画(またはプレロール動画)のいずれかに設定できます。ユーザーのユーザーIDは、GET users/showエンドポイントから取得できます。
注: 長さが140秒を超える動画をアップロードする場合、または動画をTwitter広告キャンペーンのクリエイティブとして使用する場合は、amplify_videoメディアカテゴリーを使用する必要があります。長い動画をアップロードするには、@ユーザー名を許可リストに追加する必要があります。
{
"media_id": 931263015239934000,
"media_id_string": "931263015239933952",
"expires_after_secs": 86399,
"media_key": "7_931263015239933952"
}
media_id_string値は後続のすべての呼び出しに必要です。
APPEND
ファイルのすべてのチャンク(最大サイズ1MB)がアップロードされるまで、APPENDコマンドを必要な回数呼び出す必要があります。呼び出しごとにsegment_index値を変更する必要があります。
twurl -X POST -H upload.twitter.com "/1.1/media/upload.json" -d "command=APPEND&media_id=931263015239933952&segment_index=0" --file ~/Desktop/sample-video.mp4 --file-field "media"
Twurlには、アップロードされるメディアを指定する-fフラグなどの便利なヘルパーが備わっています。-file-fieldフラグは、アップロードされるファイルがメディアファイルであることを指定するために使用されます。このエンドポイントには応答の本体はありません。ほかのすべてのヘッダーは引き続き利用可能です。
FINALIZE
アップロードプロセスを完了するために必要な最後の呼び出しは次のとおりです。
twurl -X POST -H upload.twitter.com "/1.1/media/upload.json" -d "command=FINALIZE&media_id=931263015239933952"
{
"media_id": 931263015239934000,
"media_id_string": "931263015239933952",
"media_key": "7_931263015239933952",
"size": 514065,
"expires_after_secs": 86400,
"processing_info": {
"state": "pending",
"check_after_secs": 5
}
}
processing_infoフィールドを使用して、ファイルの使用準備ができているかどうかを判断できます。stateが「succeeded」になると、ファイルが使用可能になります。メディアアップロードステータスエンドポイントを使って、アップロードの現在の状態を確認できます。
twurl -t -X GET -H upload.twitter.com "/1.1/media/upload.json?command=STATUS&media_id=931263015239933952"
{
"media_id": 931263015239934000,
"media_id_string": "931263015239933952",
"media_key": "7_931263015239933952",
"size": 514065,
"expires_after_secs": 83510,
"video": {
"video_type": "video/mp4"
},
"processing_info": {
"state": "succeeded",
"progress_percent": 100?
}
}
動画が正常にアップロードされると、media_id_stringまたはmedia_keyを使って、メディアエンティティをツイートまたはカードに関連付けられます。
video_typeをimage/gif、media_categoryをTWEET_GIFに変更するのみで、同じ手順を繰り返してGIFをアップロードできます。
メディアとツイートの関連付け
メディアをアップロードするすべての手順が完了すると、以下のようにメディアエンティティをツイートに添付できます。
twurl "/1.1/statuses/update.json" -d "media_ids= 931263015239933952&text=Sample Tweet with media_ids and twurl"
また、サポートされるファイル形式などの詳細については、メディアのベストプラクティスガイドを参照してください。
ソリューション作成の準備が整った方は