| | 573 | } } |
| | 574 | }, |
| | 575 | |
| | 576 | etc: { |
| | 577 | etc: { |
| | 578 | name: 'その他', |
| | 579 | targets: { |
| | 580 | // |
| | 581 | googlebooksearch: { |
| | 582 | name: 'Google ブック検索', |
| | 583 | keys: { isbn10: true, isbn13: true }, |
| | 584 | func: function(book, lib, callback) { |
| | 585 | var result = { key: lib.key, name: lib.name }; |
| | 586 | var isbn = getIsbn(lib.keys, book); |
| | 587 | if (!isbn) { |
| | 588 | callback(result); |
| | 589 | return; |
| | 590 | } |
| | 591 | GM_xmlhttpRequest({ |
| | 592 | method: 'get', |
| | 593 | url: 'http://books.google.com/books?jscmd=viewapi&callback=parse&bibkeys=ISBN:' + isbn, |
| | 594 | onerror: function(resp) { |
| | 595 | callback(result); |
| | 596 | }, |
| | 597 | onload: function(resp) { |
| | 598 | eval(resp.responseText); |
| | 599 | function parse(resp) { |
| | 600 | var info = resp['ISBN:' + isbn]; |
| | 601 | if (info) { |
| | 602 | result.owned = true; |
| | 603 | result.enabled = info.preview != 'noview'; |
| | 604 | result.detail = info.preview_url; |
| | 605 | callback(result); |
| | 606 | } else { |
| | 607 | callback(result); |
| | 608 | } |
| | 609 | } |
| | 610 | } |
| | 611 | }); |
| | 612 | } } |
| | 613 | // |