KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

電子書籍のセルフパブリッシングってどうなん

 最近はウィルスで図書館まで休館してて資料を探すのも大変だ。学校も閉校していたりして漫画の電子書籍が無料で大盤振る舞いされていたり。それもこれも不要不急の外出を避けろという国のお達しのようである。

 で、まぁ電子書籍に焦点が当たる好機かなとは思っている。本は紙なので洗えないけど、電子書籍は端末を選ばないのでタブレットをウェットティッシュで拭けばいいのかも。アルコールで拭いたら印字部分が剥がれるかもしれないという懸念は有るので調べてからにしよう。電子書籍は人に会わなくても購入できるのがウィルス対策にもなるのだろうか、そういうメリットも有るのかも。

 図書館は休館しているが予約の本であれば受け取れるようで、受け取りには行きました。

 

 そこで話は変わってセルフパブリッシングの話である。セルフパブリッシングで自分で書いた本は売れてますか?

 正直に言うと本を書いても露出は少ないので、セルフパブリッシングをしている人同士で電子書籍を出せばいいのでは。出せば売れるような壁サークルのような同人誌運動はなかなかないのである。初期にあまり人がいなかったが、今は多すぎて全部見ていられない。

  紙からの人やVtuberの人などいろんところから人が来ているなと思うことが有る。Vtuberクラウドファンディングを使ったりおひねり感覚で資金を得るのが、セルフパブリッシングとの差を感じる部分なのだろうか。

 読んで感想を書きたいところなんだけど、花粉が活発で目の調子が良くなく時間を開けたいところである。

   セルフパブリッシングってどうでしょうな、KWLから始まってKDP、ブックウォーカーとあります。人によればもっと前からあると突っ込む人もいるでしょうがブックログとか。

 セルフパブリッシングはどうやって発売されたかを取得するかを悩んでいる。というのも出版社だったらISBNがあるので、書誌情報を調べていけば見つかるけど。セルフパブリッシングはどう見つけるかという問題が有る。

PA APIで新刊チェックを試みる。

 PA APIが取得できたのだしとりあえず、新刊情報だけでも取得してみるかと思って、少年漫画で検索してみました。ただ、新刊は書影が見つからず、価格も取得できないので、文字とリンクだけになってしまった。発売直前になれば表紙画像も取れるのだろうけど。

  キンドルの本のカテゴリの取得はGetBrowseNodesでやるようだ。そこからSearchItemsでBrowseNodesを指定して検索するといいみたい。

 

 

{ "BrowseNodesResult": { "BrowseNodes": [ { "Ancestor": { "Ancestor": { "ContextFreeName": "Kindleストア", "DisplayName": "Kindleストア", "Id": "2250738051" }, "ContextFreeName": "Kindleストア", "DisplayName": "カテゴリー別", "Id": "2250739051" }, "Children": [ { "ContextFreeName": "文学・評論", "DisplayName": "文学・評論", "Id": "2292699051" }, { "ContextFreeName": "人文・思想", "DisplayName": "人文・思想", "Id": "2292095051" }, { "ContextFreeName": "社会・政治", "DisplayName": "社会・政治", "Id": "2293149051" }, { "ContextFreeName": "ノンフィクション", "DisplayName": "ノンフィクション", "Id": "2291791051" }, { "ContextFreeName": "歴史・地理", "DisplayName": "歴史・地理", "Id": "2293076051" }, { "ContextFreeName": "ビジネス・経済", "DisplayName": "ビジネス・経済", "Id": "2291905051" }, { "ContextFreeName": "投資・金融・会社経営", "DisplayName": "投資・金融・会社経営", "Id": "2292576051" }, { "ContextFreeName": "科学・テクノロジー", "DisplayName": "科学・テクノロジー", "Id": "2293263051" }, { "ContextFreeName": "医学・薬学", "DisplayName": "医学・薬学", "Id": "2292340051" }, { "ContextFreeName": "コンピュータ・IT", "DisplayName": "コンピュータ・IT", "Id": "2291657051" }, { "ContextFreeName": "アート・建築・デザイン", "DisplayName": "アート・建築・デザイン", "Id": "2291481051" }, { "ContextFreeName": "実用・ホビー", "DisplayName": "趣味・実用", "Id": "2292479051" }, { "ContextFreeName": "スポーツ・アウトドア", "DisplayName": "スポーツ・アウトドア", "Id": "2292480051" }, { "ContextFreeName": "資格・検定", "DisplayName": "資格・検定・就職", "Id": "2293536051" }, { "ContextFreeName": "暮らし・健康・子育て", "DisplayName": "暮らし・健康・子育て", "Id": "2292803051" }, { "ContextFreeName": "旅行ガイド・マップ", "DisplayName": "旅行ガイド・マップ", "Id": "2292799051" }, { "ContextFreeName": "語学・辞事典・年鑑", "DisplayName": "語学・辞事典・年鑑", "Id": "2293396051" }, { "ContextFreeName": "教育・学参・受験", "DisplayName": "教育・学参・受験", "Id": "2292600051" }, { "ContextFreeName": "絵本・児童書", "DisplayName": "絵本・児童書", "Id": "2293363051" }, { "ContextFreeName": "Kindle マンガ", "DisplayName": "マンガ", "Id": "2293143051" }, { "ContextFreeName": "ライトノベル", "DisplayName": "ライトノベル", "Id": "2410280051" }, { "ContextFreeName": "ボーイズラブ", "DisplayName": "ボーイズラブ", "Id": "2450063051" }, { "ContextFreeName": "ティーンズラブ", "DisplayName": "ティーンズラブ", "Id": "3432431051" }, { "ContextFreeName": "タレント写真集", "DisplayName": "タレント写真集", "Id": "2291790051" }, { "ContextFreeName": "エンターテイメント", "DisplayName": "エンターテイメント", "Id": "2291568051" }, { "ContextFreeName": "楽譜・スコア・音楽書", "DisplayName": "楽譜・スコア・音楽書", "Id": "2293031051" }, { "ContextFreeName": "雑誌", "DisplayName": "雑誌", "Id": "2275257051" }, { "ContextFreeName": "アダルト", "DisplayName": "アダルト", "Id": "2291476051" } ], "ContextFreeName": "Kindle本", "DisplayName": "Kindle本", "Id": "2275256051", "IsRoot": false } ] } }

 

{ "BrowseNodesResult": { "BrowseNodes": [ { "Ancestor": { "Ancestor": { "Ancestor": { "ContextFreeName": "Kindleストア", "DisplayName": "Kindleストア", "Id": "2250738051" }, "ContextFreeName": "Kindleストア", "DisplayName": "カテゴリー別", "Id": "2250739051" }, "ContextFreeName": "Kindle本", "DisplayName": "Kindle本", "Id": "2275256051" }, "Children": [ { "ContextFreeName": "少年マンガ", "DisplayName": "少年マンガ", "Id": "2430812051" }, { "ContextFreeName": "青年マンガ", "DisplayName": "青年マンガ", "Id": "2430869051" }, { "ContextFreeName": "少女マンガ", "DisplayName": "少女マンガ", "Id": "2430765051" }, { "ContextFreeName": "女性マンガ", "DisplayName": "女性マンガ", "Id": "2430737051" }, { "ContextFreeName": "4コマまんが", "DisplayName": "4コマまんが", "Id": "2430727051" }, { "ContextFreeName": "イラスト集・オフィシャルブック", "DisplayName": "イラスト集・オフィシャルブック", "Id": "2293144051" }, { "ContextFreeName": "マンガ雑誌", "DisplayName": "マンガ雑誌", "Id": "3418785051" }, { "ContextFreeName": "ファンタジーマンガ", "DisplayName": "ファンタジー", "Id": "3686132051" }, { "ContextFreeName": "歴史マンガ", "DisplayName": "歴史", "Id": "3686134051" }, { "ContextFreeName": "ホラーマンガ", "DisplayName": "ホラー", "Id": "3686135051" }, { "ContextFreeName": "格闘技マンガ", "DisplayName": "格闘技", "Id": "3686137051" }, { "ContextFreeName": "メディアミックスマンガ", "DisplayName": "メディアミックス", "Id": "3686138051" }, { "ContextFreeName": "ミステリーマンガ", "DisplayName": "ミステリー", "Id": "3686139051" }, { "ContextFreeName": "ノンフィクションマンガ", "DisplayName": "ノンフィクション", "Id": "3686140051" }, { "ContextFreeName": "ロマンスマンガ", "DisplayName": "ロマンス", "Id": "3686141051" }, { "ContextFreeName": "SFマンガ", "DisplayName": "SF", "Id": "3686142051" }, { "ContextFreeName": "スポーツマンガ", "DisplayName": "スポーツ", "Id": "3686143051" } ], "ContextFreeName": "Kindle マンガ", "DisplayName": "マンガ", "Id": "2293143051", "IsRoot": false } ] } }

 SearchItemsのBrowseNodeが2430812051で検索した結果。SortBy NewestArraivalの設定なので、新着順に並べ替えをした。

{ "SearchResult": { "Items": [ { "ASIN": "B0858Z2R37", "DetailPageURL": "https://www.amazon.co.jp/dp/B0858Z2R37?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-27T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "鶴野くんは恩返しができない 1巻 (デジタル版Gファンタジーコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B0859842KQ", "DetailPageURL": "https://www.amazon.co.jp/dp/B0859842KQ?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-27T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "SCARS 1巻 (デジタル版Gファンタジーコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B085951265", "DetailPageURL": "https://www.amazon.co.jp/dp/B085951265?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "薬屋のひとりごと 6巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B0859D548F", "DetailPageURL": "https://www.amazon.co.jp/dp/B0859D548F?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "魔法少女特殊戦あすか 12巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B08591SVGL", "DetailPageURL": "https://www.amazon.co.jp/dp/B08591SVGL?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "BADON 2巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B08597R1ZW", "DetailPageURL": "https://www.amazon.co.jp/dp/B08597R1ZW?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "やはり俺の青春ラブコメはまちがっている。-妄言録- 16巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B0859BNLWX", "DetailPageURL": "https://www.amazon.co.jp/dp/B0859BNLWX?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "君死ニタマフ事ナカレ 9巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B085941V5K", "DetailPageURL": "https://www.amazon.co.jp/dp/B085941V5K?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "シノハユ 12巻 (デジタル版ビッグガンガンコミックスSUPER)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B08593VG7Z", "DetailPageURL": "https://www.amazon.co.jp/dp/B08593VG7Z?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "怜-Toki- 6巻 (デジタル版ビッグガンガンコミックス)", "Label": "Title", "Locale": "ja_JP" } } }, { "ASIN": "B0858YDRDL", "DetailPageURL": "https://www.amazon.co.jp/dp/B0858YDRDL?tag=99hatena-22&linkCode=osi&th=1&psc=1", "ItemInfo": { "ProductInfo": { "IsAdultProduct": { "DisplayValue": false, "Label": "IsAdultProduct", "Locale": "en_US" }, "ReleaseDate": { "DisplayValue": "2020-03-25T00:00:00.000Z", "Label": "ReleaseDate", "Locale": "en_US" } }, "Title": { "DisplayValue": "君のお母さんを僕に下さい! 2巻 (デジタル版ガンガンコミックスUP!)", "Label": "Title", "Locale": "ja_JP" } } } ], "SearchURL": "https://www.amazon.co.jp/s?rh=n%3A2430812051%2Cp_n_availability%3A-1&tag=99hatena-22&linkCode=osi", "TotalResultCount": 38764 } }

 

PA-API v5のJSONのパース

 PA-API v5のJSONから必要な情報だけを抽出したいと思う。javascriptなんだからオブジェクトに変換すればさっとできそうである。

99nyorituryo.hatenablog.com

 

上の記事を書いてから、PA-APIでの要求を必要な分だけに減らして帰ってくるJSONをパースすることをやろうと思う。JSONはだいぶ減らしてみたが、必要なら後で増やせばいいかな。

 

{ "ItemsResult": { "Items": [ { "ASIN": "4088822048", "BrowseNodeInfo": { "BrowseNodes": [ { "Ancestor": { "Ancestor": { "Ancestor": { "ContextFreeName": "本", "DisplayName": "本", "Id": "465392" }, "ContextFreeName": "ジャンル別", "DisplayName": "ジャンル別", "Id": "465610" }, "ContextFreeName": "コミック・ラノベ・BL", "DisplayName": "コミック・ラノベ・BL", "Id": "466280" }, "ContextFreeName": "コミック", "DisplayName": "コミック", "Id": "2278488051", "IsRoot": false, "SalesRank": 24 }, { "Ancestor": { "Ancestor": { "ContextFreeName": "本", "DisplayName": "本", "Id": "465392" }, "ContextFreeName": "By Publishers", "DisplayName": "By Publishers", "Id": "465614" }, "ContextFreeName": "集英社", "DisplayName": "集英社", "Id": "10805021", "IsRoot": false } ], "WebsiteSalesRank": { "ContextFreeName": "本", "DisplayName": "本", "SalesRank": 24 } }, "DetailPageURL": "https://www.amazon.co.jp/dp/4088822048?tag=99hatena-22&linkCode=ogi&th=1&psc=1", "Images": { "Primary": { "Large": { "Height": 500, "URL": "https://m.media-amazon.com/images/I/51bcIiF+o5L.jpg", "Width": 317 } } }, "ItemInfo": { "ByLineInfo": { "Brand": { "DisplayValue": "集英社", "Label": "Brand", "Locale": "ja_JP" }, "Contributors": [ { "Locale": "ja_JP", "Name": "吾峠 呼世晴", "Role": "著", "RoleType": "author" } ], "Manufacturer": { "DisplayValue": "集英社", "Label": "Manufacturer", "Locale": "ja_JP" } }, "Classifications": { "Binding": { "DisplayValue": "コミック", "Label": "Binding", "Locale": "ja_JP" }, "ProductGroup": { "DisplayValue": "Book", "Label": "ProductGroup", "Locale": "ja_JP" } }, "ExternalIds": { "EANs": { "DisplayValues": [ "9784088822044" ], "Label": "EAN", "Locale": "en_US" }, "ISBNs": { "DisplayValues": [ "4088822048" ], "Label": "ISBN", "Locale": "en_US" } }, "ProductInfo": { "ItemDimensions": { "Height": { "DisplayValue": 6.92912, "Label": "Height", "Locale": "ja_JP", "Unit": "インチ" }, "Length": { "DisplayValue": 4.40944, "Label": "Length", "Locale": "ja_JP", "Unit": "インチ" }, "Width": { "DisplayValue": 0.51181, "Label": "Width", "Locale": "ja_JP", "Unit": "インチ" } }, "ReleaseDate": { "DisplayValue": "2020-02-04T00:00:01Z", "Label": "ReleaseDate", "Locale": "en_US" }, "UnitCount": { "DisplayValue": 1, "Label": "NumberOfItems", "Locale": "en_US" } }, "Title": { "DisplayValue": "鬼滅の刃 19 (ジャンプコミックス)", "Label": "Title", "Locale": "ja_JP" } }, "Offers": { "Listings": [ { "Id": "JpQzg19KtBVWyYFL6FS9tDoK2vVUH2Zqpl9cpOEP3BWhH%2FDTRKSlxzJpQY98JCoIg9hgSF2Ex5KofXXll6d70hXyrqk%2F00HPn7Uvc9wP4wM%3D", "Price": { "Amount": 484, "Currency": "JPY", "DisplayAmount": "¥484" }, "ViolatesMAP": false } ] } } ] } }

 

上のjsonデータをjsonという変数にテキスト形式で代入したとする。そこから必要なデータを取るときに。 Items[0]と深い階層になっているのは、同時に何個かを取得できるのかもしれない。ASIN、URL、出版社、著者、ほんの形式、ISBN、出版日、タイトル、価格。といったものが取れると後で情報を突き合わせやすい気がする。

 

obj = JSON.parse(json);
item=obj.ItemsResult.Items[0]

//英語が思いつかなかったので所々日本語で。

salerank=item.BrowseNodeInfo.WebsiteSalesRank.SalesRank
BrowseNodeId=item.BrowseNodeInfo.BrowseNodes[0].Id
ジャンル名=item.BrowseNodeInfo.BrowseNodes[0].DisplayName
下位ジャンルid=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.Id
下位ジャンル名=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.DisplayName
詳細ジャンルid=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.Ancestor.Id
詳細ジャンル=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.Ancestor.DisplayName
全体カテゴリid=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.Ancestor.Ancestor.Id

全体カテゴリ=item.BrowseNodeInfo.BrowseNodes[0].Ancestor.Ancestor.Ancestor.DisplayName


asin=item.ASIN
url=item.DetailPageURL
imageurl=item.Images.Primary.Large.URL
publisher=item.ItemInfo.ByLineInfo.Manufacturer.DisplayValue
Contributor= item.ItemInfo.ByLineInfo.Contributors[0].Name +item.ItemInfo.ByLineInfo.Contributors[0].Role
Booktype= item.ItemInfo.Classifications.Binding.DisplayValue
isbn=item.ItemInfo.ExternalIds.ISBNs
time=item.ItemInfo.ProductInfo.ReleaseDate.DisplayValue
var today = new Date(time);
ReleaseDate=today
title=item.ItemInfo.Title.DisplayValue
price=item.Offers.Listings[0].Price.Amount

 

ISBNでPA-API v5を叩こう

 PA-API v5から情報を取っていろいろ試しています。前のバージョンではXMLだったが今度はJSONのようだ。情報を取る方法を模索していたので、全体的に書き直しが必要なようだ。

 

 下のサイトでどういった情報が取れるかを見れるのだけど、プログラムから大量に情報を処理しようとすると、APIを使ったプログラミングが必要な気がしている。

webservices.amazon.co.jp

 Node.js用のサンプルのsampleGetItemsApi.jsに書いてあったとおりにしてみたけどうまく行かなかった。何故かASINを指定するとerror code 500が出てしまっている。ASINを外すとうまく行ったのでよくわからないところ。ScratchpadではASINを指定していたので疑問に思うところである。

 PA-API v5ではJSONで返答が有るのでそれを見ていこうと思う。

 具体的には次のような感じである。鬼滅の刃 19巻を例に取っている。

 

{
"ItemsResult": {
"Items": [
{
"ASIN": "4088822048",
"DetailPageURL": "https://www.amazon.co.jp/dp/4088822048?tag=99hatena-22&linkCode=ogi&th=1&psc=1",
"Images": {
"Primary": {
"Large": {
"Height": 500,
"URL": "https://m.media-amazon.com/images/I/51bcIiF+o5L.jpg",
"Width": 317
}
}
},
"ItemInfo": {
"ByLineInfo": {
"Brand": {
"DisplayValue": "集英社",
"Label": "Brand",
"Locale": "ja_JP"
},
"Contributors": [
{
"Locale": "ja_JP",
"Name": "吾峠 呼世晴",
"Role": "著",
"RoleType": "author"
}
],
"Manufacturer": {
"DisplayValue": "集英社",
"Label": "Manufacturer",
"Locale": "ja_JP"
}
},
"Classifications": {
"Binding": {
"DisplayValue": "コミック",
"Label": "Binding",
"Locale": "ja_JP"
},
"ProductGroup": {
"DisplayValue": "Book",
"Label": "ProductGroup",
"Locale": "ja_JP"
}
},
"ContentInfo": {
"Languages": {
"DisplayValues": [
{
"DisplayValue": "日本語",
"Type": "発行済み"
}
],
"Label": "Language",
"Locale": "ja_JP"
},
"PagesCount": {
"DisplayValue": 192,
"Label": "NumberOfPages",
"Locale": "en_US"
},
"PublicationDate": {
"DisplayValue": "2020-02-04T00:00:01Z",
"Label": "PublicationDate",
"Locale": "en_US"
}
},
"ExternalIds": {
"EANs": {
"DisplayValues": [
"9784088822044"
],
"Label": "EAN",
"Locale": "en_US"
},
"ISBNs": {
"DisplayValues": [
"4088822048"
],
"Label": "ISBN",
"Locale": "en_US"
}
},
"ProductInfo": {
"ItemDimensions": {
"Height": {
"DisplayValue": 6.92912,
"Label": "Height",
"Locale": "ja_JP",
"Unit": "インチ"
},
"Length": {
"DisplayValue": 4.40944,
"Label": "Length",
"Locale": "ja_JP",
"Unit": "インチ"
},
"Width": {
"DisplayValue": 0.51181,
"Label": "Width",
"Locale": "ja_JP",
"Unit": "インチ"
}
},
"ReleaseDate": {
"DisplayValue": "2020-02-04T00:00:01Z",
"Label": "ReleaseDate",
"Locale": "en_US"
},
"UnitCount": {
"DisplayValue": 1,
"Label": "NumberOfItems",
"Locale": "en_US"
}
},
"Title": {
"DisplayValue": "鬼滅の刃 19 (ジャンプコミックス)",
"Label": "Title",
"Locale": "ja_JP"
}
},
"Offers": {
"Listings": [
{
"Availability": {
"Message": "在庫あり。",
"MinOrderQuantity": 1,
"Type": "Now"
},
"Condition": {
"SubCondition": {
"Value": "LikeNew"
},
"Value": "Used"
},
"DeliveryInfo": {
"IsAmazonFulfilled": false,
"IsFreeShippingEligible": false,
"IsPrimeEligible": false
},
"Id": "iABqJSOSIHbIYGPwAS2P3XKfmBxiJsIOcZfnXmqdy85GR%2B%2FisdXC7Y69mkHG%2BP4JpxWfFzMF8eX8SKm6yz8TozjsQWQVbcJGoddooMLePj0CNXhG%2FjhfshlZ6Sa7FUCvhtuLT9jNtF7Kuxkc2QRjNg%3D%3D",
"IsBuyBoxWinner": false,
"MerchantInfo": {
"DefaultShippingCountry": "JP",
"Id": "A8I6BNCH9688Q",
"Name": "slam43"
},
"Price": {
"Amount": 676,
"Currency": "JPY",
"DisplayAmount": "¥676"
},
"ProgramEligibility": {
"IsPrimeExclusive": false,
"IsPrimePantry": false
},
"ViolatesMAP": false
}
],
"Summaries": [
{
"Condition": {
"Value": "New"
},
"HighestPrice": {
"Amount": 1500,
"Currency": "JPY",
"DisplayAmount": "¥1,500"
},
"LowestPrice": {
"Amount": 484,
"Currency": "JPY",
"DisplayAmount": "¥484"
},
"OfferCount": 29
},
{
"Condition": {
"Value": "Used"
},
"HighestPrice": {
"Amount": 2978,
"Currency": "JPY",
"DisplayAmount": "¥2,978"
},
"LowestPrice": {
"Amount": 629,
"Currency": "JPY",
"DisplayAmount": "¥629"
},
"OfferCount": 13
},
{
"Condition": {
"Value": "Collectible"
},
"HighestPrice": {
"Amount": 1300,
"Currency": "JPY",
"DisplayAmount": "¥1,300"
},
"LowestPrice": {
"Amount": 1300,
"Currency": "JPY",
"DisplayAmount": "¥1,300"
},
"OfferCount": 1
}
]
}
}
]
}
}

 

ISBN10とASIN

Amazon Product Advertising APIでISBNで叩こうとしたが、ISBN13では反応しなかったので、ISBN10に変換する必要があった。どうもチェックディジットのあるなしの違いのようなので、変換自体はできそうである。

dqn.sakusakutto.jp

gist.github.com

-を削除するのに正規表現で置換した。

 isbn.replace(/\-/g, '')

 

 

apacの設定

 もう少し絞り込んだほうが扱いやすいかも。

{
"ItemIds": [
"4088822048"
],
"Resources": [
"Images.Primary.Large",
"ItemInfo.ByLineInfo",
"ItemInfo.ContentInfo",
"ItemInfo.ContentRating",
"ItemInfo.Classifications",
"ItemInfo.ExternalIds",
"ItemInfo.Features",
"ItemInfo.ManufactureInfo",
"ItemInfo.ProductInfo",
"ItemInfo.TechnicalInfo",
"ItemInfo.Title",
"ItemInfo.TradeInInfo",
"Offers.Listings.Availability.MaxOrderQuantity",
"Offers.Listings.Availability.Message",
"Offers.Listings.Availability.MinOrderQuantity",
"Offers.Listings.Availability.Type",
"Offers.Listings.Condition",
"Offers.Listings.Condition.SubCondition",
"Offers.Listings.DeliveryInfo.IsAmazonFulfilled",
"Offers.Listings.DeliveryInfo.IsFreeShippingEligible",
"Offers.Listings.DeliveryInfo.IsPrimeEligible",
"Offers.Listings.DeliveryInfo.ShippingCharges",
"Offers.Listings.IsBuyBoxWinner",
"Offers.Listings.LoyaltyPoints.Points",
"Offers.Listings.MerchantInfo",
"Offers.Listings.Price",
"Offers.Listings.ProgramEligibility.IsPrimeExclusive",
"Offers.Listings.ProgramEligibility.IsPrimePantry",
"Offers.Listings.Promotions",
"Offers.Listings.SavingBasis",
"Offers.Summaries.HighestPrice",
"Offers.Summaries.LowestPrice",
"Offers.Summaries.OfferCount"
],
"ItemIdType": "ASIN",
"PartnerTag": "99hatena-22",
"PartnerType": "Associates",
"Marketplace": "www.amazon.co.jp",
"Operation": "GetItems"
}

 

校正ツールを使ってみた

 Meryのマクロの校正機能を試してみた。以前に作ろうとして表示周りの処理のいい方法が見つからなくて、記憶の彼方に追いやられ忘れていました。見直すと思っていたものがすでにあったので紹介してみる。

 サーバー側で処理をするので校正の速度がワードや一太郎のソフトより早いのがいいところかな。日本新聞協会「新聞用語集」、共同通信社「記者ハンドブック」などの設定もあるので、物書きにもいいのだろう。

  yahoo APIを利用している校正サイトはいっぱいあるので外でも可能である。ただ、マクロの機能として実装されているので、校正にかかる時間が短縮されていいと思う。

 

使い方

[表示]ー[アウトプット]を選ぶ

  • 校正したい文字を選択する(選択しない場合は全体を実行される)
  • 下側の画面の校正結果が表示される。
  • 校正結果をクリックすると、校正

f:id:kyukyunyorituryo:20200213234453j:plain

校正支援

設定

 初期設定はすべての構成が有効になっているようだ。設定の変更はマクロ内の次の部分の値を変えることで可能。

var FG = "1,2,3";

var NF = "";

 

/* filter_group
* 指摘グループの番号をコンマで区切って指定します。
1: 表記・表現の間違いや不適切な表現に関する指摘
  -誤変換、誤用、使用注意語、不快語(使用不適切な語や隠語など)、
  機種依存文字または拡張文字、外国地名、固有名詞、人名、ら抜き言
  葉 が指摘されます。
2: わかりやすい表記にするための指摘
  -当て字、表外漢字、用字(※) が指摘されます。
  ※日本新聞協会「新聞用語集」、共同通信社「記者ハンドブック」を
  主な参考としています。
3: 文章をよりよくするための指摘
  -用語言い換え、二重否定、助詞不足の可能性あり、冗長表現、
  略語 が指摘されます。
無指定の場合は、すべての指摘を返します。
*/
var FG = "1,2,3";


var NF = "";


/* no_filter
* filter_groupで指定した指摘グループから除外する指摘を指定します。
指摘番号をコンマで区切って指定します。
1: 誤変換  例:人事異同→人事異動
2: 誤用  例:煙に巻く→けむに巻く
3: 使用注意  例:外人墓地→外国人墓地
4: 不快語  例:がんをつける→にらむ
5: 機種依存または拡張文字(EUC表示不可の場合も指摘されます) 例:○付き数字、一部の旧字体など
6: 外国地名  例:モルジブモルディブ
7: 固有名詞  例:ヤフーブログ→Yahoo!ブログ
8: 人名  例:ベートーヴェン→ベートーベン
9: ら抜き  例:食べれる→食べられる
10: 当て字  例:出鱈目、振り仮名
11: 表外漢字あり  例:灯籠→灯●
12: 用字  例:曖昧→あいまい
13: 用語言い換え(商標など)  例:セロテープ→セロハンテープ
14: 二重否定  例:聞かなくはない
15: 助詞不足の可能性あり  例:学校行く
16: 冗長表現  例:ことができます
17: 略語  例:ADSL非対称デジタル加入者線(ADSL)
*/

Meryについて

 Meryは見た目的にメモ帳のようではあるが、マクロ、アウトライン、シンタックスハイライト、マクロがjavascriptを使えたり、漢字の対応が多いのが特徴。www.haijin-boys.com

 zipをダウンロードして、解凍してMery.exeをダブルクリックすると実行する。

 表示>色の反転で目が疲れないように背景を黒くしている。

f:id:kyukyunyorituryo:20161102002106j:plain

 

 

マクロのセットアップ

 

 ファイル:校正支援出力.zip、校正支援出力.zip をクリックしてダウンロードする。

 

www.haijin-boys.com

 

  解凍した中の校正支援出力.jsをMeryを展開したフォルダのMyMacros>Macrosに校正支援出力.jsを置く。

f:id:kyukyunyorituryo:20161102002046j:plain

マクロ、選択で先程追加したマクロを登録する。

f:id:kyukyunyorituryo:20161102002055j:plain

 標準ではマクロバーが表示されていないので、表示、ツールバー、マクロバーよりマクロバーを表示する。

f:id:kyukyunyorituryo:20161102002116j:plain

 

 アウトプットバーが開いていなかったので、結果が表示されるのに気づかなかった。

outputbar.Visible="true";

を追加すると、アウトプットバーが表示されるようになる。

 www.haijin-boys.com

99nyorituryo.hatenablog.com