Changes between Version 18 and Version 19 of PyAmazon


Ignore:
Timestamp:
06/18/06 13:22:53 (18 years ago)
Author:
atzm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PyAmazon

    v18 v19  
    99以下は amazon.co.jp から「のだめ」を検索した結果を適当に出力する例. 
    1010 
    11 検索キーワードには UTF-8 文字列 ('''unicode オブジェクトではない''') を指定してやる必要がある. 
     11検索キーワードには UTF-8 文字列 ('''{{{unicode}}} オブジェクトではない''') を指定してやる必要がある. 
    1212 
    13 そのくせ,'''返ってくる値は unicode オブジェクト'''なので注意 (以下の例だと val が相当). 
     13そのくせ,'''返ってくる値は {{{unicode}}} オブジェクト'''なので注意 (以下の例だと {{{val}}} が相当). 
    1414 
    1515{{{ 
     
    3333}}} 
    3434 
    35 == searchByKeyword の罠 == 
    36 searchByKeyword 関数で,あるカテゴリの中から検索することができる. 
     35== {{{searchByKeyword}}} の罠 == 
     36{{{searchByKeyword}}} 関数で,あるカテゴリの中から検索することができる. 
    3737 
    38  * しかし,searchByBlended と違って data をそのまま返さずに data.Details を返しやがる (amazon.py の 312 行目を参照) ので,searchByKeyword を使うと,'''!TotalPages や !TotalResults を得ることができない'''. 
    39  * さらに,searchByKeyword の引数に,デフォルトで product_line="books" というのが入っているが,ロケールを jp にした場合はこれだと正しく検索できない.jp ロケールで有効な product_line は以下の通り (たぶん). 
    40 ||books-jp||和書|| 
    41 ||books-us||洋書|| 
    42 ||music-jp||ポピュラー音楽|| 
    43 ||classical-jp||クラシック音楽|| 
    44 ||dvd-jp||DVD|| 
    45 ||vhs-jp||ビデオ|| 
    46 ||electronics-jp||エレクトロニクス|| 
    47 ||kitchen-jp||ホーム&キッチン|| 
    48 ||software-jp||ソフトウェア|| 
    49 ||videogames-jp||ゲーム|| 
    50 ||magazines-jp||雑誌|| 
    51 ||toys-jp||おもちゃ&ホビー|| 
    52 ||photo-jp||?|| 
    53 ||pc-hardware-jp||?|| 
     38 * しかし,{{{searchByBlended}}} と違って {{{data}}} をそのまま返さずに {{{data.Details}}} を返しやがる (amazon.py の 312 行目を参照) ので,{{{searchByKeyword}}} を使うと,'''{{{TotalPages}}} や {{{TotalResults}}} を得ることができない'''. 
     39 * さらに,{{{searchByKeyword}}} の引数に,デフォルトで {{{product_line="books"}}} というのが入っているが,ロケールを jp にした場合はこれだと正しく検索できない.jp ロケールで有効な {{{product_line}}} は以下の通り (たぶん). 
     40||'''モード'''||'''内容'''||'''モード'''||'''内容'''|| 
     41||{{{books-jp}}}||和書||{{{books-us}}}||洋書|| 
     42||{{{music-jp}}}||ポピュラー音楽||{{{classical-jp}}}||クラシック音楽|| 
     43||{{{dvd-jp}}}||DVD||{{{vhs-jp}}}||ビデオ|| 
     44||{{{electronics-jp}}}||エレクトロニクス||{{{kitchen-jp}}}||ホーム&キッチン|| 
     45||{{{software-jp}}}||ソフトウェア||{{{videogames-jp}}}||ゲーム|| 
     46||{{{magazines-jp}}}||雑誌||{{{toys-jp}}}||おもちゃ&ホビー|| 
     47||{{{photo-jp}}}||?||{{{pc-hardware-jp}}}||?|| 
    5448 
    55 == searchByBlended の罠 == 
    56 searchByBlended 関数は amazon に対して全体検索をかけることが可能. 
     49== {{{searchByBlended}}} の罠 == 
     50{{{searchByBlended}}} 関数は Amazon に対して全体検索をかけることが可能. 
    5751 
    58 searchByKeywords のように,この関数にも引数に page というのがあるが,'''ページ指定はできない'''.何のための引数なのか,かなり謎. 
     52{{{searchByKeyword}}} のように,この関数にも引数に {{{page}}} というのがあるが,'''ページ指定はできない'''.何のための引数なのか,かなり謎. 
    5953 
    60 もっとも,Blend の場合にページ指定ができないのは Amazon API 側の仕様のようだが. 
     54もっとも,{{{searchByBlended}}} の場合にページ指定ができないのは Amazon API 側の仕様のようだが. 
    6155 
    6256== データの整合性 == 
    6357=== 属性の有無 === 
    64 PyAmazon は内部で Amazon API の XML を呼び出して xml.dom.minidom で解析した後,unmarshal という関数で階層構造に沿ってオブジェクトを作っている.そのため,XML の構造がそのまま Python のオブジェクトに継承されている. 
     58PyAmazon は内部で Amazon API の XML を呼び出して xml.dom.minidom で解析した後,{{{unmarshal}}} という関数で階層構造に沿ってオブジェクトを作っている.そのため,XML の構造がそのまま Python のオブジェクトに継承されている. 
    6559 
    6660そのせいか,結果によってあったりなかったりする属性があるので,適切なエラー処理を書く必要がある. 
     
    7670 
    7771ちなみに,pydoc に書いてある,属性として含む可能性のあるものは以下の通り. 
    78 が,ここにリストされていない属性も多々ある (Artists など). 
    7972 
    8073||'''属性名'''||'''内容'''||'''属性名'''||'''内容'''||'''属性名'''||'''内容'''|| 
    81 ||Asin||Amazon の ID||Authors||著者リスト||Availability||「○日以内に発送」など|| 
    82 ||BrowseList||関連のあるカテゴリのリスト||Catalog||カタログのタイプ (Book など)||CollectiblePrice||価格?|| 
    83 ||ImageUrlLarge||画像 URL||ImageUrlMedium||画像 URL||ImageUrlSmall||画像 URL|| 
    84 ||Isbn||ISBN 番号||ListPrice||価格?||Lists||?|| 
    85 ||Manufacturer||出版社||Media||メディア(「音楽CD」など)||NumMedia||メディアの数(CD何枚,など)|| 
    86 ||OurPrice||Amazon での価格||ProductName||アイテムの名前||ReleaseDate||リリース日|| 
    87 ||Reviews||レビュー||SalesRank||順位||SimilarProducts||関連のあるアイテムのリスト|| 
    88 ||ThirdPartyNewPrice||価格?||URL||Amazon の URL|||||| 
     74||{{{Asin}}}||Amazon の ID||{{{Authors}}}||著者リスト||{{{Availability}}}||「○日以内に発送」など|| 
     75||{{{BrowseList}}}||関連のあるカテゴリのリスト||{{{Catalog}}}||カタログのタイプ (Book など)||{{{CollectiblePrice}}}||価格?|| 
     76||{{{ImageUrlLarge}}}||画像 URL||{{{ImageUrlMedium}}}||画像 URL||{{{ImageUrlSmall}}}||画像 URL|| 
     77||{{{Isbn}}}||ISBN 番号||{{{ListPrice}}}||価格?||{{{Lists}}}||?|| 
     78||{{{Manufacturer}}}||出版社||{{{Media}}}||メディア(「音楽CD」など)||{{{NumMedia}}}||メディアの数(CD何枚,など)|| 
     79||{{{OurPrice}}}||Amazon での価格||{{{ProductName}}}||アイテムの名前||{{{ReleaseDate}}}||リリース日|| 
     80||{{{Reviews}}}||レビュー||{{{SalesRank}}}||順位||{{{SimilarProducts}}}||関連のあるアイテムのリスト|| 
     81||{{{ThirdPartyNewPrice}}}||価格?||{{{URL}}}||Amazon の URL|||||| 
     82 
     83が,以上にリストされていない属性も多々あるので以下に少し補足しておく. 
     84 
     85||'''属性名'''||'''内容'''||'''属性名'''||'''内容'''|| 
     86||{{{ProductDescription}}}||商品の説明||{{{Artists}}}||アーティスト名 (Authors とは別)|| 
     87 
    8988 
    9089=== 型の整合性 === 
    91 たとえば Artists.Artist の中身が list になったり str になったりする.ちゃんと処理してやらないとハマる. 
     90たとえば {{{Artists.Artist}}} の中身が list になったり str になったりする.ちゃんと処理してやらないとハマる. 
    9291 
    9392{{{