зеркало из https://github.com/nextcloud/spreed.git
75 строки
2.2 KiB
PHP
75 строки
2.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
/**
|
|
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
|
|
*
|
|
* @license GNU AGPL version 3 or any later version
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
if (PHP_SAPI !== 'cli') {
|
|
// Only allow access via the console
|
|
exit;
|
|
}
|
|
|
|
if ($argc < 2) {
|
|
echo 'Missing search term in call to hackernews.php';
|
|
return 1;
|
|
}
|
|
|
|
$mode = $argv[1];
|
|
|
|
if ($mode === '--help' || !in_array($mode, ['top', 'new', 'best', ''], true)) {
|
|
echo '/hackernews - A simple command to list the Top 5 top, new or best stories' . "\n";
|
|
echo "\n";
|
|
echo 'Example: /hackernews top' . "\n";
|
|
return;
|
|
}
|
|
|
|
$mode = $mode ?: 'top';
|
|
$endpoint = 'https://hacker-news.firebaseio.com/v0/' . $mode . 'stories.json';
|
|
$content = file_get_contents($endpoint);
|
|
$results = json_decode($content, true);
|
|
$stories = array_slice($results, 0, 5);
|
|
|
|
$response = 'Hackernews ' . ucfirst($mode) . ' 5:' . "\n";
|
|
$length = 120;
|
|
|
|
foreach ($stories as $storyId) {
|
|
$endpoint = 'https://hacker-news.firebaseio.com/v0/item/' . $storyId . '.json';
|
|
$content = file_get_contents($endpoint);
|
|
$result = json_decode($content, true);
|
|
|
|
$link = " - {$result['url']}\n";
|
|
$remainingLength = max(strlen($result['title']),$length - strlen($link));
|
|
if ($remainingLength < strlen('* ' . $result['title'])) {
|
|
$response .= substr('* ' . $result['title'], 0, $remainingLength) . '…' . $link;
|
|
} else {
|
|
$response .= '* ' . $result['title'] . $link;
|
|
}
|
|
}
|
|
|
|
$page = 'news';
|
|
if ($mode === 'new') {
|
|
$page = 'newest';
|
|
} else if ($mode === 'best') {
|
|
$page = 'best';
|
|
}
|
|
|
|
$response .= "Find more at https://news.ycombinator.com/$page";
|
|
|
|
echo ($response);
|