[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elisa 1f5a462be4 34/98: Add search duckduckgo function
From: |
ELPA Syncer |
Subject: |
[elpa] externals/elisa 1f5a462be4 34/98: Add search duckduckgo function |
Date: |
Wed, 17 Jul 2024 18:58:02 -0400 (EDT) |
branch: externals/elisa
commit 1f5a462be40cfb2dff23a393b1e0cffc19b5bda0
Author: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Commit: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Add search duckduckgo function
---
elisa.el | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/elisa.el b/elisa.el
index 53585857f9..20c4a251ed 100644
--- a/elisa.el
+++ b/elisa.el
@@ -48,6 +48,7 @@
(require 'llm)
(require 'info)
(require 'async)
+(require 'dom)
(defcustom elisa-embeddings-provider (progn (require 'llm-ollama)
(make-llm-ollama
@@ -317,6 +318,30 @@ closer it is to 1, the more similar it is."
(mapcar #'string-trim
(nreverse result)))))
+(defun elisa-search-duckduckgo (prompt)
+ "Search duckduckgo for PROMPT and return list of urls."
+ (let* ((url (format "https://duckduckgo.com/html/?q=%s" (url-hexify-string
prompt)))
+ (buffer-name (url-retrieve-synchronously url t)))
+ (with-current-buffer buffer-name
+ (goto-char (point-min))
+ (search-forward "<!DOCTYPE")
+ (beginning-of-line)
+ (cl-remove-if
+ #'string-empty-p
+ (cl-remove-duplicates
+ (mapcar
+ (lambda (el)
+ (when el
+ (string-trim-right
+ (url-unhex-string
+ (cdar (url-parse-args (or (dom-attr el 'href) ""))))
+ "[&\\?].*")))
+ (dom-by-tag
+ (libxml-parse-html-region
+ (point) (point-max))
+ 'a))
+ :test 'string-equal)))))
+
(defun elisa-get-builtin-manuals ()
"Get builtin manual names list."
(mapcar
- [elpa] branch externals/elisa created (now c842f1ce32), ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 8251bfb4ed 05/98: Fix async commands, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 36ea38a574 08/98: Add elisa-chat-provider custom variable, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 8c5d28ffea 01/98: Add ELISA implementation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 921e815d89 06/98: Reopen elisa db on async parsing done, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa cb57cf3001 09/98: Improve docs, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 61bc97993e 16/98: Exclude load-file check not working in CI, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa ad67b47b50 10/98: Improve docs, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa de9fa3c1a4 28/98: Fix docs, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 1f5a462be4 34/98: Add search duckduckgo function,
ELPA Syncer <=
- [elpa] externals/elisa 3324a2e68d 41/98: Use plz to get web requests. Add optional search with searxng., ELPA Syncer, 2024/07/17
- [elpa] externals/elisa c050a9c987 42/98: Improve prompt rewrite template, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 50d7fa5963 43/98: Improve error handling, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa e50570e2ee 49/98: Inject missing variables for async execution, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa acf2521ad3 59/98: Add functions to prepare file list for parsing, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa f3bb796a65 64/98: Implement collection management, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa af9da0b561 68/98: Refactor prompt rewriting, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 252ba926f9 73/98: Add ability to customize extensions path, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 35f6e3dbd1 75/98: Disable reranker by default, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 7d8da4cd04 79/98: Fix checkdoc warning, ELPA Syncer, 2024/07/17