1 ! Copyright (C) 2006 Daniel Ehrenberg, Walton Chan
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: http.client xml xml.traversal kernel sequences
4 math.parser urls accessors ;
7 TUPLE: result title url summary ;
11 TUPLE: search query results adult-ok start appid region type
12 format similar-ok language country site subscription license ;
14 : parse-yahoo ( xml -- seq )
15 "Result" deep-tags-named [
16 { "Title" "Url" "Summary" }
17 [ tag-named children>string ] with map
21 CONSTANT: yahoo-url URL" http://search.yahooapis.com/WebSearchService/V1/webSearch"
23 :: param ( search url name quot -- search url )
24 search url search quot call
25 [ name set-query-param ] when* ; inline
27 : num-param ( search str quot -- search )
28 [ dup [ number>string ] when ] compose param ; inline
30 : bool-param ( search str quot -- search )
31 [ "1" and ] compose param ; inline
33 : query ( search -- url )
35 "appid" [ appid>> ] param
36 "query" [ query>> ] param
37 "region" [ region>> ] param
38 "type" [ type>> ] param
39 "format" [ format>> ] param
40 "language" [ language>> ] param
41 "country" [ country>> ] param
42 "site" [ site>> ] param
43 "subscription" [ subscription>> ] param
44 "license" [ license>> ] param
45 "results" [ results>> ] num-param
46 "start" [ start>> ] num-param
47 "adult_ok" [ adult-ok>> ] bool-param
48 "similar_ok" [ similar-ok>> ] bool-param
51 CONSTANT: factor-id "fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugBe2pgIevMmKwA-"
53 : <search> ( query -- search )
59 : yahoo-search ( search -- seq )
60 query http-get nip string>xml parse-yahoo ;