GitHub - fasheng/elfeed-protocol: Provide extra protocols to make like ownCloud...
source link: https://github.com/fasheng/elfeed-protocol
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
elfeed-protocol
Provide extra protocols to make self-hosting RSS readers works with elfeed, including Nextcloud/ownCloud News, Tiny Tiny RSS, NewsBlur and even more.
Installation through MELPA
;; Install through package manager
M-x package-install <ENTER>
elfeed-protocol <ENTER>
Initialization
Setup elfeed-protocol, then switch to search view and and press G to update entries:
;; curl recommend (setq elfeed-use-curl t) (elfeed-set-timeout 36000) (setq elfeed-curl-extra-arguments '("--insecure")) ;necessary for https without a trust certificate ;; setup extra protocol feeds (setq elfeed-feeds '( ;; format 1 "owncloud+https://user1:[email protected]" ;; format 2, for password with special characters ("owncloud+https://[email protected]" :password "password/with|special@characters:") ;; format 3, for password in file ("owncloud+https://[email protected]" :password-file "~/.password") ;; format 4, for password in .authinfo, ensure (auth-source-search :host "myhost.com" :port "443" :user "user4") exists ("owncloud+https://[email protected]" :use-authinfo t) ;; format 5, for password in gnome-keyring ("owncloud+https://[email protected]" :password (shell-command-to-string "secret-tool lookup attribute value")) ;; format 5, for password in pass(1), using password-store.el ("owncloud+https://[email protected]" :password (password-store-get "owncloud/app-pass")) ;; use autotags ("owncloud+https://[email protected]" :password "password" :autotags '(("example.com" comic))))) (elfeed-protocol-enable)
To make elfeed-org
tag rules works together with elfeed-protocol
, just add a
after advice for elfeed
:
(defadvice elfeed (after configure-elfeed-feeds activate) "Make elfeed-org autotags rules works with elfeed-protocol." (setq elfeed-protocol-tags elfeed-feeds) (setq elfeed-feeds (list (list "owncloud+https://[email protected]" :password '(password-store-get "owncloud/app-pass") :autotags elfeed-protocol-tags))))
Protocol Details
owncloud (ownCloud News)
- Fetch articles with the modified time by default
- Support sync unread and starred tags, the starred tag name defined
in
elfeed-protocol-owncloud-star-tag
which default value isstar
. For example, if user addstar
tag to one article, the star stat will be sync to server, too - Support multiple fetching methods:
elfeed-protocol-owncloud-update-since-timestamp
elfeed-protocol-owncloud-update-since-id
elfeed-protocol-owncloud-update-older
Example:
(setq elfeed-protocol-owncloud-maxsize 1000) (setq elfeed-feeds (list "owncloud+https://user1:[email protected]" (list "owncloud+https://[email protected]" :password "password/with|special@characters:" :autotags '(("example.com" comic)))))
ttrss (Tiny Tiny RSS, requires version: 1.7.6)
- Fetch articles by the entry ID
- Fetch tags in remote
- Support sync unread, starred and published tags, the starred tag
name defined in
elfeed-protocol-ttrss-star-tag
which default value isstar
, and the published tag name defined inelfeed-protocol-ttrss-publish-tag
which default value ispublish
- Support multiple fetching methods:
elfeed-protocol-ttrss-update-older
elfeed-protocol-ttrss-update-star
NOTE: For Tiny Tiny RSS only allow fetch Maximize 200 entries each
time, so if your own much more starred entries, just run
elfeed-protocol-ttrss-update-star
manually to fetch them all
Example:
(setq elfeed-protocol-ttrss-maxsize 200) ; bigger than 200 is invalid (setq elfeed-feeds (list "ttrss+https://user1:[email protected]" (list "ttrss+https://[email protected]" :password "password/with|special@characters:" :autotags '(("example.com" comic)))))
newsblur (NewsBlur)
- Fetch articles from recent pages
- Fetch tags in remote
- Support sync unread, starred(saved) tags, the starred tag name
defined in
elfeed-protocol-ttrss-star-tag
which default value isstar
NOTE: For elfeed don't provide cookie argument for curl request,
user must setup elfeed-curl-extra-arguments
like the following
example.
Example:
(setq elfeed-protocol-newsblur-maxpages 20) (setq elfeed-curl-extra-arguments '("-c" "/tmp/newsblur-cookie" "-b" "/tmp/newsblur-cookie")) (setq elfeed-feeds (list "newsblur+https://user1:[email protected]" (list "newsblur+https://[email protected]" :password "password/with|special@characters:" :autotags '(("example.com" comic)))))
Run Unit-Tests
Install cask
system package firstly, and then run following commands
make init
make test
make checkdoc
make elint
make package-lint
Deploy Services for Testing
Nextcloud/ownCloud News
-
Fetch docker image and run it
docker pull nextcloud docker run --rm -p 80:80 nextcloud
-
Open http://127.0.0.1 in browser to setup Nextcloud
- Create admin user and select database to SQLite, then press "Finish setup"
- Press left top popup menu and select "+Apps", select "Multimedia", and enable the "News" app
- Press left top popup menu and switch to "News" app, then subscribe some feeds
-
Setup
elfeed-protocol
(setq elfeed-feeds '("owncloud+http://<admin>:<password>@localhost"))
Tiny Tiny RSS
-
Fetch related docker images and run them
docker pull clue/ttrss docker pull nornagon/postgres docker run --rm -d --name ttrssdb nornagon/postgres docker run --rm --link ttrssdb:db -p 80:80 clue/ttrss
-
Open http://127.0.0.1 in browser to setup Tiny Tiny RSS
- Use the default
admin:password
authorization info to login - Enter "Preferences" page to enable "Enable API access" and save configuration
- Use the default
-
Setup
elfeed-protocol
(setq elfeed-feeds '("ttrss+http://admin:password@localhost"))
Problems
- Sometimes emacs may be blocked if the parsing downloaded articles
is too large, for example >50MB. This is caused by the known emacs
bug that CPU will be in high usage if a text line is too
long. There three methods to workaround this:
-
Method 1, limit the download size, for example:
(setq elfeed-protocol-owncloud-maxsize 1000)
-
Method 2, for ownCloud, just update articles since special entry ID instead the modified time, this could run multiple times to keep up to date to avoid download too large entries once time
M-x elfeed-protocol-owncloud-update-since-id
-
Method 3, some protocol provide update method to reset the last modified time to skip some data, for example:
M-x elfeed-protocol-owncloud-update-since-timestamp
-
License
Released under the terms of the GNU GPLv3+.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK