[自作]ハイフンなし電話番号をハイフン付き電話番号として返すAPI[なんとなく]

おひさです。
久しぶりの投稿です。

何気に、電話番号をハイフン無しで登録することが多くなってきている昨今なんですが、
環境によっては市外局番、市内局番、加入者番号の3つに分けて登録しなければいけないことがあるんですよね・・・

そんな時に、便利なAPIを自作してみました。デモで動きは確認できます。
とりあえず、固定電話と携帯電話のみの対応となります。
デモ

現状ではエラーとか何それ?です・・・

スポンサーリンク

[メモ]twitter REST API による動画付きツイートの仕方[動画]

おはこんばんちは
ご無沙汰しております。

twitterで動画のツイートを見かけてはや数か月・・・
APIで投稿はできないのかなぁ~と久しぶりにAPIのドキュメントを眺めてみました。

とりあえず、項目としてvideoの投稿ができるようになったというのを見つけて実際に動画投稿を行ってみました。
以下のアドレスで投稿の仕方とか、動画の形式とかサイズとか書かれているので見てみてください。

https://dev.twitter.com/rest/reference/post/media/upload-chunked
https://dev.twitter.com/rest/public/uploading-media

見るの面倒な人用に以下

動画形式 mp4
動画の容量 最大15MB
アスペクト比 1:3~3:1
※twitterの公式アプリではたぶん640×640
動画の時間 0.5~30秒
Video Bitrate 2048K 1280×780の場合
Audio Bitrate 128K 1280×780の場合
//エンドポイント
$url = 'https://upload.twitter.com/1.1/media/upload.json';

1.INIT postするデータのファイルサイズを送りそのidを取得

//動画ファイル
$video_file = "/tmp/test.mp4";
//投稿データ command、media_type、total_bytes
$post_data = array(
  'command'=>'INIT',
  'media_type' => 'video/mp4',//動画の場合video/mp4固定(mp4のみ対応の為)
  'total_bytes' => filesize($video_file),//動画のファイルサイズ
);
//データをPOST
$res = [twiterへデータをPOST];
/* 返り値は以下のようなjson形式で返されます。
{
  "media_id": 601413451156586496,
  "media_id_string": "601413451156586496",
  "expires_after_secs": 3599
}
*/

2.APPEND postする実際のデータを送る
5MB以上15MB以下の場合、データを5MBずつ送信する

// 1で取得したmedia_id_stringを使用
$res = json_decode($res, true);
$media_id_string = $res['media_id_string'];
// 動画ファイルのデータを読み込む
$file_data = file_get_contents($video_file);
// 5MB以上の場合この値がPOSTする度増加
$segment_index = 0;
// 読み込んだデータの長さ
$len = strlen($file_data);
// ファイルサイズを分割するサイズ
$chank = 5 * 1024 * 1024;

// $file_dataがなくなるまで回す
while(strlen($file_data) > 0){
  if($len/$chank>0){
    $buf = substr($file_data, 0,$chank);
    $file_data = substr($file_data, $chank);
    $len = $len - $chank;
  } else {
    $buf = $file_data;
    $file_data = "";
    $len = 0;
  }
  //POSTデータ作成
  $post_data = array(
      'command'=>'APPEND',
      'media_data' => base64_encode($buf),
      'media_id' => $media_id_string,
      'segment_index' => $segment_index,
  );
  $res =  [twiterへデータをPOST];
  $res = json_decode($res, true);
  // エラーの場合処理終了(成功している場合はなにも返り値がない)
  if (isset($res['errors'])) {
    exit;
  }
  $segment_index++;
}

3.FINALIZE postした実際のデータが終わったことを伝える

$post_data = array(
  'command'=>'FINALIZE',
  'media_id' => $media_id_string,
);
$res = [twiterへデータをPOST];
$res = json_decode($res, true);
/* 成功した場合、以下の様な内容のjsonが返ってきます。
{
  "media_id":628618021481787392,
  "media_id_string":"628618021481787392",
  "size":4583156,
  "expires_after_secs":3600,
  "video":{
    "video_type":"video\/mp4"
  }
}
*/

4.media_ids付でツイート

$url = "https://api.twitter.com/1.1/statuses/update.json";
$dat = array(
  'status'  => [ツイート内容],
  'media_ids' => $media_id_string,
);
$res = [twiterへデータをPOST];
$res = json_decode($res, true);

※成功すればツイート内容が返って来ます。

以上で動画の投稿が一応出来ました。

※本当はバイナリでデータをそのまま送りたいのだが、バイナリをそのままおくるとクジラ的なエラーが返ってきてしまう始末・・・

ふぅ~なかなか今回は疲れました、、

スポンサーリンク

[メモ]プログラムによるinstagramへの写真投稿[API]

久しぶりの投稿です・・・

instagramに写真をuploadさせるやり方をグーグル先生に聞いて回ったところ

プログラムで投稿している人が居るではないですか!

その人のプログラムは基本的に、instagramのアカウントを持っていないと投稿することが出来ないみたいです。(なんでもそうか・・、※プログラム自体にIDとパスワードが必要になる感じなのがちょっといただけない感じです。本来であれば、アクセストークンなどを使用してuploadできるのが望ましいんですが・・)

投稿する画像のサイズは良く分からないですが、正方形でないとエラーになるようです。(他のブログを読んでいると縦横640px、サイズ500k以内的なことも書かれていた)

比率がおかしい場合のエラー時の戻り値

Array
(
    [0] => 400
    [1] => {"status":"fail","message":"Uploaded image isn't square"}
)

成功時の戻り値

Array
(
    [0] => 200
    [1] => {"status":"ok","media_id":"987765809705141669_15359112"}
)

尚、APIとしてのinstagramからの提供はないみたいですので、いつ変更されるかわからない感じです。

※instagramのデベロッパーサイト
https://instagram.com/developer/clients/manage/

※今回見つけたサイト
http://stackoverflow.com/questions/18844706/how-to-post-pictures-to-instagram-using-api
↑からの本家http://lancenewman.me/posting-a-photo-to-instagram-without-a-phone/

元記事のソースをそのまま(少しは修正)使用するだけで投稿は出来ました。

感想としては、上記投稿と他API提供されている機能などを盛り込みつつ自分なりのアプリを作ると面白いかもしれません。

最後に要注意なのは、上記プログラムから投稿するのはいいが、削除はスマートフォンのアプリからしか現在削除できないこと。
なのでこのプログラムを試す前には、アプリとID、パスワードをしっかり紐付け&メモしておく必要があるかと思います。

スポンサーリンク

[メモ]ページにきたメッセージの取得と返信[facebook]

ちょー久しぶりの更新ですです。

↓こちらにかいてあることをメモメモです。
https://developers.facebook.com/docs/reference/api/page/

Facebookページに対してメッセージが来た場合に、そのメッセージを取得するには
『/page_id/conversations』で取得できますです。

※permissionは「read_page_mailboxes」が必要ですです。

返信する場合は
POSTメソッドで『/CONVERSATION_ID/messages』

パラメータは「message」でよろしいらしい。
あとはいつものアクセストークンとかつければいいのかな。

※CONVERSATION_IDはメッセージを取得した際の、idで「t_id.~」のようですです。まだ確かめてないよ・・・
 responseは、id(「m_id.~」)が返ってくるらしいよ

ということで、後でやってみるためのメモですた。

スポンサーリンク