質問

私のファイルの一部の書籍データ MARC 形式であり、ラインISBNs.私はこれらに代わるラインのGoogleの書籍IDのISBN場合、世界最大の国際人権ngoです。こちらのコードであるだけなの除去、線:

perl -pe "s#ISBN(.*)#$(wget --output-document=- --quiet --user-agent=Mozilla/5.0 \"http://books.google.com/books?jscmd=viewapi&bibkeys=\1\")#mg" < 5-${file} > 6-${file}

PS:グーグルトファジーの使用の自動化ツールの 書籍データAPI 推奨ツールのようなカール/wgetが指示などを避けるためのブロッキングされている利用時のようなツールです。私もかく、私の条項は利用規約と利用者を送信することができませんの自動化のクエリが見つからな設定することができます。この 議論 そのフォーラム

役に立ちましたか?

解決

私はOPは正しい軌道に乗っていると、このためにワンライナーを使用することができ、そしてちょうど正しいPerlの構文にいくつかのbashスタイルの構文を置き換えるために必要だと思います。私は(改行は読みやすくするために追加された)これが機能すると思います:

    perl -pe 's#ISBN(\w+)#qx(wget --output-document=- 
        --quiet --user-agent=Mozilla/5.0 
        "http://books.google.com/books\\?jscmd=viewapi\\&bibkeys=$1")#ge' \
        < 5-${file} > 6-${file}

あなたは(編集:ダブルエスケープが動作しているようです)エスケープする必要があります。URLで$または&文字を

他のヒント

その理由をまとめてのユーザエージェントとなりますのでご違反するGoogleの利用規約:んでいます。

代わりに使用しますの Googleブック検索API.

以下のコードは若干の阻害による不足の親しみモジュールなど XML::原子, データ::飼料, WWW::検索のOpenSearch.ただし、提供から始めるのがよい。

#!/usr/bin/perl

use strict;
use warnings;

use Business::ISBN qw( valid_isbn_checksum );
use LWP::Simple;
use XML::Simple;

while ( <> ) {
    s/ISBN:([0-9]+)/'Google Books ID:' . get_google_id_for_isbn($1)/ge;
    print;
}

use Carp;

sub make_google_books_query {
    sprintf 'http://books.google.com/books/feeds/volumes?q=isbn:%s', $_[0];
}

sub get_google_id_for_isbn {
    my ($isbn) = @_;

    my $google_id = eval {
        defined(valid_isbn_checksum $isbn)
            or croak "Invalid ISBN: $isbn";

        my $query = make_google_books_query($isbn);
        my $xml = get $query;

        defined($xml)
            or croak "No response to <$query>";

        my $data = XMLin($xml, ForceArray => 1);
        my @ids = @{ $data->{entry}[0]{'dc:identifier'} };

        unless ("ISBN:$isbn" eq $ids[1]
                or "ISBN:$isbn" eq $ids[2] ) {
            croak "Invalid search results: '@ids'";
        }

        $ids[0];
    };

    defined($google_id) ? $google_id : '';
}

たテキストファイル t.txt を含む:

ISBN:0060930314
ISBN:9780596520106

として出力:

Google Books ID:ioXFqlzsmK8C
Google Books ID:lNVHi3TunxsC
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top