КОГО Я ИЩУ
<b>[b]222[/b]</b>
Здравствуйте. Разыскивается человек, нежно любящий CMS MODx Revolution, PHP и красоту в коде.
ЗАДАЧА
I. Создать контекст
Необходимо создать в админке MODx новый контекст Source. Далее мы будем работать с ним.
II. Обработка RSS лент
Есть порядка 20 RSS лент. По сложившейся традиции, они оформлены как попало. Необходимо написать снипет, который будет читать эти ленты и приводить их к единому виду.
Первое, что будет нужно сделать проверить кодировку. Некоторые RSS приходят в кодировке 1251, некоторые заявлены как UTF 8, но мы понимаем, что «СЂСѓРєС†РёРё древнего» (цитата дословная, стилистика и пунктуация автора сохранены).
Из каждой RSS ленты будет нужно получить следующую информацию:
1. Заголовок записи.
2. Дата публикации.
3. Ссылка на публикацию.
4. Краткое описание публикации.
В некоторых лентах дополнительно встречаются данные, которые также надо будет получить, если они есть:
1. Категория (тематика) публикации.
2. Автор публикации.
3. Ссылка на изображение.
4. Полный текст публикации.
Со ссылками на изображения и полными текстами публикаций возникнут сложности.
Изображения.
Где то ссылка на изображение оформлена как <enclosure url="_url_" type="image/_ext_"/>, где-то вставлена в тег description через ![CDATA[ _HTML_tag_ ]]>, где-то она в теге content. Бывает, что ссылка на изображение в enclosure дублируется в description. Будет необходимо:
1. Если ссылка есть в теге enclosure, берем ее url.
2. Если ссылка есть в теге description, берем ее src.
3. Если ссылка есть и в description, и в enclosure, сравниваем src и url соответственно. Если дубль удаляем повтор.
4. Далее парсим содержимое content, проверяем на наличие ссылок. Добавляем в массив.
5. Скачиваем эти изображения в папку asseets/images-store, присваивая им md5 имена. В БД сохраняем массив из имен изображений (имя + расширение) или false.
Content.
В content встречается все, что угодно: куски разметки и даже JS (через CDATA). Мы должны привнести гармонию в мир и выпилить это безобразие, оставляя только спецсимволы HTML ( &mdash « и т.п.).
Итогом этого этапа работы должны стать очищенные от мусора строковые данные или прямые ссылки.
III. Запись в БД.
Все данные из второго пункта необходимо положить в базу данных. Предварительно важно проверить, не лежат ли уже там эти самые данные.
IV. CRON
Необходимо написать CRON скрипт, который будет выполнять пункты 2 и 3 с периодичностью раз в 30 минут. Если у вас есть альтернативна крону, которая по каким-то причинам видится вам более разумной (стабильность, потребление ресурсов и проч.), я буду рад внять доводам профессионала.
V. API
Как вы поняли, создаем что-то вроде агрегатора новостей. Фронт-енд будет на AngularJS, для которого нужен API. Хранить мы его буем в созданном на первом шаге контексте. Мне будет нужно по запросу
получить JSON с массивом объектов, ранее записанных в БД.
VI. Научить дурака
Будет нужна передача знаний. Я хотел бы понять, как у вас все работает, что нужно будет сделать, если мне понадобится добавить или удалить 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
ОПЛАТА
1. Только безопасная сделка.
2. Демпингующие будут разочарованы безразличием.
3. Если хотите обсудить стоимость проекта, пишите.
О СРОКАХ
Сроки не поджимают. Делаем на совесть, а не на скорость.
С МЕНЯ
Доступ к VPS.
Доступ к админке.
Оплата.
Хороший отзыв за хорошую работу.
С ВАС В ОТКЛИКЕ НА ПРОЕКТ
Цена
Ориентировочный срок выполнения работ
Любые ссылки, которые могут заставить меня хотеть работать только с вами
ССЫЛКИ
Просто собрал, как выглядят айтемы из разных потоков, в одном файле блокнота: