【PHP】Dropbox API を試してみた
どうも。
Heroku で PHP + Nginx な環境を構築。ニコニコ動画のRSSフィードを Dropbox に保存してみました。
簡単に説明すると・・・URL 叩いたら Dropbox に XML ファイルが保存されますよって話です。
で、「コード読んだけど 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
何故こんなプログラム作ったの?
そもそも私はニコニコ動画を利用してません。が、ボーカロイドは興味がある。ただそれだけです。
ランキングをグラフにしてみれたら面白いかな?ってのが始まりです。
まぁ、既に色々なサービスやらサイトがある中で今更な感じが凄くしますがね・・・。
因みに、Dropbox の API を叩くライブラリは幾つか発見できたのですが、上手く動作しなかった。あるものは Heroku が PostgreSQL なのでコアを書き換えて対応させて動作させてみたが見事にこけた・・・。
以上です。