trackbackを実装
今日は昼間っからレタスしゃぶしゃぶ。ヨメとふたりで、やはりレタスひと玉をさくっと食いきり、豚肉ももりもり食いまくった。夜はそれの残りで雑炊。これまた美味完食。
そんなこんな、今日は部屋でのたのた。ネットを徘徊する。
OpenIDとかOAuthとか、面白そうなので、モジュールだけインストールしてみた…けど、よく理解できず。なんに使うのかどういうところで使うのかそれがどんなに便利なのか。頭悪いんで困ったもんだ、と思いつつ、これもまた前からなにが面白いんだか理解できないTrackbackをとりあえず雑記帖に組み込んでみた。
送受信するのは url blog_name title excerpt だけだし、受信したら返すのは簡単なXML。なので、実装はさくっとスグできた。けどなあ、Pingを送るヒマあったら、こんちわー、とフツーにコメントつけて、そこにURLいれときゃいいだろ、と思ってしまうんだけど。いまどき、コメントもトラックバックもスパム防止で自動送信を受けつけるところが少ないしねえ。
[09/21 22:50:06]
てことで、ちょっとそれっぽいところを眺めに徘徊したけど、どうももはやトラックバックは死に体っぽい。そりゃそうだ。ブログの情報を繋ぐのとはちょっと違うけど、ひとを繋ぐSNSがあちこちにあるし、軽く繋げるtwitterもある。ニュースサイトだったらRSSがあるし。
なんか無駄なスクリプト書いてしまったかもしれん。
[09/22 09:39:13]
↓こんなで送って
↓こんなで受けるだけ
…知らなかった、今さら。テキストエリアの中って、タグなんかが素通しだとずっと思ってたら、こいつはCDATAじゃなくて、PCDATAというやつなので、「>」などは文字参照にする必要がある。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
アマゾンの表紙画像
取り扱い要注意っぽくて、読書SNSでも表示させてなかった。けど、やっぱり表紙見たいよなあ、と、ちょっと調べてちゃっちゃと実装してみた。
ローカルに表紙画像を保存するのはアウトで、いちいちアマゾンにリクエストを投げる必要がある。
というのを守ればいいんじゃないか、と。Mediumでリクエストしてるんで、そもそも画像URLとかサイズとかも取得してる。データ自体はすぐに取り出せる状態だったけど、表示するためのレイアウトを考えてなかった。WEBサイトの表示周りの調整って意外に面倒で、レイアウトとスタイルシートは、もしかするとスクリプトでハマるよりもうっとーしーんだよねえ。
ついでに お言葉データベース にも表紙画像表示。ちょっとレスポンスが悪くなるけど(いちいちリクエストにいくからしかたがない)表紙画像はあった方がいいなあ。
今さら。読んでいる中島らも「ガダラの豚」が、えらい面白いんでびっくり。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
amazon のAPIで認証が必要になる
英文のメールが来ていたのは知ってた。ふーん、なんか変わるのか、ぐらいで流し…てたら、日本語のメールも来る。AWSという名称を変更するそうだ。
てのは、どうでもよくて、アマゾンにデータを取りにいくのに認証が必要になるらしい。それも5月11日から。猶予期間は3ヶ月ほどあるらしいけど、それまでにパラメータや認証キーを仕込みなおさないとまずいぢゃん。
当然ながら、今日時点では、ありがたく使わせていただけそうな例もまだないのでメモだけ。
新しくパラメータにTimestampが必要
RESTのURI+αを、SECRET KEYをキーにしてSHA256でHASHしてSignatureを生成してくっつける、らしい。
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
perl のDigest SHA
https://search.cpan.org/~mshelor/Digest-SHA-5.47/lib/Digest/SHA.pm
って、まだ全然わかってないんだけど。
use Digest::SHA qw(hmac_sha256_base64);
my $key = 'ABCD0987';
my $data = 'aiueo12345xyz';
my $digest = hmac_sha256_base64($data, $key);
print $digest;
認証のための署名はこれで作れる。
情報収集して対応しないといけません。
[05/11 10:56:47]
$digest .= '=' while length($digest) % 4;
4で割って余りが出ないように、「=」で埋める必要があるらしい。
https://blog.livedoor.jp/dankogai/archives/51211577.html
[05/11 23:46:32]
てことでチェックできた。
従来のURIにTimestampを追加。
Timestamp=2009-05-11T23:34:12Z
署名のためのデータを上記URIから作る。&でバラしてkeyをsortして並べ替えてURLエンコードしておく。
GET
webservices.amazon.co.jp
/onca/xml
上記URI
の4行のデータ。これをアマゾンの秘密鍵をキーに、SHA256でハッシュ化して署名を作る。
URIの最後にURLエンコードした署名をくっつけてできあがり(&Signature=署名)
と、エラソに書いたけど、ハマリがひとつ。何度やっても署名が間違ってる、と撥ねられて、しばし悶絶。あーだこーだパラメータをひとつずつ潰していったら、URLエンコードが原因でびっくりした。
今までずっと
s/(W)/sprintf("%%%02X",unpack("C", $1))/eg
とやっていて何も問題なかったんだよなあ。
# RFC3986
# URI の生成を行うものは
# ALPHA (%41-%5A と %61-%7A),
# DIGIT (%30-%39), hyphen (%2D),
# period (%2E), underscore (%5F), tilde (%7E)
# の範囲におけるパーセントエンコードされたオクテットを
# 生成すべきではない
ううううむ。てことで
s/([^0-9a-zA-Z~._-])/sprintf("%%%02X",unpack("C", $1))/eg
にしたら、無事通過。
ひっかかったのはTimestampの2009-05-11のハイフンあたりだったようだ。
とりあえずチェックスクリプトはこれでOKだったんで、週末にでも実装してしまおう。
参考:
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?BasicAuthProcess.html
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
↑こいつを見てたら、ハイフンがエンコードされてないんで、変だなあ、と。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
アマゾンISBN13桁対応…
昨日は仕事だったので雰囲気もくそもなかったんだけど、今日はゆっくり正月気分。生まれて初めて明治神宮に行ってみたり。
で、今年からISBNが13桁になってアマゾンはどうすんだろうと問い合わせてたんだけど、今日来た返事が以下のもので愕然。
▽▽▽
Amazon.co.jpアソシエイト・プログラムにお問い合わせいただき、ありがとうござ
います。
誠に申し訳ございませんが、ASINの生成方法につきましては、Amazon独自のシステ
ムならびに論理を利用したものとなりますので、公開はいたしておりませんことを何
卒ご容赦いただきますようお願い申し上げます。
△△△
てことは
「本に印刷されているISBNから、アマゾンのASINはわからない」
ということじゃん。なんでそんなものを非公開にするんだ。弱ったなぁ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
東京都立図書館
趣味は読書SNS に絡めて 東京都の図書館蔵書横断検索 というのが使えるかも、と画策してたのが前回までのあらすじ。えーっと伏線は追加記入分ね。
!/usr/local/bin/perl
use LWP::UserAgent;
my $ua = LWP::UserAgent -> new;
my $url_root = 'https://metro.tokyo.opac.jp/';
my $url_post = $url_root . 'cgi-bin/j12crs2.cgi';
my $que = 'sitechk001049=on&isbn=439663059X&srchmode=2&';
my $req = HTTP::Request->new(POST => $url_post);
$req->content_type('application/x-www-form-urlencoded');
$req->content( $que );
my $res = $ua->request($req);
my $str = $res->as_string;
print $str;
↑これだけで、葛飾区の図書館を対象に、楢山芙二夫『非情の追跡』探してくる。ヒットしたら収蔵する図書館へのリンクと書誌詳細へのリンクが出てくる。ので、今度はそのリンクを開いてGETすれば詳しい情報も取れる。
問題は。とってきたHTMLを睨み倒して、必要なところを自動的に切り取るスクリプト。
わたしのトップページに、さりげなくかつわざとらしく、フジTVめざましテレビの星占いを貼り付けてあるけど、これも同じようなやり方(この頃はLWPなんて便利なモジュール知らなかったんで、socketだのbindだのガシガシと)やはり、番組改編なんかで、HTMLのデザインが変わるだけでアウトとなる。
東京都立図書館というパブリックサーバントがやってるんだから、納税者の利便を考えてXMLとかテキトーな統一規格(APIというんだっけか)にして欲しいなぁ。
臨時雇い派遣の身ながら、仕事がまだ回ってこないのでヒマ。いちんち中ぼーっとテレビみてボケていく定年後のオトウサン状態。
なもんで、ちっとうろついて見つけたのが
https://knezon.knecht.jp/
↑これ。クネゾンというんだけど、これがすごいのひとこと。
図書館のデータというのは全国の図書館でバラバラの形式。もう蓄積もされてるんで、いまさら全国統一形式にするのは無理っぽいらしい。
ところがこのクネゾン。そのバラバラの形式を個別に対応してプログラムを作り、検索サービスを提供しているのだ。こういうのを見せられると(そのポリシーも含めて)素直に脱帽。かっこええっすよ。
とりあえず。東京都に関しては都立図書館に頑張ってもらえれば、そこを橋頭堡に都内の図書館を検索してごにょごにょできそう、かなぁ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
冷たい雨の週末はひきこもる
激しく冷たい雨模様。自治会の集金に回って、クリーニングを取りにいって。あとは部屋でごろごろのったり、だ。
Net-Amazonを使って検索する場合、isbnコードだと割りとすんなり早く帰ってくるんだけど、キーワード検索だとちょっと待たされる。短気だと多分、ばしっと切る程度には遅い。って、わたしがそうなんだけど。
こんなもんか、と思えば待つんだけど、初めてだと不安になる。というところか。なもんで、一度検索されたら、一時的にデータベースに放り込んでおいて、検索があったらまずはデータベースを見て、それでなければアマゾンにいく、という方式にした。データ数で1万件、日数で30日、どのぐらい溜め込んでおけばいいのかは、やりながら調整、だなぁ。
これで、シリーズ物・巻数モノの入力がラクになる。タイトルを入れて検索して、チェックボックスをつけて表示させればあとはなんとかなる、かな。
そいや、昨日ジブリ美術館でジブリがいっぱいスペシャル・ショートショートというDVDを買ってきた。TVCMとかプロモビデオとか。後半、なんじゃこりゃ、みたいなのが入ってて、ちとアレだったけど、前半は面白いものばかりだった。脱力系もうまいんだなぁ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」