*** Кого я ищу *** Здравствуйте. Разыскивается человек, нежно любящий CMS MODx Revolution, PHP и красоту в коде.
*** Задача ***
1. Создать контекст
Необходимо создать в админке MODx новый контекст Source. Далее мы будем работать с ним.
2. Обработка RSS лент
Есть порядка 20 RSS лент. По сложившейстя традиции, они оформлены как попало. Необходимо написать снипет, который будет читать эти ленты и приводить их к единому виду.
Первое, что будет нужно сделать – проверить кодировку. Некоторые RSS приходят в кодировке 1251, некоторые заявлены как UTF 8, но мы понимаем, что «СЂСѓРєС†РёРё древнего» (цитата дословная, стилистика и пунктуация автора сохранены).
Из каждой RSS ленты будет нужно получить следующую информацию: - Заголовок записи. - Дата публикации. - Ссылка на публикацию. - Краткое описание публикации.
В некоторых лентах дополнительно встречаются данные, которые также надо будет получить: - Категория (тематика) публикации. - Ссылка на изображение. - Полный текст публикации.
Со ссылками на изображения и полными текстами публикаций возникнут сложности:
- Где то ссылка на изображение оформлена как <enclosure url="_url_" type="image/_ext_"/>, где-то вставлена в тег description через ![CDATA[ _HTML_tag_ ]]>, где-то она в теге content. Естественно, меня интересует содержание атрибутов url / src, остальная бесценная информация может быть смело затерта. - В content встречается все, что угодно: куски разметки и даже JS (через CDATA). Мы должны привнести гармонию в мир и выпилить это безобразие, оставляя только спецсимволы HTML ( &mdash « и т.п.). Итогом этого этапа работы должны стать очищенные от мусора строковые данные или прямые ссылки.
3. Запись в БД.
Все данные из второго пункта необходимо положить в базу данных. Предваритольно важно проверить, не лежат ли уже там эти самые данные.
4. CRON
Необходимо написать CRON скрипт, который будет выполнять пункты 2 и 3 с переодичностью раз в 30 минут. Если у вас есть альтернативна крону, которая по каким-то причинам видится вам более разумной (стабильность, потребление ресурсов и проч.), я буду рад внять доводам профессионала. 5. API Как вы поняли, создаем что-то вроде агрегатора новостей. Фронт-енд будет на AngularJS, для которого нужен API. Хранить мы его буем в созданном на первом шаге контексте. Мне будет нужно по запросу name.domain/source/somena... получить JSON с массивом объектов, ранее записанных в БД.
6. Научить дурака
Будет нужна передача знаний. Я хотел бы понять, как у вас все работает, что нужно будет сделать, если мне понадобится добавить или удалить RSS поток.
*** Лирика ***
Я совсем не против использования сторонник библиотек, главное – чтобы они были с соответствующими лицензиями (MIT, Apache, любая халява). Короче, не воруем и не копипастим.
Если вы сочтете свой снипет настолько хорошим, что захотите им похвастаться и опубликовать на ресурсах modx.com – я буду рад. Только затрите упоминания обо мне :-)
*** Технические исходные данных: ***
MODx Revo Сервер VPS на Рег.ру Процессор 2x2000МГц Память 1024МБ OS centos6_php_selector-x86_64_isp_lite5 ISP manager MySQL 5.1.73-3.el6_5 PHP 5.3.3-40.el6_6 Протокол https Жизнь боль
*** Оплата ***
Только безопасная сделка. Чуваки, которые спамят в сообщениях, а не откликаются в комментах – не стоит.
*** О сроках ***
Сроки не поджимают. Делаем на совесть, а не на скорость.
*** С меня ***
Доступ к VPS. Доступ к админке. Оплата. Хороший отзыв за хорошую работу.
*** С вас ***
Цена, за которую вам было бы комфортно работать Ориентировочный естимейт Любые ссылки, которые могут заставить меня хотеть работать только с вами