Add a headless engine (google, baidu, bing_cn) using BrowserPool
(search: &mut Search, shortcut: &str, pool: &Arc<BrowserPool>)
| 93 | |
| 94 | /// Add a headless engine (google, baidu, bing_cn) using BrowserPool |
| 95 | fn add_headless_engine(search: &mut Search, shortcut: &str, pool: &Arc<BrowserPool>) -> bool { |
| 96 | match shortcut.trim() { |
| 97 | "g" | "google" => { |
| 98 | let fetcher = BrowserFetcher::new(Arc::clone(pool)).with_wait(WaitStrategy::Selector { |
| 99 | css: "div.g".to_string(), |
| 100 | timeout_ms: 5000, |
| 101 | }); |
| 102 | search.add_engine(Google::new(Arc::new(fetcher))); |
| 103 | true |
| 104 | } |
| 105 | "baidu" => { |
| 106 | let fetcher = BrowserFetcher::new(Arc::clone(pool)).with_wait(WaitStrategy::Selector { |
| 107 | css: "div.c-container".to_string(), |
| 108 | timeout_ms: 5000, |
| 109 | }); |
| 110 | search.add_engine(Baidu::new(Arc::new(fetcher))); |
| 111 | true |
| 112 | } |
| 113 | "bing_cn" => { |
| 114 | let fetcher = |
| 115 | BrowserFetcher::new(Arc::clone(pool)).with_wait(WaitStrategy::Delay { ms: 2000 }); |
| 116 | search.add_engine(BingChina::new(Arc::new(fetcher))); |
| 117 | true |
| 118 | } |
| 119 | _ => false, |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | #[async_trait] |
| 124 | impl Tool for WebSearchTool { |