Asterisk - アスタリスク -

説明するほどでもないブログ

【PHP】Dropbox API を試してみた

どうも。

Heroku で PHP + Nginx な環境を構築。ニコニコ動画RSSフィードDropbox に保存してみました。
簡単に説明すると・・・URL 叩いたら DropboxXML ファイルが保存されますよって話です。

で、「コード読んだけど Access Token の取得はどうすんの?」って思われる人がいるかも知れませんが・・・
御免なさい、git コマンドも初めて使いましたので git rm ~ とかコマンド叩いたら消えました。まさか物理的に消えるとは思ってませんでしたw

そう言うわけで今回の記事は Access Token 取得後の話になります。


ディレクトリ構造
dropbox-sdk/
├── index.php
├── lib
│   └── Dropbox
└── main
    └── upload.php


upload.php
<?php

    # Include the Dropbox SDK libraries
    require_once "../lib/Dropbox/autoload.php";

    use \Dropbox as dbx;

    $json = '{"key": "xxxxx","secret": "xxxxx","access_type": "xxxxx"}';

    $appInfo     = null;
    $dbxConfig   = null;
    $accessToken = null;
    $client      = null;

    try {

        $jsonArr = json_decode($json, true);
        $appInfo = dbx\AppInfo::loadFromJson($jsonArr);

        $dbxConfig = new dbx\Config($appInfo, "PHP-Example/1.0");

        $accessToken = new dbx\AccessToken("xxxxx", "xxxxx");

        $client = new dbx\Client($dbxConfig, $accessToken);

        # nico_daily_ranking_yyyymmdd.xml
        $file_name = '/Rss/nico_daily_ranking_'.date("Ymd").'.xml';

        # VOCALOID 24時間 再生ランキング
        $data = file_get_contents('http://www.nicovideo.jp/ranking/view/daily/vocaloid?rss=2.0&lang=ja-jp');

        $client->uploadFileFromString($file_name, dbx\WriteMode::add(), $data);

    } catch (Exception $e) {

        echo $e->getMessage();

    }

    unset($appInfo);
    unset($dbxConfig);
    unset($accessToken);
    unset($client);

?>


Heroku にデプロイする

参考 : Heroku上に最新のPHP5.4 + nginx環境を30秒で構築する - へびにっき

$ git init
$ git add .
$ git commit -m "first commit"
$ heroku create -s cedar -b git://github.com/iphoting/heroku-buildpack-php-tyler.git [アプリ名]
$ git push heroku master


結果

予定通り URL 叩いたら XML ファイルが保存されました。
連続で叩くと hoge(2).xml みたいに勝手にリネームして保存されました。


何故こんなプログラム作ったの?

そもそも私はニコニコ動画を利用してません。が、ボーカロイドは興味がある。ただそれだけです。
ランキングをグラフにしてみれたら面白いかな?ってのが始まりです。
まぁ、既に色々なサービスやらサイトがある中で今更な感じが凄くしますがね・・・。


因みに、DropboxAPI を叩くライブラリは幾つか発見できたのですが、上手く動作しなかった。あるものは Heroku が PostgreSQL なのでコアを書き換えて対応させて動作させてみたが見事にこけた・・・。


以上です。