YouTube API

2007/04/10 | XML

最近はXML-RPCというか、マッシュアップというか、Web2.0というか・・・。いまどきのサイトを作ることにはまっている。既存のAPIを使ったり、APIを自作したり。
一からサイトを作るわけではないので非常にお手軽簡単で、後は見せ方だけのような勝負になっている。ちょっと他力本願的で「すばらしい」ということはないのだが、何とかコレに自分なりのコンテンツを加えれば、比較的いいサイトになるのでは?、と思ったりもしている今日この頃。

YouTube利用登録その1さて本題。YouTubeもAPIを提供し、自サイト内のビデオを検索できるようになっている。これもおさえておきたいAPIの一つだ。今回はAPIを利用するための準備段階をメモしておく。

(1) ユーザ登録をする
まずユーザ登録が必要。特別な開発者向けユーザ登録ではなく、一般ユーザ(動画をアップロードする)としての登録をする必要がある。右の画面イメージの赤枠で囲んだあたりからSign Upする。登録後、確認メールが送られてくるので、記載されたURLをクリックして登録が完了する。
YouTube利用登録その2
(2) 開発者向け登録をする
(1)の手順から登録し、ログインすると、同じく(1)の画像の赤枠のあたりにMy Accountというのが出るので、ここをクリックすると左の画面になる。
ここで赤枠内にDeveloper Profileというリンクはあるので、ここから開発者IDを取得する。

ここまでの手順で準備は完了する。YouTubeはXML-RPCだけでなくRESTも使えるので、非常に簡単にAPIを使用することができる。使用例についてはまた後日メモすることにする。

AmazonウェブサービスのResponseGroup

Amazon Web Serviceでデータを取得する際に指定する「ResponseGroup」。何があるかいつも検索しないといけないので、リストにしておくことにした。

Accessories アクセサリー情報。
BrowseNodeInfo ブラウズノードの情報。
BrowseNodes ブラウズノード。
Cart CartId、HMAC、PurchaseURL等リモートカート用の情報。
CartSimilarities カート内の商品と関連のある商品の情報。
CustomerFull ResponseGroupのセット。
CustomerInfo 特定の顧客情報。
CustomerLists 特定の顧客情報。
CustomerReviews 特定の顧客によるレビューの情報。
EditorialReview Amazon.co.jpからの商品紹介情報。
Help リクエストしたOperationとResponseGroupsの情報。
Images 商品画像の情報。Small,Medium,Largeの3つがある。
ItemAttributes 各商品に付随する情報(タイトルや商品のサイズ、発売日等)。
ItemIds ASINコード。
Large ResponseGroupのセット。
ListFull ResponseGroupのセット。
ListInfo リストの情報。
ListItems リストの入っている商品の情報。
ListmaniaLists リストマニアのリスト情報。
ListMinimum ListId。
Medium ResponseGroupのセット。
OfferFull Offersと出品者のニックネーム+Location等の情報。
Offers OfferSummaryとその出品商品の情報。
OfferSummary 出品者リスト数とその最低価格の情報。
Request リクエストした内容の情報。
Reviews 顧客レビューのリスト、ランク、レビューの数。
SalesRank SalesRankの情報。
Seller 出品者の情報。
SellerListing マーケットプレイスでのリスト情報。
Similarities 関連商品の情報。
Small ResponseGroupのセット。
Subjects 書籍の名称の情報。
Tracks CDのタイトルと曲名の情報。
TransactionDetails アマゾンの取引に関する情報。
VariationMinimum 子ASINコードの情報。
Variations ResponseGroupのセット。
VariationImages 子ASINコードの画像の情報。
VariationSummary 子ASINコードの価格の情報。

複数のテーブルを使う

2007/04/02 | cakePHP

cakePHPで、あるコントローラーから、互いに関連しない(associationがない)複数のテーブルを使用する方法(トップページとか、いろんな情報を見出し的に表示するような場合)。

使用するテーブルについてはモデルをあらかじめ作成しておく。
コントローラー内で、使用したいモデルを以下のように列挙する(未検証)。

$uses=array(‘model1′,’model2’…….);

他のシステムと連携させるために

2007/04/01 | cakePHP

cakePHPを別のブログシステムと連携させるところで再びはまる。
ブログシステムで設定した認証が引き継げない。認証の状態はセッションに持たせているわけだからセッションが引き継げていないことになる。
実際、スクリプト中で「var_dump($_SESSION);」などとしても、ブログ側とcakePHP側では異なるものが出力された。何故???。

30分くらい悩んでようやく理由がわかった。「セッションが引き継げていない」(いや、それはそうなんだけどさ)。

セッションが引き継げない時にやってみることを考えてみた。
(1) 手動で「?PHPSESSID=」などとURLに付加して試してみる。
これはNGだった。

(2) セッションの保存場所を確認してみる。
どちらも「/tmp」だった。

(3) セッション名が違う???。
これが正解でした。そもそもフレームワークでもブログシステムでも、そこそこの仕組みになってくるとセッション名を自前で設定していることが多いっぽい。そこには注意がいかなかった。

cakePHPでは以下のファイルでセッション名を設定できるみたい。
app/config/core.php

ここでdefine(‘CAKE_SESSION_COOKIE’,’CAKEPHP’);の記述を書き換えることで、無事セッションが引き継げるようになった。よかった、よかった。久しぶりに基本的なところで悩んでしまったよ。

redirectのバグ?仕様?

2007/03/31 | cakePHP

認証機能の続き。

現在cakePHPと別のブログシステムとを連携してプログラムを書いている。ブログそのものに認証機能を実装して(会員専用ページのような感じ)、会員管理をcakePHPで実装した。ログインの状態はセッションで持ち回り、ログイン画面の表示はブログ側で実装してある。
ここでcakePHPでセッションの状態を確認し、ログインが確認できなかったらブログのトップページ(認証が必要)へリダイレクトする処理を実装しようと考えた(が、ここではまった)。
cakePHPのコントローラーにはredirectメソッドが用意されている。このメソッドもちょっと曲者でリダイレクト後にexitしてない、ってことでウェブ上には多くの不満の声がある。
そこはそもそも注意していたのだが・・・このリダイレクトメソッド、外部のURLには遷移できない。cakePHPのルートディレクトリ以下でしか動作しないっぽい。なくなくソースを読んでみたけど、redirectメソッドの最後のほうはこんな記述。

header(‘Location: ‘ . FULL_BASE_URL . $url);

絶対外には出れないよ。contoroller.phpを見渡してみたけど、他に遷移できそうなメソッドが見当たらない・・・。外には出れないわけね。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net