Ich habe mir eine Notiz gemacht, weil es mit der Amazon-Buchsuch-API etwas schwierig war. Ich konnte keine anderen Artikel auf Japanisch finden, daher hoffe ich, dass Sie darauf verweisen können.
Sie können APIs wie Google und Amazon verwenden, um nach Büchern zu suchen. Ich habe mich jedoch für die PA-API (Product Advertising) von Amazon entschieden, da Google (Google Books API) nicht ausreicht.
Die Version der PA-API wurde jedoch ab April 2020 geändert, und die Methode mit dem Juwel von amazon-ecs funktioniert nicht ... (Ich habe auf die Methode von [diesem Artikel] verwiesen (https://qiita.com/tatsuki-m/items/043f14e7d4504277c947), aber ich konnte die Daten nicht erhalten ...)
Wenn ich mir amazon-ecs reference anschaue, heißt es, dass es besser ist, einen anderen Edelstein (paapi) zu verwenden, also habe ich beschlossen, ihn zu verwenden. .. Paapi-Referenz
Um diese API nutzen zu können, müssen Sie sich zunächst registrieren und bei Amazon Associate bewerben. Wenn Sie dies noch nicht getan haben, lesen Sie bitte diesen Artikel. Siehe. Die Hürden für die Beurteilung sind relativ hoch, daher denke ich, dass es für diejenigen, die es sofort nutzen möchten, schwierig ist. (Es hat ungefähr einen Monat gedauert)
Das fertige Bild der Suche sieht folgendermaßen aus. Sie können sehen, dass die Bilder und URLs ordnungsgemäß erfasst wurden.
Dieses Mal werden wir die folgende Verarbeitung implementieren
Gem
Gemfile
gem 'paapi'
Vergessen Sie nicht, die Installation zu bündeln. (Wenn der Server ausgeführt wird, vergessen Sie nicht, ihn neu zu starten.)
config
Erstellen Sie paapi.rb
direkt unter config / initializers und schreiben Sie die Schlüssel- und ID-Einstellungen.
・ Access_key: Zugriffsschlüssel
・ Secret_key: Geheimschlüssel
・ Partner_tag: Associate ID (Ihre ID endet mit 22)
config/initializers/paapi.rb
Paapi.configure do |config|
config.access_key = Rails.application.credentials[:pa_api][:access_key_id]
config.secret_key = Rails.application.credentials[:pa_api][:secret_key]
config.partner_tag = Rails.application.credentials[:pa_api][:associate_tag]
end
In meinem Fall rufe ich es aus den Anmeldeinformationen auf und verwende es. (Weil ich es hasse, wenn es leckt) Wenn Sie nicht wissen, wie Sie Anmeldeinformationen verwenden sollen, lesen Sie bitte hier.
Da dies ein Beispiel ist, habe ich einen entsprechenden Suchcontroller erstellt. Eigentlich ist es besser, es im Buchverzeichnis zu erstellen, damit Sie leicht verstehen können, was die Suche ist.
Terminal
$ rails g controller searches
searches_controller
class SearchesController < ApplicationController
before_action :call_client, only: :index
def index
si = @client.search_items(keywords: keyword_params, SearchIndex: "Books")
@items = si.items
end
private
def call_client
require 'paapi'
@client = Paapi::Client.new(access_key: Rails.application.credentials[:pa_api][:access_key_id],
secret_key: Rails.application.credentials[:pa_api][:secret_key],
market: :jp,
partner_tag: Rails.application.credentials[:pa_api][:associate_tag])
end
def keyword_params
params.require(:keyword)
end
end
Ich erstelle eine Instanz des Clients und wende eine Suchmethode darauf an, um Produktinformationen zu erhalten. Dieses Mal ist das Genre auf Bücher in der Produktsuche beschränkt. Sie können jedoch die Produktnummer angeben, um Informationen zu erhalten, oder ein anderes Genre angeben. Verwenden Sie es daher je nach Verwendungszweck ordnungsgemäß.
Wenn Sie nach einem Produkt suchen, werden Daten für 10 Artikel erfasst und als Antwortklassendaten verwendet. Da die Artikeldaten darin enthalten sind, können sie als Artikelklassendaten behandelt werden, indem sie mit ".items" extrahiert werden. (Die Item-Klasse wird von gem bereitgestellt, und Sie können bequeme Methoden verwenden. Ich werde es später erklären.)
Vergiss nicht, es einzustellen.
routes.rb
Rails.application.routes.draw do
# (Abkürzung)
resources :searches, only: [:index]
end
Bereiten Sie zunächst ein Suchformular vor.
Suchformular
.book-search
= form_with url: {controller: 'searches', action: 'index' }, method: :get, local: true do |f|
= f.text_field :keyword
= f.submit "Suche"
Als nächstes wird die Seite angezeigt, auf der die durch die Suche erhaltenen Daten angezeigt werden. Dieses Mal wird es in "Suchen / Index" angezeigt.
views/searches/index
- @items.each do |item|
.url
= "url: #{item.detail_url}"
.title
= "title: #{item.title}"
.author
- authors = item.contributors.select { |e| e['RoleType'] == "author" }&.map { |e| e.dig('Name') }&.reject {|n| n.to_s.empty?}
= "author: #{authors[0]}"
.image
= image_tag "#{item.image_url}", height: '170px', width: '120px'
.asin
= "asin: #{item.asin}"
Mithilfe der title-Methode, der detail_url-Methode und der image_url-Methode können Sie den Produkttitel, die URL, das Bild usw. auf einfache Weise aus den Daten der Item-Klasse abrufen.
Sie können viele andere Dinge bekommen, also denke ich, Sie sollten es versuchen, indem Sie auf Referenz schauen.
Übrigens haben die Autoren nicht gemäß der Referenz gearbeitet (mit der Autorenmethode), also habe ich sie selbst angepasst. (Ich muss denjenigen finden, dessen RoleType der Autor ist, aber die vorbereitete Methode sucht nach demjenigen, dessen Rolle der Autor ist.)
・ Notizblock Auf dieser Seite können Sie versuchen, welche Art von Daten durch Klicken auf die API erfasst werden. https://webservices.amazon.co.jp/paapi5/scratchpad/
・ API-Referenz Offizielle Referenz für Product Advertising API 5.0. https://webservices.amazon.com/paapi5/documentation/api-reference.html
Recommended Posts