はてなアフィリエイト用Amazonアソシエイト記事作成スクリプト
やっつけなので出来はイマイチ(言い訳)。整形は各自で。
自分のアソシエイトIDのはてなasinページリンク作成。「ISBN⁄ASIN記法」のtitle、detailと同じ形で出力する。
実行例:
> python PyAmaAsso.py "4061822691:t" sys:1: DeprecationWarning: Non-ASCII character '\x81' in file PyAmaAsso.py on line 20, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 『<a href="http://d.hatena.ne.jp/asin/4061822691/diaryexceptio-22">クリスマス・テロル―invisible×inventor</a>』
『クリスマス・テロル―invisible×inventor』
> python PyAmaAsso.py "4061822691:d" sys:1: DeprecationWarning: Non-ASCII character '\x81' in file PyAmaAsso.py on line 20, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details <div class="hatena-asin-detail"> <a href="http://d.hatena.ne.jp/asin/4061822691/diaryexceptio-22"><img src="http://images-jp.amazon.com/images/P/4061822691.09.MZZZZZZZ.jpg" class="hatena-asin-detail-image" alt="クリスマス・テロル―invisible×inventor" title="クリスマス・テロル―invisible×inventor"></a> <div class="hatena-asin-detail-info"> <p class="hatena-asin-detail-title"><a href="http://d.hatena.ne.jp/asin/4061822691/diaryexceptio-22">クリスマス・テロル―invisible×inventor</a></p> <ul> <li><span class="hatena-asin-detail-label">作者:</span>佐藤友哉</li> <li><span class="hatena-asin-detail-label">出版社⁄メーカー:</span> 講談社</li> <li><span class="hatena-asin-detail-label">発売日:</span> 2002/08</li> <li><span class="hatena-asin-detail-label">メディア:</span> 新書</li> </ul> </div> <div class="hatena-asin-detail-foot"></div> </div>ソース:
import sys import urllib2 import string import re affiliate = 'diaryexceptio-22' # AmazonアソシエイトID html_cod = 'euc-jp' # はてなasinページの文字コード plat_cod = 'mbcs' # プラットフォームの文字コード(不要の場合あり) if __name__=='__main__' : # isbn_type = raw_input('ISBN:t or d: ') # 標準入力からISBNと出力タイプを指定する isbn_type = sys.argv[1] # 引数からISBNと出力タイプを指定する pair = string.split(isbn_type, ':') isbn = pair[0] type = pair[1] url = 'http://d.hatena.ne.jp/asin/' + isbn data = unicode(urllib2.urlopen(url).read(), html_cod, 'replace') title = re.search('<span class="title">([^>]+)</span>', data).group(1) if type == 't': title_data = unicode('『<a href="', plat_cod) + url + '/' + affiliate + '">' + title + unicode('</a>』', plat_cod) print title_data.encode(sys.getfilesystemencoding()) elif type == 'd': author_s = unicode('作者:<a href="[^"]+" class="keyword">([^>]+)</a>', plat_cod) maker_s = unicode('出版社/メーカー:<a href="[^"]+" class="keyword">([^>]+)</a>', plat_cod) date_s = unicode('発売日:([^>]+)</p>', plat_cod) media_s = unicode('メディア:([^>]+)</p>', plat_cod) aut = re.findall(author_s, data) mak = re.findall(maker_s, data) dat = re.findall(date_s, data) med = re.findall(media_s, data) author = '' if len(aut) > 0 : author = aut.pop(0) if len(aut) > 0: for a in aut: author = author + ', ' + a maker = '' if len(mak) > 0 : maker = mak.pop(0) if len(mak) > 0: for a in mak: maker = maker + ', ' + a date = '' if len(dat) > 0 : date = dat.pop(0) if len(dat) > 0: for a in dat: date = date + ', ' + a media = '' if len(med) > 0 : media = med.pop(0) if len(med) > 0: for a in med: media = media + ', ' + a detail_data =\ '<div class="hatena-asin-detail">\n' +\ '\t<a href="' + url + '/' + affiliate + '">' +\ '<img src="http://images-jp.amazon.com/images/P/' + isbn + '.09.MZZZZZZZ.jpg" class="hatena-asin-detail-image" alt="' + title + '" title="' + title + '"></a>\n' +\ '\t<div class="hatena-asin-detail-info">\n' +\ '\t\t<p class="hatena-asin-detail-title"><a href="' + url + '/' + affiliate + '">' + title + '</a></p>\n' +\ '\t\t<ul>\n' +\ unicode('\t\t\t<li><span class="hatena-asin-detail-label">作者:</span> ', plat_cod) + author + '</li>\n' +\ unicode('\t\t\t<li><span class="hatena-asin-detail-label">出版社⁄メーカー:</span> ', plat_cod) + maker + '</li>\n' +\ unicode('\t\t\t<li><span class="hatena-asin-detail-label">発売日:</span> ', plat_cod) + date + '</li>\n' +\ unicode('\t\t\t<li><span class="hatena-asin-detail-label">メディア:</span> ', plat_cod) + media + '</li>\n' +\ '\t\t</ul>\n' +\ '\t</div>\n' +\ '\t<div class="hatena-asin-detail-foot"></div>\n' +\ '</div>' print detail_data.encode(sys.getfilesystemencoding())
検索部・文字コード部で戸惑ったのでちょっと時間が掛かった。