Шляхом Альбірео

НовиниЗаписиPHPRSS рідер окремого каналу

2022.07.21
Парсінг RSS каналу електронної бібліотеки "Чтиво"
Новини бібліотеки

RSS книжкових новин і старих часописів, які були оцифровані і оформлені нещодавно. Переходячи за посиланням, Ви попадете на сторінку іншого ресурсу.

Е-бібліотека «Чтиво»Cайт бібліотеки зараз доступний.

  • 2024.10.3009:54 AM

    Селище (Міхал Шьмєлак).

    Розповідь про таємничі вбивства в маленькому селищі в Польщі ведеться в двох часових пластах: перший, 1978 рік, "зима століття" в Польщі та Європі; другий – наші дні. Гинуть молоді дівчата, навіть ціла сім’я... Слідство велося багато років тому, але викликає питання ще й в наш час.

  • 2024.10.3008:28 AM

    Пост імені Ярослава Галана. Книга 15 (Збірник).

    Увага!!! Ця книга - інструмент московської комуністичної пропаганди!


    Це чергова книга збірника публіцистичних і науково-популярних статей, які розвінчують плани імперіалістичних кіл, передусім авантюристичну політику адміністрації США, підступи антикомуністичної, антирадянської імперіалістичної пропаганди, викривають буржуазну ідеологію, зокрема українського буржуазного націоналізму, міжнародного сіонізму і клерикалізму.

  • 2024.10.2910:20 PM

    Інтернаціональна солідарність трудящих західноукраїнських земель з Республікою Іспанією (Збірник).

    У збірнику публікуються документи і матеріали, спогади про інтернаціональну солідарність трудящих західноукраїнських земель, а також української трудової еміграції США, Канади, Франції та інших країн Європи і Америки з республікою Іспанією, про участь добровольців із Західної України, Північної Буковини та Закарпаття в національно-революційній війні іспанського народу.
    Розраховано на істориків, викладачів і студентів вищих навчальних закладів, пропагандистів.

  • 2024.10.2910:17 PM

    Пост імені Ярослава Галана. Книга 13 (Збірник).

    Це тринадцята книга збірника публіцистичних і науково-популярних статей, інших матеріалів, спрямованих проти буржуазної ідеології, зокрема проти українського буржуазного націоналізму, міжнародного сіонізму, клерикалізму, підступів американського імперіалізму, що перейшов до «психологічної війни» проти СРСР, країн соціалістичної співдружності.

Парсінг стрічки новин
Note

Бібліотека хороша, але генерація RSS-каналів не піддається стилізації на нашому сайті завдяки тому, що CSS прописані в тілі скрипта, а це не є добре.

Ми написали парсер на РНР, який виправляє вивід сторінки і позбавляє деяких вад при публікації, а саме:

  • Скасована дія float після виводу інформації, через додавання <p style="clear:both"></p> наприкінці генерації.
  • Частково скасовано стилізацію, шляхом відміни <div style="margin:20px 5px; color:#312d2d;"> в оригіналі. Це тепер не заважає показати шрифт будь-якого коліру і на будь-якому фоні.
  • Скореговані відступи блоків для кращого сприйняття.
  • Для зображень встановлений однаковий розмір.
  • Можна вказати кількість новин для розміщення на сторінці.
  • Додана перевірка доступності сайту в даний момент.

Код в процесі тестування і з цієї причини, можливі зміни. Не причесаний. Працює з усіма чотирма каналами джерела, однак, виявилася ще одна проблема - на сайті інколи дають посилання на локальне розташування зображень, тому вони не відображаються. Це помилка генерації фіду.

<!-- RSS читалка для новин сайта "Chtyvo" -->

[PHP]

<?php // URL фіду (джерело) $feeds = array( "https://chtyvo.org.ua/feed/bookshq.rss" ); // Резервуємо змінні для скрипта $entries = array(); $search = '<div style="margin:20px 5px; color:#312d2d;">'; $replace = '<div>'; foreach ($feeds as $feed) { $xml = simplexml_load_file($feed); $entries = array_merge($entries, $xml->xpath("//item")); } // Сортуємо фіди по даті (на всяк випадок) usort($entries, function ($feed1, $feed2) { return strtotime($feed2->pubDate) - strtotime($feed1->pubDate); }); ?> <div class="bg-transparent pad40-tb"> <!-- Класи від нашого зовнішнього фреймворка (але, можуть бути які завгодно) --> <ul class="list-unstyled"> <?php $NUMITEMS = 5; // Вказуємо кількість новин для показу $count = 0; // Виводимо на сторінку в кількості, яка вказана в $NUMITEMS foreach ($entries as $entry) { ?> <li> <p class="t100 t-orange250 pad20-t"> <?= strftime('%m/%d/%Y %I:%M %p', strtotime($entry->pubDate)) ?> </p> <p> <?=$entry = str_ireplace($search, $replace, (str_ireplace('<div style="float:left; padding: 10px;">', '<div style="float:left; padding-right: 40px; padding-top: 7px;">', (str_ireplace('Додано твір ', '', (str_ireplace('border="0" />', 'border="0" width="200">', $entry->description))))))); ?> </p> <p style="clear:both"></p> </li> <?php if (++$count >= $NUMITEMS) break; } ?> </ul> </div>

Appdate

Автори бібліотечного сайту відгукнулися листом і обіцяли переглянути формування новин своїх каналів, так що, вищенаписане може й не знадобиться, хоча, як окрема вправа з парсингу, вона була для нас дуже і дуже корисною.

Бібліотека використовує rss більше як засіб трансляції новин до свого твітеру, отже, якщо наші пропозиції їй в цьому не заважатимуть, то скрипт втратить свою актуальність.

Інколи сервер сайту буває зайнятий і тоді не може бистро віддати новини, тому варто перевірити, чи взагалі він не закритий на технічне обслуговування. Для цього ми дописали кілька рядків:

<!-- Перевірка доступності сайта -->

[PHP]

<?php $URL = 'http://chtyvo.org.ua/'; if (isSiteAvailible($URL)) { echo '<p>Cайт бібліотеки зараз доступний.</p>'; // Тут ми додаємо скрипт для виводу // .... } else { echo '<p>Сайт бібліотеки поки недоступний. Завітайте пізніше, будь ласка.</p>'; } ?>