[メモ]プログラムによる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、パスワードをしっかり紐付け&メモしておく必要があるかと思います。

スポンサーリンク

[メモ]apache2.4 crtの設定[覚書]

ご無沙汰してます

今日、はまったことをメモ

COMODOのPositiveSSLワイルドカードを手に入れ、設定し「いやっほーい!」とか思っていたら・・・
※PCではちゃんとバッチグーでした。

スマートフォンでは危険のあるサイトだから危ないよってブラウザに言われていた・・・
1週間近く放置してたorz

で、何で??って思って調べたら・・・

中間CAとか設定してないとだめなのねorz

で次に、調べていくとapache2.2とかだと、
「SSLCertificateFile」とは別に、「SSLCertificateChainFile」 に中間CAとかを1ファイルに書き込み設定する

apache2.4だと「SSLCertificateChainFile」がなくなったらしく、「SSLCertificateFile」にもろもろのcrtファイルを1ファイルに書き込み設定する必要があった。

そういえば書き込む順番とか在ったのかな・・・

今回は適当に、以下のように書き込んで行った。

SSLにしたドメインのcrt

COMODO RSA Domain Validation Secure Server CA

COMODO RSA Certification Authority

ルート

※sslの購入先はssl-storeのCOMODOのPositiveSSLワイルドカード

とりあえず、何事も経験だな・・

スポンサーリンク

[mongo]配列カラム内の連想配列の複数条件一致検索

はまったのでメモ

[{
id:1,
name:"A class",
array_data:[
    {age:17, sex:"f", height:160, wight:40},
    {age:18, sex:"f", height:150, wight:35},
    {age:19, sex:"f", height:170, wight:45}
  ]
},
{
id:2,
name:"B class",
array_data:[
    {age:17, sex:"m", height:160, wight:50},
    {age:18, sex:"m", height:150, wight:55},
    {age:19, sex:"m", height:170, wight:65}
  ]
}
]

上記のようなデータが存在した場合に
array_dataカラムの配列中にage=18 且つ sex=”m”のある行のデータだけ
取得したい場合の書き方を下記に記述します。

db.hoge.find({
  "array_data.age":18,
  "array_data.sex":"m",
  $where: function(){
    var arr = this.array_data;
    for (var i in arr) {
      if (arr[i].age==18 && arr[i].sex == "m"){
        return true;
      }
    }
   return false;
  }
});

結果はid:2の行のみを取得できます。
※$whereのスクリプトを書かないとid:1も対象として取得されます。

また、phpでも上記$where部分を書けば思った通りのデータ行が取得できます。
更にarray_data内の該当行のみを取得する場合は、
プログラムで該当の連想配列行を取得する必要があります。

記憶を辿り書いてしまっているので誤って書いている部分があるかもしれまん、、

スポンサーリンク

[メモ]firefoxのメモリバカ食い[おまじない]

Firefox34にしてからメモリがバカ食いして、既に開いていたタブを表示しようとしたときにハングし、別windowに分離してしまうなどということが発生しまくっていました。

そこで、gigazinさんの記事を見つけ、以下の事がかかれていました。

1. アドレスバーに「about:config」と入力してEnterキーを押す
2. 開いたページ上で右クリックして「新規作成」→「Boolean」をクリック
3. 設定名を「config.trim_on_minimize」として「OK」をクリック
4. 真偽値として「true」を入力して「OK」をクリック
5. Mozillaを再起動する

今のところ、メモリのバカ食いはないみたいですので、メモメモと・・・

スポンサーリンク

[メモ]アニメーションgifのチェック[php]

おひさしぶりです。

タイトルの通り、チェック対象のファイルがアニメーションgifかそうじゃないかのチェックプログラムを・・・

で、とほほさんのGIFフォーマットの詳細を参考にしてみました。

/**
 * アニメーションGIFかチェック
 *
 * @params string $img_file   画像ファイル(画像ファイルまでのPATH付き)
 * @return bool               true:アニメーションGIF false:それ以外
 */
function checkAnimationGif($img_file) {
    if (!file_exists($img_file)) {
        // ファイルが無い
        return false;
    }
    if (!($fp = fopen($img_file, "rb"))) return false;
    $head = fread($fp, 6);
    if (!preg_match("/^GIF89a/", $head)) {
        // GIF89a 以外
        return false;
    }
    // カウント初期化
    $gce_cnt = 0;
    while (!feof($fp)) {
        if (bin2hex(fread($fp, 1)) != "21") continue;
        switch (bin2hex(fread($fp, 2))) {
            /*
            // 2014-11-06 削除
            case "ff0b": // Application Extension
                fclose($fp);
                return true;
                break;
            */
            case "f904": // Graphic Control Extension
                $gce_cnt++;
                if ($gce_cnt > 1) {
                    fclose($fp);
                    unset($gce_cnt);
                    return true;
                }
                break;
        }
    }
    fclose($fp);
    unset($gce_cnt);
    return false;
}

多分これで、チェックできるはず・・・

追記:2014-11-06
adobeのフォトショップで作成されたgifでApplication Extensionが含まれる通常のgifが作成されていることがわかりましたので
上記のソースを修正しました。

スポンサーリンク