Ver Fonte

Fix content-encoding and allow indexes to remove rss

Innokenty Enikev há 10 anos atrás
pai
commit
b38a7c4b94
2 ficheiros alterados com 15 adições e 9 exclusões
  1. 14 8
      chatikbot.lisp
  2. 1 1
      rss.lisp

+ 14 - 8
chatikbot.lisp

@@ -333,9 +333,10 @@
    chat-id
    (if (null feeds)
        "Пока ничего не постим"
-       (format nil "Постим:~%~{~A (~A)~^~%~}"
+       (format nil "Постим~%~{~A) ~A: ~A~^~%~}"
                (loop for feed in feeds
-                  append (list (feed-title feed) (feed-url feed)))))
+                  for index from 1
+                  append (list index (feed-title feed) (feed-url feed)))))
    :disable-web-preview 1))
 
 (defun %get-feed (url)
@@ -378,12 +379,17 @@
             (%send-feeds chat-id feeds)
             (progn
               (dolist (url args)
-                (alexandria:when-let (feed (%get-feed
-                                            (or (cadar (find-rss-links url))
-                                                url)))
-                  (if (member feed feeds)
-                      (setf feeds (remove feed feeds))
-                      (push feed feeds))))
+                (handler-case
+                    (let ((idx (parse-integer url)))
+                      (when (<= idx (length feeds))
+                        (setf feeds (remove (nth (1- idx) feeds) feeds))))
+                  (parse-error ()
+                    (alexandria:when-let (feed (%get-feed
+                                                (or (cadar (find-rss-links url))
+                                                    url)))
+                      (if (member feed feeds)
+                          (setf feeds (remove feed feeds))
+                          (push feed feeds))))))
               (setf (gethash chat-id *rss-chat-feeds*) feeds)
               (%refresh-feeds)
               (save-settings)

+ 1 - 1
rss.lisp

@@ -20,7 +20,7 @@
 
 (defun url-parse (url)
   (multiple-value-bind (body status headers uri stream)
-      (drakma:http-request (http-default url) :force-binary t)
+      (drakma:http-request (http-default url) :force-binary t :decode-content t)
     (declare (ignore status headers stream))
     (values
      (plump:parse (flexi-streams:octets-to-string body :external-format :utf-8))