drawnboy meets subtech☆

 | 

2006-09-25

Geo::Coder::YahooJapan 21:21

なんかやりたいけど何も思い浮かばないのでとりあえずメモ。

----

#!/usr/bin/ruby

require 'uri'
require 'open-uri'
require 'rexml/document'

module Geo
  module Coder
    class GeoCoderError < RutimeError; end
    class YahooJapan
      ENDPOINT = 'http://api.map.yahoo.co.jp/MapsService/V1/search'

      attr_accessor :num, :b, :place
      def initialize(options = {})
        @num   = options[:num]    || 10
        @b     = options[:b]      || 1
        @place = options[:place]
      end

      def search(place)
        @place = place if place
        raise GeoCoderError.new("Error: name of place is required.") unless place
        uri = URI.parse ENDPOINT
        uri.query = URI::escape "p=#{@place}&b=#{@b}&n=#{@num}" 
        res = open(uri.to_s).read

        results = []
        doc = REXML::Document.new res
        doc.each_element("/channel/item") do |elm|
          item = {}
          %w(title description genre longitude latitude).each do |key|
            item[key] = elm.elements[key].text
          end
          results.push item
        end
        
        results
      end
    end
  end
end

if $0 == __FILE__
  require 'rubygems'
  require 'json'
  geo = Geo::Coder::YahooJapan.new
  places = geo.search('セブンイレブン 鎌倉')
  puts places.to_json
end
[{"latitude":"35.32743694","title":"セブンイレブン","description":"神奈川県鎌倉市","genre":"ショッピング施設、販売店","longitude":"139.51304111"},{"latitude":"35.32873306","title":"セブンイレブン","description":"神奈川県鎌倉市","genre":"シ ョッピング施設、販売店","longitude":"139.50844194"},{"latitude":"35.34578","title":"セブンイレブン","description":"神奈川県鎌倉市","genre":"ショッピング施設、販売店","longitude":"139.51876694"},{"latitude":"35.35049389","title":"セブンイレレブン","description":"神奈川県鎌倉市","genre":"ショッピング施設、販売店","longitude":"139.52988694"},{"latitude":"35.35953306","title":"セブンイレブン","description":"神奈川県鎌倉市","genre":"ショッピング施設、販売店","longitude":"139.54756"}]

横浜の映画館一覧みたいな検索はできなかった。施設名でひっかけるかんじ。

amazon でアダルト商品を検索対象から外す 20:23

ということがしたいのだけれど、ECS4 のマニュアルを読んでも見つからなかった (ようにおもう)。

レスポンスからアダルト商品を判別して削除してゆくのであればできそうだけれど、それではめんどいし。とか思っていたら、たまたまクリックした google adsense のアマゾンの広告で "キーワード -アダルト" という風に商品検索をかけているのを発見。ためしにやってみたら、期待通り動いてるような気がしないわけでもない。

 |