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

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

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

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

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

  • 2025.01.1808:16 PM

    Видовище (Жак Превер).

    Книжка видатного французького поета Жака Превера (1900–1977) виходить окремим виданням в Україні вперше. Вірші поета перекладено десятками мов, його пісні виконують знамениті співаки. Поезії Жака Превера – контрастні, насичені всім барвами реальності, дотепні й емоційні.

  • 2025.01.1808:14 PM

    Лондон (Едвард Резерфорд).

    «Лондон» – захопливий історичний роман Едварда Резерфорда про місто, що є серцем Великої Британії. Про те, як воно виникло і розвивалося, про його світлі й темні часи. Про довгу дорогу до демократії, появу імпічменту – у XIV столітті! – і про те, як у боротьбі з парламентом монархи завжди програвали. Читач дізнається, як було створено Англійський банк і винайдено державний борг, чому Шекспір не друкував своїх творів і як з’явився весільний торт.

    І все це, а також чимало інших цікавих фактів, подається на тлі життя кількох родин, представники яких набувають статків і втрачають їх, одружуються з палкого кохання чи з холодного розрахунку, шукають скарби і зниклого графського спадкоємця, борються за свободу країни чи за права жінок… Переплітаючи крізь століття долі своїх героїв, письменник досліджує питання: то хто ж вони насправді – ці англійці?

  • 2025.01.1808:03 PM

    Шепіт мертвих (Саймон Бекетт).

    Девід Гантер повертається до Антропологічного дослідницького центру в США, де він колись навчався, відомого як «Трупна ферма». Він сподівається, що ця подорож допоможе йому відточити навички судового антрополога та повернути впевненість у собі. Тому погоджується на пропозицію колишнього наставника долучитися до розслідування вбивства. Урешті-решт, Девід буде лише в ролі консультанта – що може піти не так?

    Але навіть Гантер не готовий до такої жорстокості. Зв’язане й піддане тортурам тіло розклалось до невпізнання. Знайдені на місці злочину відбитки пальців вказують на вбивцю, але Девід підозрює, що все не так, як здається на перший погляд.

    А потім знаходять друге тіло, і Гантер розуміє, що серійний убивця володіє вміннями, які йому до болю знайомі, – вміннями криміналіста…

  • 2025.01.1806:03 PM

    Сердце отдаю детям (рос.) (Василь Сухомлинський).

    Автор книги В. А. Сухомлинский (1918—1970 гг.) — выдающийся советский педагог, Герой Социалистического Труда, член-корреспондент АПН СССР, заслуженный учитель Украинской ССР — на протяжении своей педагогической деятельности занимался проблемами воспитания и развития школьников. «Сердце отдаю детям» — одна из немногих в современной педагогической литературе книг, завоевавших признание педагогов и родителей.
    В своей книге автор не только ставит и решает научно-теоретические проблемы, но и знакомит читателя с тем, как на протяжении нескольких лет, с того дня, когда маленький человек впервые переступил школьный порог, до окончания начальной школы, он вводил своих воспитанников в мир познания окружающей действительности, помогал овладевать знаниями, пробуждал умственные способности и утверждал благородные чувства, воспитывал гражданское достоинство, веру в доброе начало в человеке, беспредельную преданность Коммунистической партии и Социалистической Родине, чувство дружбы народов.

Парсінг стрічки новин
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>'; } ?>