Как использовать Emacs для RSS с Elfeed

Эмблема Emacs Rss 00

Emacs — это очень расширяемое программное обеспечение. Он может быть вашим текстовым редактором, вашим почтовым клиентом и даже вашим читателем USENET. С Elfeed вы также можете использовать Emacs в качестве читателя RSS-лент.

Содержание

  • Что такое Elfeed?
  • Почему использовать читатель лент в Emacs?
  • Установка Elfeed в Emacs
  • Настройка вашей первой RSS-ленты в Emacs
  • Как автоматически помечать и фильтровать ленты в Emacs
  • Как автоматически помечать ленты на основе URL
  • Как создать пользовательские цвета и шрифты для меток
  • Часто задаваемые вопросы

Также читайте: 5 лучших приложений для чтения RSS для macOS

Что такое Elfeed?

Elfeed — это легкий, но мощный читатель RSS-лент, написанный для Emacs. Он использует простую систему на основе меток для сортировки ваших RSS-лент. Более того, он также поставляется с мощной системой меток на основе “хуков”, которая позволяет вам автоматически помечать ленты на основе их содержания.

Эмблема Emacs Rss 02 Elfeed Summary

Это делает Elfeed полезным для людей, которые следят за множеством RSS-лент и ищут способ автоматически сортировать свои ленты.

Также читайте: Как использовать Emacs для воспроизведения музыки с EMMS

Почему использовать читатель лент в Emacs?

Emacs работает в концепции интероперабельности, так как Emacs берет данные и позволяет интерпретировать их различными способами.

Эмблема Emacs Rss 03 Emacs Interoperability

Хотя вы можете использовать Emacs исключительно для редактирования текста, возможность доступа к вашей электронной почте во время редактирования текста, например, может позволить вам бесшовно использовать текст, который вы пишете, в электронной почте, которую вы составляете.

Эмблема Emacs Rss 04 Emacs Email Rss

Вот почему интеграция вашего RSS-читателя в Emacs может быть привлекательной. Это позволит вам использовать мощные возможности редактирования Emacs для манипуляции вашими лентами и другими функциями в Emacs.

Установка Elfeed в Emacs

Установка Elfeed очень проста. Он доступен из репозитория GNU ELPA, поэтому вы можете получить к нему доступ без каких-либо изменений в вашем файле init.el.

Эмблема Emacs Rss 05 Elfeed Installed

Чтобы установить Elfeed, нажмите Alt + X, чтобы открыть буфер команд, затем введите package-install. Вам нужно указать elfeed как имя пакета и нажать Enter. Emacs загрузит исходный код Elfeed и сразу же скомпилирует его.

Настройка вашей первой RSS-ленты в Emacs

После установки получите доступ к Elfeed, нажав Alt + X и введя elfeed в буфере команд. Это загрузит пустой буфер Elfeed.

Эмблема Emacs Rss 06 Elfeed Clean

Существует два способа добавить RSS-ленту в Elfeed:

  • Вручную отредактировать ваш файл init.el

  • Без Emacs

Добавление RSS-ленты вручную в Elfeed

Вы можете легко заполнить Elfeed, вручную добавив URL-адреса лент в ваш файл init.el, так как Elfeed отслеживает переменную “elfeed-feeds”. Это говорит Elfeed, какие ленты загружать и отображать на экране обзора.

Например, это фрагмент из моего файла init.el.

(setq elfeed-feeds  
       '("https://feeds.maketecheasier.com/MakeTechEasier"  
"https://solar.lowtechmagazine.com/feeds/all-en.atom.xml"  
"https://old.reddit.com/r/f1technical.rss"))

Setq — это функция Emacs, которая устанавливает значение определенной переменной. В данном случае она устанавливает переменную elfeed-feeds с тремя ссылками на ленты в качестве значений.

Оттуда Elfeed автоматически добавит эти ссылки в свою внутреннюю базу данных, а затем загрузит их в следующий раз, когда вы запустите программу.

Эмблема Emacs Rss 07 Elfeed With Feeds

Добавление RSS-ленты в Emacs

Другой способ заполнить Elfeed — это предоставить ему ссылки на ленты во время его работы. Это позволяет вам активно обновлять свой список лент с RSS-ссылками без перезагрузки Emacs.

Для этого нажмите Alt + X, чтобы открыть буфер команд. Введите elfeed-add-feed и нажмите Enter. Elfeed попросит вас предоставить URL-адрес ленты, которую вы хотите загрузить.

Эмблема Emacs Rss 08 Url Zoom

В моем случае я предоставляю наш URL-адрес ленты Elfeed, чтобы получать ежедневные обновления о последних статьях по технологиям.

Я копирую URL-адрес ленты и нажимаю Ctrl + Y в приглашении URL, чтобы вставить ссылку в Emacs. После вставки мне просто нужно нажать Enter, чтобы подтвердить URL-адрес ленты в Elfeed.

Эмблема Emacs Rss 09 Maketecheasier Feeds

Также читайте: Как легко переименовать файлы в Linux

Как автоматически помечать и фильтровать ленты в Emacs

Помимо перечисления и просмотра RSS-лент, Elfeed также может выполнять ряд функций, которые позволят вам точно настроить ваш список лент.

Одна из этих замечательных функций — автоматическая маркировка. Эта функция позволяет вам немедленно помечать RSS-записи, которые пришли из определенной ленты.

Например, если у вас есть несколько лент на определенную тему, вы можете установить так, чтобы у них всех была одна и та же метка, что упрощает и делает интуитивно понятным сортировку по нескольким лентам на экране сводки.

Для этого отредактируйте RSS-ленты в вашем файле init.el. Посмотрите на этот краткий пример.

(setq elfeed-feeds  
 '("https://feeds.maketecheasier.com/MakeTechEasier" tech news)  
("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)  
("https://old.reddit.com/r/f1technical.rss" tech f1)))

Чтобы автоматически пометить RSS-ленту, вам нужно сделать две вещи с вашим форматом по умолчанию elfeed-feeds:

  • Обернуть ссылку на ленту в скобки. Это говорит elfeed-feeds, что эта конкретная запись в переменной имеет несколько частей.
  • Указать слово, которое будет действовать как ваша метка для этой конкретной ссылки. Вы можете включать несколько меток, если разделяете каждую из них пробелом.

Эмблема Emacs Rss 10 Automatically Tagged Feeds

Фильтрация вашей RSS-ленты в Elfeed

Эти метки работают в сочетании с мощной системой фильтрации Elfeed. Это позволяет вам группировать ваши RSS-ленты только на основе меток.

Например, если у вас есть RSS-ленты, помеченные как “новости”, “новости технологий” и “новости игр“, Elfeed позволяет вам сгруппировать их все под меткой “новости”.

Чтобы отфильтровать ваш список лент, нажмите S, находясь в Elfeed, чтобы открыть приглашение фильтра Elfeed. По умолчанию приглашение содержит следующее:

@6-months-ago +unread
  • Символ @ указывает диапазон дат. Это может быть абсолютная дата, такая как “2022-02-22”, или относительная, такая как “3 дня назад”.
  • Символ “ + “ — это оператор метки, который говорит Elfeed явно включить все ленты, которые имеют эту метку.

Эмблема Emacs Rss 11 Default Filter

С учетом этого, рассмотрите следующую RSS-ленту.

[0](setq elfeed-feeds  
[1] '("https://feeds.maketecheasier.com/MakeTechEasier" tech news)  
[2]("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)  
[3]("https://old.reddit.com/r/f1technical.rss" tech f1)  
[4]("https://www.autosport.com/rss/f1/photos/" f1)  
[5]("https://www.philstar.com/rss/world" news)))

Чтобы отфильтровать метку “технологии”, введите “ +tech “ в приглашении фильтра Elfeed, чтобы отобразить первые три ссылки в сводном буфере Elfeed. Однако, если вы добавите “ +news “, Elfeed отобразит первую и пятую метку вместо этого.

Зная это, вы можете быть более конкретными в вашей логике фильтрации. Например, если вы хотите включить все ссылки на технологии, но без “f1”, вы можете ввести следующее:

+tech -f1

Как автоматически помечать ленты на основе URL

Еще один способ автоматически помечать RSS-записи в Elfeed — это сортировать их на основе URL. Это полезно, если вы используете Elfeed для подписки на RSS-ленты, которые имеют схожую структуру URL.

Эмблема Emacs Rss 12 Medium Webpage

Для этого используйте elfeed-new-entry-hook Elfeed. Это функция хуков, которая выполняет пользовательскую команду на основе определенных условий. Эта функция будет запускать пользовательскую команду каждый раз, когда запись добавляется с помощью команды elfeed-add-feed.

Вы можете использовать функцию elfeed-make-tagger внутри этого хука. Это общая функция, которая помечает ссылки на основе заданных вами параметров. Таким образом, комбинирование двух функций для создания автоматической маркировки может выглядеть следующим образом:

(add-hook 'elfeed-new-entry-hook  
(elfeed-make-tagger :feed-url"medium\.com"  
:add '(medium)))

Эмблема Emacs Rss 13 Medium Feed

Эта функция автоматически пометит любую ссылку, которая будет содержать слуг “medium.com”.

Вы также можете быть более конкретными с параметрами, которые вы устанавливаете с elfeed-make-tagger. Например, вы можете как пометить ленту на основе URL, так и отфильтровать записи, которые старше трех месяцев:

(add-hook 'elfeed-new-entry-hook  
(elfeed-make-tagger :feed-url"medium\.com"  
:before"3 months ago"  
:add 'medium))

Как создать пользовательские цвета и шрифты для меток

Помимо автоматической маркировки, вы также можете настроить, как Elfeed выглядит на основе метки, с которой он работает. Это полезно, если вы хотите, чтобы ленты с определенной меткой выделялись.

Эмблема Emacs Rss 14 Custom Faces

Для этого вам нужно переопределить функцию elfeed-search-face-alist. Это команда, которую Elfeed использует для изменения внешнего вида сводного буфера. Таким образом, чтобы переопределить эту функцию, вы можете использовать функции defface и push:

  • Функция defface создает новую “лицу” для Emacs. “Лицо” — это набор значений, которые могут содержать как шрифты символов, так и цвета фона.
  • Функция push, с другой стороны, добавляет определение к существующей команде в Emacs.

С учетом этого, вы можете комбинировать эти функции, чтобы создать пользовательское “лицо” для Elfeed. Например, это пользовательское лицо, которое выделяет метку f1 красным цветом.

(defface elfeed-face-tag-f1  
  '((t :foreground"#f00"))  
"Это пользовательское шрифтовое лицо для метки F1 в Elfeed.")  
  
(push '(f1 elfeed-face-tag-f1)  
      elfeed-search-face-alist)

Поздравляем! Теперь вы знаете, как использовать Emacs в качестве RSS-ридера с Elfeed. Более того, у вас теперь есть базовое представление о том, как настраивать и автоматизировать Elfeed в соответствии с вашими потребностями в RSS-лентах.

Если все это обсуждение заставило вас задуматься о том, что вы можете сделать больше с Emacs, вы можете ознакомиться с нашей статьей о лучших продуктивных пакетах для Emacs.

Также читайте: Как исправить проблему “Не могу печатать в терминале” в Linux

Часто задаваемые вопросы

1. Как я могу удалить ленту в Elfeed?

Вы можете удалить ленту двумя способами: удалить запись ленты в вашем файле init.el или использовать функцию настройки Emacs для ее удаления.

Для первого способа удаление ленты — это просто вопрос удаления URL-адреса ленты в вашей переменной elfeed-feeds. Для второго способа вам нужно нажать Alt + X, чтобы открыть буфер команд. Отсюда вам нужно ввести customize. Это откроет окно настройки для Emacs.

Оттуда введите elfeed-feeds в поле поиска. Это приведет ко всем лентам, на которые вы в настоящее время подписаны.

Это позволит вам удалить ленту, нажав на кнопки DEL рядом с ссылкой на ленту. После завершения вы можете нажать кнопки Применить и Сохранить под строкой поиска, чтобы обновить вашу ленту.

2. Что я могу сделать, если я добавлю все свои ленты в Elfeed, и они не обновляются?

Elfeed не обновляет ссылки на ленты автоматически. Чтобы получить последние записи в ваших лентах, нажмите Shift + G, чтобы инициировать обновление всех текущих подписанных лент.

Кроме того, если вы хотите обновить только конкретную RSS-ленту, выполните функцию elfeed-update-feed.

3. Мои автоматические метки, похоже, не работают. Как я могу это исправить?

Это, вероятно, связано с тем, что у вас есть конфликтующие метки для одной и той же RSS-ленты. Это может произойти, если вы включили один и тот же URL-адрес ленты как в ваших ручных, так и в автоматических лентах.

Чтобы решить эту проблему, вам нужно удалить либо вашу ручную запись в вашем файле init.el, либо автоматическую запись ленты в буфере настройки Emacs.