PatchBot/PatchTwitter.php

50 lines
1.1 KiB
PHP
Executable file

#!/usr/bin/php
<?php
require('twitter-php/src/twitter.class.php');
require('PatchObject.php');
require('Database.php');
require('TwitterKey.php');
use DG\Twitter\Twitter;
function timestamp() {
$f = fopen(__DIR__ . '/timestamp.dat', 'a+');
flock($f, LOCK_EX);
$t = fgets($f);
ftruncate($f, 0);
fwrite($f, time());
fflush($f);
flock($f, LOCK_UN);
fclose($f);
return intval($t);
}
$db = new Database(__DIR__ . '/db.json');
if (!$db->load()) {
exit(1);
}
$last = timestamp();
$twitter = new Twitter($TwitterConsumerKey, $TwitterConsumerSecret, $TwitterAccessToken, $TwitterAccessTokenSecret);
for ($i = 0; $i < $db->count(); $i++) {
$patch = $db->get($i);
if ($last < $patch->getTimestamp()) {
$s = $patch->getVendor() . ' released #' . $patch->getProduct();
if (!empty($patch->getBranch()))
$s .= ' ' . $patch->getBranch();
$s .= ' version ' . $patch->getVersion() . '.';
$len = strlen($s) + 24; // + space + wrapped URL
$s .= ' ' . $patch->getURL();
echo $patch->getId() . ': ' . $len . PHP_EOL;
try {
$twitter->send($s);
} catch (DG\Twitter\Exception $e) {
fwrite(STDERR, 'ERROR: ' . $e->getMessage() . PHP_EOL);
}
}
}
?>