WORLD OF WARCRAFT

Тема: Новостной телеграм-бот  (Прочитано 9057 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Сентраши

  • Завсегдатай
  • **
  • Сообщений: 145

  • Варкрафт: +
    • Имя: Налтанис
    • Класс: Жрец
    • Сервер: Гордунни
Новостной телеграм-бот
« : 14 Августа, 2020, 14:10:21 »
  • Рейтинг:0 (+0 | 0)



Сделал простенького бота, собирающего статьи с https://www.noob-club.ru/rss2.xml и превращающего их в Instant View (статьи, открываемые прямо в приложении). Для просмотра с телефона нашел для себя это очень удобным решением.



Сам бот тут: https://t.me/ncfeed
Бот как и создатель не преследуют никаких коммерческих целей, собрано из гуано и палок для ознакомления.

Правила для instant view оставлю ниже на случай, если захотите сделать своего бота, например. Сделано буквально на коленке, так что наверняка их можно значительно оптимизировать. Некоторые статьи может не отображать или отображать с ошибками.
~version: "2.0"


body:          /[has-class("post")]
title:         /[has-class("keyinfo") > h5]
subtitle:      /[has-class("poster") > h4]
cover:         $body[has-class("inner")]//img[1]


@remove:       //img[has-class("smiley")]
@remove:       /[has-class("flow_hidden")]
@remove:       //*[@id="blizzicon"]
@remove:       /[has-class("quoteheader")]


$icons:        //ul[has-class("bbc_list")]/li//img
<pic>:         $icons
$icons:        $@


$icons:        //span[has-class("bbc_size")]//img
<pic>:         $icons
$icons:        $@


@split_parent: //iframe


<figure>: $body//a[.//img]
<figure>: $body//blockquote[.//img]
@replace_tag(<div>): //table[has-class("bbc_table")]
@replace_tag(<h3>):  //span[has-class("bbc_size")]


@replace("maxWidth", "s"): //img/@src
@remove: $body//blockquote[has-class("imgur-embed-pub")]


$twitch: //iframe[contains(@src,'twitch')]




@if( $twitch) {
  @replace_tag(<a>): $twitch
  $twitch_links: //a[contains(@src,'twitch')]
  @append(Twitch): $twitch_links
  @set_attr(href, @src): $twitch_links
}


@if( //article ) {    # if <article> exists
  @append(<p>): $$    #   append paragraph into it
}


@remove:  //button
@remove:  //pic[ends-with(@src, ".svg")]
@remove:  //img[ends-with(@src, ".svg")]
@remove:  //p[has-class("ltag__user__social")]


P.S. Код бота на php, занимает пару десятков строк. Могу поделиться, если кому-то понадобится.
P.P.S Переписал на python. Всё те же несчастные несколько десятков строк в докере.
« Последнее редактирование: 11 Апреля, 2022, 13:56:35 by Сентраши »

 

закрыть