awstatsで携帯端末情報を表示させる方法
awstatsには、もともと携帯端末情報を表示する機能が備わっており、
awstats.confでLevelForBrowsersDetection=allphonesと設定することで、
"lib/browser_phone.pm"に記載されている
ユーザエージェントと端末名のマッピング情報を読み込んで、
端末情報が表示されるようになる。
しかし、デフォルトでは、国内キャリアの端末に関する情報は記載されていない。
そこで、端末のプロファイルデータが、
以下のサイト等で無料で公開されていたりするので、
これらのデータを利用することにする。
すばらしい!
インターネット総合研究所
http://imri.impressrd.jp/iil/k-taiprofile/?q=k-taiprofile/
ke-tai.org
http://ke-tai.org/index.php?%B7%C8%C2%D3%C3%BC%CB%F6%A5%B9%A5%DA%A5%C3%A5%AF%B0%EC%CD%F7
awstatsで、端末情報表示させたかったらみんな似たようなことしてるはず。。
そこで、ke-tai.orgで、提供されているcsvデータから
browser_phone.pmを自動生成するスクリプトをざっくり書いてみました。phpです。
perlで書けよ!>俺
インプレスR&Dの方も似たような感じになるかと思います。
データ自体は、上記サイトから取得してください。
<?php $csv = fopen("20080820_ke-tai_list.csv", "r"); //through 2 lines fgetcsv($csv, 1000, ","); fgetcsv($csv, 1000, ","); $idOrderArea = "@BrowsersSearchIDOrder = ( 'opera',\n"; $idLibArea = "%BrowsersHashIDLib = ( # Common web browsers text 'msie','MS Internet Explorer', 'netscape','Netscape', 'firefox','Firefox', 'svn', 'Subversion client', 'opera', 'Opera', "; $ids = array(); $pattern = array("/([^\[^\(]+).*/", "/\s$/", "/'/", "/\s/", "/-/", "/\./", "/_/"); $rep = array("$1", "", "\'", "\\s", "\-", "\.", "\_"); while ($datas = fgetcsv($csv, 1000, ",")) { if ($datas[2] === "" || $datas[4] === "") { continue; } if (isset($ids[$datas[4]])) { echo $datas[4]. "is duplicate. \n"; continue; } else { $ids[$datas[4]] = $datas[2]; } $id = preg_replace($pattern, $rep, mb_convert_encoding(strtolower($datas[4]), "UTF-8", "Shift_JIS")); $name = preg_replace($pattern, $rep, mb_convert_encoding($datas[2], "UTF-8", "Shift_JI S")). "(".$datas[1] .")"; $idLibArea .= "'" . $id . "', '" . $name ."',\n"; $idOrderArea .= "'" . $id ."',\n"; } fclose($csv); $idOrderArea .= ");\n\n"; $idLibArea .= ");"; $filename = "browsers_phone.pm"; if (!$handle = fopen($filename, "w")) { echo "Cannot open $filename"; exit; } if (!fwrite($handle, $idOrderArea.$idLibArea)) { echo "Cannot write to file ($filename)"; exit; } fclose($handle); ?>
ユーザエージェントが重複する場合は、一つ目だけを有効としています。
バグってたらご指摘をお願いします。
インプレスR&D版は、こちらを参照
http://d.hatena.ne.jp/kazukiz/20080823/1219431176