From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: GH Newsgroups: gmane.emacs.help Subject: Re: functions to download mailing list archives Date: Thu, 16 Jun 2022 02:13:14 +0200 Organization: Huh? me? Message-ID: <87zgidv52d.fsf@gnu.org> References: <87r13tikgn.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18770"; mail-complaints-to="usenet@ciao.gmane.io" To: Help GNU Emacs Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Jun 16 02:13:59 2022 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o1d95-0004gl-FB for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 16 Jun 2022 02:13:59 +0200 Original-Received: from localhost ([::1]:35784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o1d94-0004e2-GM for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 15 Jun 2022 20:13:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36042) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o1d8U-0004dd-CY for help-gnu-emacs@gnu.org; Wed, 15 Jun 2022 20:13:22 -0400 Original-Received: from mta763.solicitae.com ([89.35.150.78]:51868 helo=smtp.gnuhacker.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o1d8S-00006S-9n for help-gnu-emacs@gnu.org; Wed, 15 Jun 2022 20:13:22 -0400 Original-Received: from encrypted.gnu.org (localhost [127.0.0.1]) by smtp.gnuhacker.org (Postfix) with ESMTP id 587DD6038BD for ; Thu, 16 Jun 2022 02:13:14 +0200 (CEST) In-Reply-To: <87r13tikgn.fsf@gnu.org> (GH's message of "Mon, 13 Jun 2022 00:30:00 +0200") Received-SPF: none client-ip=89.35.150.78; envelope-from=project@gnuhacker.org; helo=smtp.gnuhacker.org X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, KHOP_HELO_FCRDNS=0.187, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:137871 Archived-At: Fixed without recursion #+begin_src elisp ;;; Code under GPLv3-or-later (defun lists-mbox-url-list (url-head id date) (with-current-buffer "*eww*" (beginning-of-buffer) (let ((url-list '())) (while (save-excursion (text-property-search-forward 'shr-url nil nil t)) (shr-next-link) (let ((url (thing-at-point 'url))) (if (and url (string-match (format "%s/archive/mbox/%s/%s\\(.+\\)" url-head id date) url)) (add-to-list 'url-list url)))) url-list))) (defun lists-mbox-download (url-head id) (let* ((date (read-number "Date filter: " 20)) (dir (read-file-name "Download directory: ")) (url-list (lists-mbox-url-list url-head id date))) (dolist (url url-list) (url-retrieve url #'eww-download-callback (list url dir))))) (defun lists-load-archive (url-head id) (interactive (list "https://lists.gnu.org" (read-from-minibuffer "Mailing list id: "))) (if (y-or-n-p "Load as mbox files?") (prog1 (eww-browse-url (format "%s/archive/mbox/%s/" url-head id)) (if (y-or-n-p "Download archive mboxes?") (lists-mbox-download url-head id))) (eww-browse-url (format "%s/archive/html/%s/" url-head id)))) #+end_src Test it (lists-load-archive "https://lists.gnu.org" "help-gnu-emacs") Or call it interactivelly: M-x lists-load-archive RET help-gnu-emacs RET y y