このブログは高島法律事務所の弁護士 野田隼人(滋賀弁護士会)が主に弁護士その他法律関係者向けに色々なことを書いてます。

当事務所へのご相談・ご依頼をご検討中の方は,高島法律事務所の事務所ホームページをご参照下さい。

「10日で覚えるPython入門教室」に取り組む日曜日の午後。

第3日1時限目で停滞。
原因はAmazonAPIの仕様変更。
従来のアクセス方法では,APIを呼ぶことができず,従前のパラメータにSignatureとTimestampを付す必要がある。

ざっと検索してみたけれど,躓きの石状態で直接の解決策未発見。
仕方ないので,本に載っているコードを書き直し。

#! /usr/bin/env python
# coding:utf-8

import base64
import hashlib
import hmac
import urllib

from datetime import datetime
from xml.etree.ElementTree import ElementTree

# Amazon Product Advertising API Version.
# see http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=17
api_version = "2009-11-01"

def main(url):
    node_uri = "{http://webservices.amazon.com/AWSECommerceService/" + api_version + "}"

    xmlfile = urllib.urlopen(url)
    tree = ElementTree(file = xmlfile)
    root = tree.getroot()

    for node in root.getchildren():
        if node.tag == node_uri + "Items":
            for subnode in node.getchildren():
                if subnode.tag == node_uri +"TotalResults":
                    print subnode.text
                elif subnode.tag == node_uri +"Item":
                    for item in subnode:
                        if item.tag == node_uri +"ASIN":
                            print item.text

if __name__ == "__main__":
    amazon_api_url = "http://ecs.amazonaws.jp/onca/xml?"

    #Your Amazon API secret key.
    SecretKey = "★★★"

    # initialize Dictionary
    params = {}

    params["Service"] = "AWSECommerceService"
    params["Operation"] = "ItemSearch"
    params["Version"] = api_version
    params["AWSAccessKeyId"] = "★★★" #YOUR AWS Access Key Id
    params["SearchIndex"] = "Books"
    params["Keywords"] = "Python"

    #Amazon Product Advertising API requires a timestamp and a signature
    #see http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
    #see http://www.python.jp/doc/2.5/lib/module-datetime.html
    params["Timestamp"] = datetime.utcnow().isoformat()

    #creating the string to sign
    string = string_base = "GET\necs.amazonaws.jp\n/onca/xml\n"
    for k,v in sorted(params.items()):
        if string <> string_base:
            string = string + '&'
        string = string + k + '=' + urllib.quote(v)

    #calculate HMAC with the SHA256 hash with using Secret Key
    string = hmac.new(SecretKey, string, hashlib.sha256).digest()
    signature = base64.b64encode(string)

    url = amazon_api_url
    for k,v in sorted(params.items()):
        url = url + k + '=' + v + '&'
    url = url + 'Signature=' + urllib.quote(signature)

    main(url)

URLの作り方など,もっと簡単にできそうだけれども,Amazonの仕様説明に忠実な処理で作成してみました。

<同じ問題で困ったと思われる方々>
Amazon API仕様変更してて使えない(-_-)『10日でおぼえるPython入門教室』第3日 メモ
Python再び・・・・ハッシュを辞書と読んでるんですねぇー
TwitterAPI
Pythonのお勉強~三日目(Web API編①)
http://twitter.com/t2enonu/status/5621601942

翔泳社さん,ここだけでも早めに改定した方が良いですよ。
良い本なのですから。

某事件の関係者に薦められて,任天堂DSのホラー・アクションゲーム「ナナシ ノ ゲエム」に挑戦中。

割とチープな作りながら,非常に怖い。
ヘッドフォンをつけて部屋を暗くしてプレイするのがお薦めです。

事件の都合上,3日程度でクリアしなければならないため,攻略情報を参照しながらプレイしています。

アトヨッカの中野ブロードウェイセンター 3階店内の攻略情報がどこにもなかったので,簡単に作成。

ナナシ ノ ゲエム アトヨッカ 3F 店内 ルグレ移動図

赤い線がルグレの移動ルート。
巡回型で,近づかない限り危険のないタイプのルグレです。
右下をスタートして,ルグレを避けながら,右上の出口にたどり着けばOK。

一番,奥の本棚,右側は通過できないので注意。

弁護士業をしていると,急いで電話をしなければならない状況というのがしばしば発生するわけですが,私の場合,自宅・事務所が1時間近く離れているという点がネックになります。

携帯電話からかけても良いのですが,電話番号を相手に知られることになりますし,それはそれで困ったことになることもあります。
依頼者からの電話は良いとしても,相手方から頻繁に電話がかかってくるようなことになると困るわけです。

また,携帯電話による通話は,1分21円がかかります(ソフトバンク Wホワイト利用)。

そこで,どこにいても携帯電話ではない番号で安価に電話をかける方法として,Skypeを導入しました。

インターネットに繋がっていれば,どこからでも専用の050番号(IP電話番号)で電話を発信できるようになりました。
インターネットに繋がっていない時間は,ボイスメール(留守番電話)になります。
Wifiがあれば,iPhoneからのSkype発信も可能です。

費用については,後述しますが,月1008円で【固定】電話を持ち歩いているのと,ほぼ同じ状態になります。

携帯電話番号秘匿や通話料以外にもメリットがあるのですが,それはまた後日。

【Skypeについて】

Skype(スカイプ)とは、ルクセンブルクに籍を置くSkype Technologies社が提供するP2P技術を利用したインターネット電話サービス。

(Wikipedia http://ja.wikipedia.org/wiki/Skype)

PCに専用ソフトをインストールすることで,文字チャットができるようになります。
さらに,ヘッドセットを接続することで,音声通話ができるようになります。
さらにさらに,Webカメラを接続することで,テレビ電話の利用ができるようになります。

通話料はSkype同士は無料。

日本国内固定電話で 1分 2.66円
 日本国内携帯電話で 1分17.50円
です。

月695円で,日本国内固定電話に対する事実上無制限の発信が可能になるプランがあります。
050電話番号の取得は,無制限プランとの併用で年間3750円です。

【ヘッドセットについて】
Skypeの公式サイトでもいくつか紹介されています。 http://shop.skype.com/intl/jp/headsets/

私は,SENNHEISER の PC 166 USBを使用しています。
ヘッドセットとしては非常に高価な部類なのですが,長時間つけていても頭が痛くならない付け心地とマイクの音質の良さが決め手になりました。
ちょっと頭が大きめ?という人にお勧めです。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes