現在のページの位置: くろねこスクエア Labs >

くろねこスクエア Labs

【復旧】 RakuFeedの不具合

楽天の商品などを検索するRakuFeedにおいて、楽天トラベル系APIの戻り値がエラーとなっていました。

従来「api.rakuten.co.jp」で提供されていた楽天トラベル系APIの完全廃止に伴い、新バージョンへの切り替えを行いましたが、その際の対応が不完全であったことによるものです。

修正を行い、現在は復旧しています。

GnaviFeed に絞込みパラメータを追加しました

ぐるなびのレストランを検索するGnaviFeedにおいて、絞込みパラメータを30項目以上追加しました。

今回の変更は、レストラン検索API(ver1)機能改修版(2014/11/27)に対応するものです。

AFeedでアダルト製品の除外処理

Amazon APIを使ったAFeedにおいて、アダルト製品の除外処理を追加しました。

通常の検索クエリーでは検索結果にアダルト製品を含めるかどうかを指定できないため、新たに特別なパラメータ「adultFlag」を追加しました。「adultFlag=1」の場合は表示、「adultFlag=0」の場合は非表示となります。何も指定しない場合は「adultFlag=0」として扱い、非表示となります。

現在、アダルト製品かどうかの判定をIsAdultProductで行っていますが、他の要素も含めるかどうか検討中です。

RakuFeed 新APIへアップデート

RakuFeedで使用するAPIを、2012年6月にリニューアルされた新バージョン(従来の楽天API2)へ移行しました。

楽天トラベル系API バージョンアップと「api.rakuten.co.jp」で提供しているAPIに関するお知らせによると、 「api.rakuten.co.jp」で提供している古いAPIにつきましては、2014年内に廃止を予定しております。 だそうなので、そろそろ移行すべきだと判断しました。

なお楽天から公式でリリースされているPHP SDKを利用しています。

AFeed リリース

キーワードに合ったAmazon.co.jpの情報を、使いやすい形で取得するためのWebサービス「AFeed」をリリースしました。Amazon.co.jpの豊富な情報をキーワードなどで絞り込み、RSS/ATOMなどのデータとして取得することができます。

Amazon Product Advertising API」の仕様に準拠しましたので、容易に利用できると思います。

PEARライブラリ Services_Amazonを公開してくださった開発者様に感謝いたします。

YFeed オークション検索 アップデート

このたび「YFeed」のアップデートを行いました。Yahoo!オークション関連での出力項目を追加したほか、Yahoo!オークションのオリジナルRSSフィードとのパラメータ互換性を高めました。

主な変更点は以下のとおりです。

  • Yahoo!オークションで取得できるRSSフィードのパラメータを、YFeedでもそのまま使用できるようにしました。
  • 即決価格や出品者ID、画像など、オリジナルRSSフィードでは取得できない項目を追加しました。

KakakuFeed Ver1.0仕様へアップデート

キーワードに合った価格.comの情報を、使いやすい形で取得するためのWebサービス「KakakuFeed」をアップデートしました。これまで同様、価格.comの商品をキーワードやジャンルで絞り込み、RSS/ATOMなどのデータとして取得することができます。

アップデートの詳細

2009年8月末をもって、従来のVer1およびVer1.1のAPI提供が終了したため、このたび価格.com ウェブサービス Ver1.0(1ではなく1.0)の仕様に準拠いたしました。

従来から使用させていただいているPEAR::Services_KakakuComを価格.com ウェブサービス Ver1.0に(適当に)対応させたものを置いておきます。

  • ApiKeyパラメータを追加
  • リクエストURL変更

バーコード作成 リリース

バーコードを作成するためのWebサービス「バーコード作成」と「QRコード作成」をリリースしました。各種バーコードに対応しています。

バーコードの作成」を参考にさせていただきました。

今回対応したバーコード

  • JAN-13/EAN-13/ISBN-13
  • UPC-A
  • CODE 39
  • Code 25 Interleaved 2 of 5(ITF)
  • CODE 128
  • PostNet
  • 日本郵便 カスタマバーコード

ところで「日本郵便 カスタマバーコード」は需要がないのかライブラリがないのでバーコードに必要な文字情報の抜き出し法を参考にして書いてみたのが以下のPHPコード。漢数字は面倒なので対応していません。もう少しスマートなやり方はないだろうか?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
function validator_imbjp($text){
    $text = trim($text);
    $text = strtoupper($text);
    $rep_pat= array("&","/","・",".");
    $text = str_replace($rep_pat,'',$text);
    $text = preg_replace('/[A-Z]{2,}/','',$text);

    // /[0-9]F/ -> [0-9]-, 2-3-$ => 2-3
    if(preg_match_all('/[0-9]F/',$text, $matches)){
        foreach($matches[0] as $key => $value){
            $mat[$key] = str_replace('F','-',$value);
        }
        $text = str_replace($matches[0],$mat,$text);
        $text = preg_replace('/-$/','',$text);
    }

    if(preg_match_all('/[A-Z0-9\-]+/', $text, $matches)){
        $text = implode('-', $matches[0]);
    } else {
        return;
    }

    // A-2 => A2, L-B => LB
    if(preg_match_all('/-*[A-Z]-*/',$text, $matches)){
        foreach($matches[0] as $key => $value){
            $mat[$key] = str_replace('-','',$value);
        }
        $text = str_replace($matches[0],$mat,$text);
    }

    $text = str_replace('--','-',$text);
    if(substr($text,3,1)=='-'){
        $text = substr_replace($text,'',3,1);
    }
    if(substr($text,7,1)=='-'){
        $text = substr_replace($text,'',7,1);
    }

    //numstring
    for ($idx = 0; $idx < strlen($text); $idx++) {
        $char  = substr($text, $idx, 1);
        for ($baridx = 0; $baridx < strlen($this->_coding_map[$char]);) {
            $numstring[] = substr($this->_coding_map[$char], $baridx, 3);
            $baridx = $baridx+3;
        }
    }

    //numstring length check(add and remove)
    if(count($numstring) < 20){
        for($idx = count($numstring); $idx < 20; $idx++){
            $numstring[] = '432';
        }
    }
    $numstring = array_slice($numstring,0,20);
   
    //Check digit
    foreach($numstring as $value) {
        $checksum = $checksum + $this->_checkdg_map[$value];
    }
    if(($checksum % 19) == 0) {
        $checkdigit = 0;
    } else {
        $checkdigit = (19 - ($checksum % 19));
    }

    //leader + number + checkdigit + trailer
    $numstring = $this->_coding_map['leader'].implode('',$numstring).$this->_coding_map[$checkdigit].$this->_coding_map['trailer'];
    return $numstring;
}

最終的な出力はPEAR::Image_Barcodeにおまかせ。参考までに、Image_Barcodeで使える「日本郵便 カスタマバーコード」クラスを置いておきます。

Y!Feed トピックスAPI Version2にアップデートに対応

Yahoo!デベロッパーネットワークにてアナウンスがありました「トピックスAPI Version2」に対応するため、「Y!Feed」のアップデートを行いました。

Version 2での主な変更点は以下のとおりです。

  • Version 1でのリクエストパラメータであるtopflgの1の指定は、Version 2のpickupcategoryのtop指定と同等です。
  • Version 1でのmidashiflgの1の指定は、Version 2のpickupdategoryのall指定と同等です。
  • Version 1でのorderはVersion 2ではsort内で+か-で指定します。
  • Version 1でのwordはVersion 2ではqueryに名称変更しています。
  • Version 1でのnumはVersion 2ではresultsに名称変更しています。
  • Version 2ではstartを使ってリクエストを繰り返すことでデータの全件取得が可能です。

参考までに、従来から使用させていただいているPEAR::Services_Yahoo_JPを、2009年6月までのいくつかのアップデートに(適当に)対応させたものを置いておきます。

Y!Feed リリース

キーワードに合ったYahoo! JAPANの情報を、使いやすい形で取得するためのWebサービス「Y!Feed」をリリースしました。Yahoo! JAPANの豊富な情報をキーワード、ジャンルなどで絞り込み、RSS/ATOMなどのデータとして取得することができます。

Yahoo!デベロッパーネットワーク」の仕様に準拠しましたので、容易に利用できると思います。

PEARライブラリ Services_Yahoo_JPを公開してくださったTetsuya Nakase氏に感謝いたします。

カテゴリー

Feed

メタ情報