商品カテゴリはネットショップを長く運営しているとどんどん増えてくる。その管理をするのはコストがかかるし、複数モールを運営しているとさらにコストがかかる。
複数モールでECを運営している場合、カテゴリの管理はマスターでして、各モールにはそのマスターを自動反映するのが楽でいいだろう。
今回は楽天のカテゴリ一覧の取得と、カテゴリ追加をPythonで実行する方法を紹介する。
カテゴリ一覧の取得
楽天のCategoryAPIの認証形式はsoapでないのでカテゴリ一覧は簡単に取得できる。ちなみに下記のソースは解説のために便宜上APIキーをソースにベタ書きしていることになるが、実際は環境変数またはDBで暗号化して扱うべきである。
import urllib.request import sys, codecs import requests import base64 import json import datetime import time from pytz import timezone #楽天api serviceSecret = 'hogehoge' licenskey = 'hogehoge' b64 = serviceSecret + ':' + licenskey b64_en = base64.b64encode(b64.encode()) def get_rakuten_category(): """ APIで楽天カテゴリ一覧を取得 """ headers = { 'Authorization': b'ESA ' + b64_en, 'Content-Type': 'text/xml; charset=utf-8', } #まずはある日の注文番号の一覧を取得 url_search_order = 'https://api.rms.rakuten.co.jp/es/1.0/categoryapi/shop/categories/get' r_post = requests.get(url_search_order, headers=headers) return r_post
これだけで運営している店舗のカテゴリ一覧の取得ができる。
カテゴリの追加
次にカテゴリの追加をしよう。認証方法は上記と同じ。カテゴリの追加はXML形式で行う。categoryIdは親カテゴリの追加を指定する。0ならトップディレクトリとなる。nameがカテゴリ名だ。カテゴリ名が全角の場合は、postする際に.encode(“utf-8”)を指定しないとエラーとなるので注意。
以下の関数を実行するだけでカテゴリが楽天に反映される。数百のカテゴリを手作業で追加するなんて不毛なことをやる必要はない。ネットショップ店長はもちろん店舗運営者は、つまらない作業はどんどんプログラムにやらせて、もっと大事なことに時間を使おう。
def put_rakuten_category(): """ APIで楽天カテゴリに登録 """ headers = { 'Authorization': b'ESA ' + b64_en, 'Content-Type': 'text/xml; charset=utf-8', } url_search_order = 'https://api.rms.rakuten.co.jp/es/1.0/categoryapi/shop/category/insert' bytesXMLPostBody = (''' <?xml version="1.0" encoding="UTF-8"?> <request> <categoryInsertRequest> <categoryId>0000000003</categoryId> <category> <name>テスト</name> </category> </categoryInsertRequest> </request> ''') r_post = requests.post(url_search_order, headers=headers, data=bytesXMLPostBody.encode("utf-8")) return r_post