Я пытаюсь создать программу или скрипт (назовем его Worker
), работающий в среде Linux (желательно, чтобы это был Raspbian или Debian), который собирал ссылки из RSS-каналов и отправлял их другим 2 программам для обработки.
Вот конкретные шаги, которые должен сделать Worker
:
Анализировать несколько RSS-каналов из текстового документа, разделенных новой строкой
https://example.com/feed.xml?id1 nsfw https://example.com/feed.xml?id2 https://example.com/feed.xml?id3 [...] https://example.com/feed.xml?id9`
Извлечение ссылок из каждого канала
Удалить ссылки с определенными ключевыми словами в элементе
<title>
. Ключевые слова устанавливаются для каждого канала в текстовом документе, отделенном от соответствующей ссылки пробелом, например:https://example.com/feed.xml?id1 nsfw
а если не установлено - удаление не требуется.
Сортировать полученные ссылки по дате / времени на основе элемента
<published>
. Пример:<published>2018-07-27T01:02:03+00:00</published>
Отправить новейшую ссылку в программу-
handler
(это просто внешняя программа, которая уже существует)handler https://received-from-RSS.com/abc
Пометить отправленную ссылку как
watched
(желательно делать это только в памяти, поскольку она должна работать на Raspberry Pi, и я хотел бы уменьшить использование SD-карты)Соберите ответ из программы-
handler
который должен содержать другую ссылку, и передайте ссылку, полученную изhandler
в программу-player
player https://received-from-Handler.com/xyz
Подождите, пока
player
закончит играть и не закроется. Затем отправьте в хронологическом порядке следующую (и еще не отмеченнуюwatched
) ссылку наhandler
И мы повторяем этапы с 5 по 8.
Каждые 30 минут
Worker
должен обновлять ссылки из RSS-каналов, например, повторять этапы 1–9, сохраняяwatched
ссылки в памяти и не отправляя ихhandler
.
Я чувствую, что эта функциональность может быть реализована в Bash или Python. У меня нет опыта программирования, но я отчаянно нуждаюсь в Worker
.
Поэтому я был бы признателен, если бы вы посоветовали мне некоторые конкретные учебные материалы или примеры кода, которые помогут мне написать эту конкретную программу. Я не прошу написать это для меня, я буду признателен за вашу помощь с любым отдельным шагом. Мне просто нужно несколько направлений
Я опубликую результат здесь, как только закончу.