Скрипты для чтения лент новостей с сайтов
Названия: Rss_RussiaToday.lua Rss_RT_Curl.lua, Rss_RusNext.lua и Rss_RusVesna.lua
Платформа: PtokaX
API: API 2
Автор: Ksan
Дата: 1-я версия: 2014-07-07, последняя: 2022-06-24 (Rss_RT_Curl.lua)
Библиотеки:
- для работы скрипта Rss_RussiaToday требуется библиотека http://mydc.ru/topic3401.html (примечание - виндовая Птока должна быть версии x86, а если кому удалось найти рабочую библиотеку для Птоки x64, поделитесь тут в теме). В PtokaX 0.5.0.1 Mod x86 от Alex82 виндовая библиотека уже встроена в папке libs.
- для работы скриптов Rss_RusNext и Rss_RusVesna требуется библиотека http://mydc.ru/topic43.html
Примечание: для последней версии Rss_RussiaToday (он же Rss_RT_Curl) необходима программа cURL (заменит библиотеку SSL), кладётся в отдельную папку Curl в корневой папке Птоки (папку с Curl'ом выкладываю в архиве скрипта).
Возможности:
- периодически выводит в чат последнюю новость с ленты RSS (частоту вывода прописанный в скрипт админ может менять или совсем отменить, введя цифру 0), по умолчанию стоит = 45 минут (для болтливых чатов можно уменьшить (в скрипте либо через меню))
- админ, прописанный в скрипте, может принудительно вывести в чат последнюю новость
- через меню можно получать в приват по запросу последние новости (1-20 новостей - по желанию)
- то же самое с жёстко прописанным в скрипте числом (у меня по умолчанию = 3) через отдельную строку в меню (для ленивых)
- скрипт Rss_RT_Curl при старте будет самопроверяться - скачает ленту (не обязательно), создаст вспомогательный файл (с Curl иначе никак), если его не было, при успешном получении информации и наличии файла сформирует последнюю новость и отправит в приват админу, чей ник прописан в настройках скрипта (предполагается, что он и будет запускать скрипт). Если же с сайта информация не получится, то, скорее всего, прилетит пустая новость, но файл будет создан (у меня создаётся). Я не уверен, что как-то можно получить "error" Curl'ом с сайта. Иногда при старте не выдаёт тестовую новость, хотя файл с RSS создаётся. Но обычно следующий вызов новости срабатывает нормально.
Пожалуйста, вопросы по скриптам задавайте только в темах, а не в приват!
Приват - только для общения по личным вопросам. Но личные вопросы я не обсуждаю...даже в привате.
Сорри!
Установил скрипт + последнюю библиотеку отсюда http://mydc.ru/topic43.html
Делаю запросы на новости но безрезультатно, даже ошибок нету. Может на сайте что-то поменяли и теперь не парсит ?
У меня работает:
UPD-1:
-- сегодня что-то чуток изменили на сайте RT-ленты и в выводимых новостях появился артефакт, так что вот подправил код и перезалил скрипт (в сообщении #1).
Дата перезаливки: 2015-09-18 11:53 (мск.)
P.S.: И да, они там что-то накосячили (я не думаю, что это специально так сделано) и теперь в исходниках даты-времени вообще нет, поэтому нет даты-времени и в выводимой скриптом новости.. Надеюсь, исправят.
P.P.S: Время уже исправили (я им письмо отправлял).
UPD-2:
-- на сайте новостей повысили степень защищённости и теперь парсить можно стало только используя библиотеку SSL. Скрипт перезалит.
Про библиотеку читайте в первом сообщении темы.
Дата перезаливки: 2015-10-10 04:00 (мск.)
На сайте RT-ленты затеяли редизайн, поэтому скрипт выдаёт новости с артефактами.
Я слежу за ситуацией и меняю скрипт почти в онлайн-режиме, и когда всё устаканится, выложу исправленный.
----------------
UPD-3:
-- на сайте новостей сделали редизайн страниц новостей, скрипт пришлось тоже подогнать под это дело. Скрипт перезалит.
Дата перезаливки: 2016-04-10 19:00 (мск)
UPD-4:
-- на сайте новостей опять внесли маленькое изменение и в показываемой новости стали появляться артефакты. Исправил скрипт и перезалил.
Дата перезаливки: 2016-05-13 02:55 (мск)
Со вчерашнего вечера начались проблемы скрипт ошибок не выводит, а в чат начал писать вот это:
[2:33:45] <Rss_Russian.RT.com> *** Произошла ошибка при получении информации. Причина: closed
[2:33:45] *** *** Произошла ошибка при получении новости. Причина: closed
До этого проблем со скриптом не было, кто подскажет в чем проблема.
Nikolaevich, я знаю о проблеме, у самого так же. Причина ошибки - с сайта скрипт не получает данные, ни одного байта, кроме ошибки "closed". Но пока не смог понять причину этого, хотя через браузер та же страничка открывается без проблем.
Аналогичное бывало (но без ошибки "closed"), когда они перешли с http на https, пришлось использовать другую библиотеку. Но тут я пока не вижу просвета.. Может, просекли скрипт и как-то умудряются блокировать, судя по ошибке.
Возможно, придётся обратиться к другому сайту новостей и перелопатить скрипт..
UPD:
Похоже, нужно подождать, у них на сайте RSS-лента тоже перестала работать. Думаю, это взаимосвязано. Я написал в редакцию сайта, может, примут меры.. Разок уже было такое раньше - я им писал о проблеме с RSS.
ВНИМАНИЕ! - скрипт Rss_RussiaToday пока не работает из-за проблем с RSS на сайте RT.
И именно поэтому в срочном порядке сегодня перекроил этот же скрипт под другой сайт новостей - RusNext (альтернативная версия РусВесны), скрипт выложен в этой же теме в первом сообщении. Эта альтернативная лента ничуть не хуже RT.
Почему на RT не работает RSS-лента, я не знаю, есть подозрение, что это как-то связано с DDoS-атакой (а атака была и как раз в это время, когда случилась поломка).
UPD-1:
Но, похоже, такая же проблема теперь и у RusNext. У них с ночи не обновляются данные, не только на RSS, а и вовсе даже на главной странице.
UPD-2:
Теперь этот же скрипт загрузил под третий сайт новостей - RusVesna, скрипт выложен тут же, ссылка там же. Хорошо, что эти два последних ресурса имеют одинаковый код исходников RSS, так что почти ничего не пришлось менять (ссылку да ещё чуть-чуть)..
UPD-3:
По RusNext - отбой тревоги, только залил последний скрипт, так этот RSS тоже заработал. Ладно, пусть и этот скрипт тоже лежит.
Эти ресурсы часто бывают под очень сильными ddos. Осторожней с ними. И вообще, русская весна и rusnext - совершенно разные вещи, с разной историей и владельцами. зы. Пользовали бы это например:
Saymon21
Попробуй обновить luasocket и luasec. Возможно, траблы с поддерживаемым протоколом tls/ssl.
В таком случае траблы не у меня, а у них, так как данные не отдаются только с RT, а с двух других лент всё идёт пучком.
Тем более, я не имею представления, как эти библиотеки обновить.. Не хочу париться ещё этим, у меня мозги слишком малоподвижные из-за дряхлости.
Проблемы не у них. Ныне модно половину tls/ssl дисаблить. Время такое, security reasons.
Вообще выкинули бы вы этот luasocket уже. Давно используют curl.
Saymon21, предложенным тобой курлом не справился (мне нужна виндовая версия, а там линуксовые, не стал возиться), но получается через курл
Да, но там надо будет через io.popen, и он должен быть в системе или $PATH. Попроси Алекса82 собрать.
Кстати, если мне не изменяет память, то попробуй либку из luaaio.
Перелопатил скрипт Rss_RussiaToday, последняя версия будет называться Rss_RT_Curl (из-за нежелания сайта отдавать скрипты по-доброму, пришлось вот состряпать курловую вытяжку по наводке Saymon21, хотя и несколько другим манером). Для этой версии скрипта необходимо иметь папку Rss_RT_Curl в папке scripts (папку Rss_RT_Curl я положил в архив, просто перенесите) и положить отдельную папку Curl в корневой папке Птоки (папку с Curl'ом тоже выкладываю в архиве скрипта). Папка с Curl'ом - только для Винды. У кого линукс - не обессудьте, у меня сейчас только винда, не на чём пробовать. Да и так есть ещё 2 рабочих скрипта - новости с Русвесны и с РусНекста.
Скрипт Rss_RT_Curl при старте будет самопроверяться - скачает ленту (не всегда), создаст вспомогательный файл (с Curl иначе никак), если его не было, при успешном получении информации и наличии файла сформирует последнюю новость и отправит в приват админу, чей ник прописан в настройках скрипта (предполагается, что он и будет запускать скрипт). Если же с сайта информация не получится, то, скорее всего, прилетит пустая новость, но файл будет создан (у меня создаётся). Я не уверен, что как-то можно получить "error" Curl'ом с сайта. Иногда при старте не выдаёт тестовую новость, хотя файл с RSS создаётся. Но обычно следующий вызов новости срабатывает нормально.
Дата заливки Rss_RT_Curl: 2016-07-27 13:10 (мск)
Saymon21, по крайней мере, у меня на винде сработало (только я засунул это в функцию OnStartup() сразу под названием функции и убрал local от sCurl'ов).
Надеюсь, люди сами прочитают про этот кусок и сделают у себя, если кому приспичит (это я про линуксоидов). А виндовым ни к чему.
Когда и если кто напишет, что под линукс тоже работает, тогда я это внесу в публичный скрипт.
Что то молчит скрипт, не ошибок, ни новостей не выводит .
Nikolaevich, тот же самый скрипт (если вы про Rss_RT_Curl) у меня работает - при старте создаёт первичный вспомогательный файл в папке Rss_RT_Curl (если отсутствует), но в в приват тестовую новость выдаёт пустой, но следующий раз (например, отправить новость в чат) отрабатывает нормально. И последующие тоже.
На втором компе этот же скрипт стоит, но первый тестовый при старте в приват кидает нормальную новость. Потому я и предупреждал, что может показать, может и нет, но тут главное, что создаст файл. Хотя я мог бы заранее рекомендовать всем самим создавать там файл.
Но почему у вас не пашет, ничего не могу сказать. Вы же не пишете, какая у вас система, разрядность (хотя разрядность тут вряд ли имеет значение, я специально для этого выставил при скрипте Curl для 32-разрядных систем (виндовых), чтоб наверняка). Если у вас линукс, то вам нужно установить (если не стоит) Curl, выполните что-нибудь типа
поставил курловый скрипт, сильно времени лазить нет в скрипте, просто поставил, решил проверить новость, а в ответ
Артём, это моя халатность при подготовке папки с Курлом для отправки на форум. :(
UPD:
Содержимое папки Curl (три файла) нужно там же переместить в папку bin, которую сначала там же (в папке Curl) надо предварительно создать. После этого перезапустить скрипт.
Я это проделал и перезалил архив. Вы можете сами у себя проделать то же самое без перекачивания архива.
Ksan, ну, уж не знаю, сделал всё как положено(описано) симптомы такие же.
останусь тогда на русвесне
dimetro, ничего не понял, ну да фиг с ним, весна пусть в чатике кажет новости
UPD-6:
Скрипт Rss_RT_Curl долгое время не работал (по крайней мере, у меня), руки не доходили проверить причину, сегодня добрался, оказалось, надо было заменить Curl на свежую версию (возможно, это на последних версиях Вин 10-11 (у меня это стоит) только происходит, не могу проверить точнее), возможно, дело в разрядности (сейчас поставил х64, если у кого всё работает, то ничего менять не надо). Заменил, заработал. Архив перезалил, но не на сервер форума (он почему-то оказался недоступен), а на свой Яндекс.Диск (ниже ссылка). UPD: глюк с загрузкой исправили, так что добавил файл в ресурс (в списке нижний), прежний, из моего Я.Диска, оставил как есть..Похоже, остальные файлы будут недоступны по вышеобозначенной причине.