-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathPatchMastodon.php
executable file
·45 lines (38 loc) · 1.01 KB
/
PatchMastodon.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/php
<?php
require('MastodonBotPHP/Mastodon.php');
require('PatchObject.php');
require('Database.php');
require('MastodonKey.php');
function timestamp() {
$f = fopen(__DIR__ . '/timestamp-mastodon.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();
$mastodon = new MastodonAPI($MastodonAccessToken, 'https://mastodon.social');
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;
$dat = ['status' => $s];
$mastodon->postStatus($dat);
}
}
?>