メイン

Zorg アーカイブ

2007年12月24日

Zorgから自分のフォトを取得する

Zorgは、いくつかの機能をAPIで提供している。

Zorg API

zorg.photos.getPhotosをつかえば、自分がこれまでに投稿した一覧を取得できる。
この説明ページの一番下に、クイックスタートがあるので、それをブラウザのURLにコピペしてみれば
XMLレスポンスでフォト一覧を受け取ることができる。

ここからXMLパースして必要な情報を抜き出す。

TAG TYPE VALUE
total_items [INT] 該当フォト全件数
TAG TYPE VALUE
photo_id [STRING] 他のメソッドなどで使用する、エンコードされたZorgフォトID
title [STRING] フォトのタイトル
posted_date [INT] アップロードタイムスタンプ(UNIX TIME形式)
taken_date [INT] 撮影タイムスタンプ(UNIX TIME形式)
images_view [STRING] ビューサイズフォト(一辺480ピクセル)のURL
images_thumbnail [STRING] サムネイルサイズフォト(一辺150ピクセル)のURL
images_square [STRING] スクエアサイズフォト(100ピクセルx100ピクセル 正方形)のURL
images_minimum [STRING] ミニマムサイズフォト(40ピクセルx40ピクセル 正方形)のURL

ここで、上記テーブルを挿入したら、テーブルの直前に大量の余白ができてしまった。
エントリーのオプションで「改行設定」が「改行を変換する」になっている場合、
table タグに含まれる改行が、すべて改行タグに変換されてしまい、
その改行が table タグの直前ですべて吐き出されてしまうためです。

ということでテーブルTAG記述中の改行を全部取り除いてからペーストしてみる。
s/\n//gで取り除いてみたら、大量の空白はなくなった。
しかし、あとからこのテーブルを編集するのはちと厳しい。
もう少し、エレガントな方法を検討する必要がある。

話がそれてしまったが・・・・

取得した情報からエントリをどのように作成するか決めてしまう。

・[title]をそのままエントリのタイトルに利用する。
・エントリに掲載する内容

  <a href="フォトページへのリンク"><mg src="ビューサイズフォトへのURL[images_view]" ></a>

・フォトページへのリンクは、
  http://www.zorg.com/pub/photod?pid=[photo_id]

・エントリの投稿日時は、撮影タイムスタンプ[taken_date]とする。

続きを読む "Zorgから自分のフォトを取得する" »

Zorg API [zorg.photos.getPhotos]

ようやく辿り着いたが、zorg.photos.getPhotosのレスポンスから必要な情報を取得する。

まずは、PHPのソースをどうぞ。

1回のリクエストでは50件づつ返すので、リクエストを繰り返して、欲しいところを抜き出すこと。
その際、リクエストのパラメータに開始番号(start)が必要になる。

ちなみに、最後に投稿したフォトが1番となり、一番古いのが最後となる。
あと、公開していないフォトは除外されて出てこないので、総数からもはずされている。

これで、すべての情報が整った。

りんたろう




Zorg投稿日時 : 2007/12/23 21:40 撮影日時 : 2007/12/23 21:28

ページ指定で、50枚づつゲットするPHPを作った。その中の1枚を貼り付ければ、上記のようなスタイルで表示されることになる。
しかし、XML_RPCでのMovable Typeへの書き込みがなかなかうまくいかず。これは次回へ延期。

2007年12月25日

XML_RPCにて自動登録が成功だ!

XML_RPCにて自動登録実施中


長い道のりであった。わかってしまえば詰まらん理由ではあるが、 皆のためにまとめておこう。

その前に、
カテゴリーのセット
タグのセット
もやってしまおう。

続きを読む "XML_RPCにて自動登録が成功だ!" »

2007年12月26日

Zorgフォト一覧からMTエントリの登録(総集編)

Zorgのzorg.photos.getPhotosは、指定した番号のフォトから50枚の情報を返す。
したがって、4000枚だから80回GETする必要がある。
これをWEBアプリとして動かすのは、危険なので、以下のような仕組みにした。


■get_zorg.php
引数で開始番号を与え、zorg.photos.getPhotosでその開始番号から50件のみ取得し、
1件1行で出力。
フォーマットは、フォトID,タイトル,ViewサイズのURL,投稿日時,撮影日時
カンマ区切りで出力

■ex.sh
get_zorg.phpを起動して、結果をファイルmy_photo.txtへリダイレクト
ループで、4000になるまで、+50づつ。

データ行以外に、HTMLタグが出力してしまっているので
それを取り除く。幸い先頭がフォトIDで、iから始まっているので、iではじまらない行は除外。

% grep ^i my_photo.txt > my_photo_result.txt

これでフォト一覧ファイルができあがり。
このファイルをよみながら、XML_RPCでMovable Typeへ書き込みを行うプログラムを作成した。

ファイルから読み込んだ内容をMovable TypeへXML_RPCで書き登録するPHP

今回、行った問題点を整理しておく。


最初のミステイクは、
$client = new XML_RPC_client( $path, $host, 80 );

$client = new XML_RPC_client( $host, $path, 80 );
としちまった。ホスト、パスという順番だろうという思い込み。
メソッド定義をよみましょう。

XML_RPC_Messagenのメソッドで、記事を投稿するメソッドには、
blogger.newPost
metaWeblog.newPost
の2つがあり、最初blogger.newPostを試した。
こちらはすんなりと成功した。
それもそのはず、引数すくない。
まず、タイトルがない。というか本文の先頭10文字が勝手にタイトルになる。
なんじゃ、この仕様は?記事本文しか登録できない。

で、次にmetaWeblog.newPost
こちらは、ほぼすべての項目の登録が可能。
しかし、嵌った。

投稿日時がまずかった。
//"dateCreated" => new XML_RPC_Value('2007-12-25', "ISO.8601")
これでいけると疑わず、最後までほかをチェックしていたら
'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
正しくは、こちらであった。

About Zorg

ブログ「iPLUSONE Blog」のカテゴリ「Zorg」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはWEBです。

次のカテゴリはオープンソースです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34