コマンドラインから日本化粧品工業連合会の成分表示名称リスト検索するのに使ったツールたち。


コマンドラインから日本化粧品工業連合会の成分表示名称リスト検索するのに使ったツールたち。

化粧品の輸入をする場合INCI名で書かれた成分リストを日本語のものに変換する作業が絶対に必要になる。日本化粧品工業連合会のWEBで検索してポチポチとやっていたのだが、めんどくさくなったのでコマンドライン から作業した時の記録。

前提条件

  • mac
  • zsh
  • xmllint
  • sed
  • mktemp

作ったfunction

  • chochodo_search_from_jcia [SEACH_WORDS]: 緩やかな検索用(xml取得)
  • chochodo_search_from_jcia_by_inci [INCI_NAME]: スタティックな検索用(xml取得)
  • chochodo_get_data_by_inci [INCI_NAME]: INCI名から「INCI名,表示名称,No,INCI名(検索結果)」のカンマ区切りを得る
  • chochodo_trim [STRING]: 前後のトリム(って言わないの?)
  • chochodo_get_inci_csv [FILE_PATH] : INCI名のリスト(1行に1INCI名が入ったテキストファイル)を順に検索していって、INCI名と表示名称の入ったcsvを出力する

ファイルへの書き込みはchochodo_get_inci_csv 中でmktempを使った場所のみなので心が苦しくならない。

使い方

INCI名のリスト(1行に1INCI名が入ったテキストファイル)を用意します。
全部べたっとコマンドラインに貼り付けて 

hochodo_get_inci_csv <INCI名のリスト>

を呼び出す。

結果は画面にずらっと出てくる。


function chochodo_search_from_jcia(){

  if test -z $1 ; then
    echo "usage  : chochodo_search_from_jcia [SEARCH_WORDS]"
    echo "ex) chochodo_search_from_jcia BG"
    return
  fi
  (
  PHPSESSID=$(curl 'https://www.jcia.org/user/business/ingredients/search' \
    -H 'Connection: keep-alive' \
    -H 'Accept: */*' \
    -H 'X-Requested-With: XMLHttpRequest' \
    -H 'sec-ch-ua-mobile: ?0' \
    -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
    -H 'Origin: https://www.jcia.org' \
    -H 'Sec-Fetch-Site: same-origin' \
    -H 'Sec-Fetch-Mode: cors' \
    -H 'Sec-Fetch-Dest: empty' \
    -H 'Referer: https://www.jcia.org/user/business/ingredients/namelist' \
    -H 'Accept-Language: ja,en-US;q=0.9,en;q=0.8' \
    --data-raw 'search%5Bfreeword%5D='"$1" \
    --compressed -i | grep 'Set-Cookie: PHPSESSID=' | cut -d '='  -f2 | cut -d ';' -f1)

   curl 'https://www.jcia.org/user/business/ingredients/list/page/0' \
        -H 'Connection: keep-alive' \
        -H 'Accept: text/plain, */*; q=0.01' \
        -H 'sec-ch-ua-mobile: ?0' \
        -H 'X-Requested-With: XMLHttpRequest' \
        -H 'Sec-Fetch-Site: same-origin' \
        -H 'Sec-Fetch-Mode: cors' \
        -H 'Sec-Fetch-Dest: empty' \
        -H 'Referer: https://www.jcia.org/user/business/ingredients/namelist' \
        -H 'Accept-Language: ja,en-US;q=0.9,en;q=0.8' \
        -H 'Cookie: PHPSESSID='$PHPSESSID';' \
        --compressed | xmllint --encode utf8 --noblanks -
    )
  }


function chochodo_search_from_jcia_by_inci(){

  if test -z $1 ; then
    echo "usage  : chochodo_search_from_jcia_by_inci [INCI_NAME]"
    echo "ex) chochodo_search_from_jcia_by_inci BG"
    return
  fi
  (
  chochodo_search_from_jcia '@'"$1"
  )
  }

function chochodo_get_data_by_inci(){
(
 INCI_NAME_FROM_FILE=$1
 RESULT_XML=$(chochodo_search_from_jcia_by_inci $INCI_NAME_FROM_FILE)
 ROW=$(echo $RESULT_XML|xmllint --xpath '/return_data/rows/row[1]' - |xmllint --encode utf8 --noblanks -)
 NAME=$(chochodo_trim "$(echo $ROW|head -5| tail -1 )")
 NO=$(chochodo_trim "$(echo $ROW|head -3| tail -1 )") 
 INCI_NAME=$(chochodo_trim "$(echo $ROW|head -7| tail -1 )")

 echo '"'$INCI_NAME_FROM_FILE'","'$NAME'","'$NO'","'$INCI_NAME'"'
)

}

function chochodo_trim(){
(echo $1|sed 's/^[[:blank:]]*//'|sed 's/[[:blank:]]*$//')
}

function chochodo_get_inci_csv(){
(
FILE_NAME=$1
CSV_FILE_NAME=$(mktemp)
echo "INCI_NAME_FROM_FILE,NAME,NO,INCI_NAME" >$CSV_FILE_NAME
while read INCI_NAME
do

  echo $(chochodo_get_data_by_inci "$(trim $INCI_NAME)") >> $CSV_FILE_NAME
done < $FILE_NAME
cat $CSV_FILE_NAME
rm $CSV_FILE_NAME
)
}