ifhub-telegram/bot.php

64 lines
1.8 KiB
PHP

<?php
require_once ("vendor/autoload.php");
use Symfony\Component\Yaml\Yaml;
$config = Yaml::parse(file_get_contents('config.yml'));
$lastrun = 0;
if (file_exists('.lastrun')) {
$lastrun = file_get_contents('.lastrun');
}
echo $lastrun;
function get_text($url) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
));
$resp = curl_exec($curl);
curl_close($curl);
return $resp;
}
$string = get_text('https://ifhub.club/rss/new/');
$service = new \Sabre\Xml\Service();
$service->elementMap = [
'{}item' => function(\Sabre\Xml\Reader $reader) {
return \Sabre\Xml\Deserializer\keyValue($reader, '');
},
'{}channel' => function(\Sabre\Xml\Reader $reader) {
return \Sabre\Xml\Deserializer\repeatingElements($reader, '{}item');
},
];
$articles = $service->parse($string)[0]['value'];
unset($string);
$pandoc = new \Pandoc\Pandoc();
foreach ($articles as $article) {
if (strtotime($article['pubDate']) <= $lastrun) {
continue;
}
$title = $article['title'];
$link = $article['link'];
$description = $article['description'];
// $description = strip_tags($description);
$description = $pandoc->convert($description, "html", "markdown_github");
$description = "$title\n\n".$description;
$description .= ": $link";
if (!$config['DRY_RUN']) {
try {
$telegram = new Longman\TelegramBot\Telegram($config['API_KEY'], $config['BOT_NAME']);
$result = \Longman\TelegramBot\Request::sendMessage([
'chat_id' => $config['CHAT_ID'],
'text' => $description,
'parse_mode' => 'Markdown'
]);
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
echo $e;
}
} else {
echo $description;
}
}
file_put_contents('.lastrun', time());