mirror of
https://github.com/mbirth/tcl_update_db.git
synced 2024-12-26 04:24:07 +00:00
Create rss.php
Dry attempt (not tested) of a RSS feed for TCL OTA updates. (Code taken from timeline.php formatted to the RSS feed format).
This commit is contained in:
parent
35a77cde75
commit
50bbf9db03
71
rss.php
Normal file
71
rss.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0"?>
|
||||
<rss version="2.0">
|
||||
<channel>
|
||||
<title>TCL OTA</title>
|
||||
<link>https://tclota.birth-online.de/timeline.php</link>
|
||||
<description>TCL OTA updates</description>
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/lib/autoloader.php';
|
||||
|
||||
use \TclUpdates\SQLiteReader;
|
||||
|
||||
$db = new SQLiteReader();
|
||||
|
||||
$allVars = $db->getAllVariantsByRef();
|
||||
$unknowns = $db->getUnknownRefs();
|
||||
if (count($unknowns) > 0) {
|
||||
foreach ($unknowns as $uref) {
|
||||
$allVars[$uref] = array(
|
||||
'family' => 'Unknown',
|
||||
'model' => 'Model',
|
||||
'variant' => '',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* NOTE: it would be nice to have a filter for device id to be able to subscribe only to specific model/variant
|
||||
*/
|
||||
|
||||
$allfiles = $db->getAllFiles($db::FULL_ONLY);
|
||||
foreach ($allfiles as $file) {
|
||||
$updates = $db->getAllUpdatesForFile($file['sha1']);
|
||||
$validRefs = array();
|
||||
$validDevs = array();
|
||||
$firstSeen = new DateTime();
|
||||
$firstSeen->setTimezone(new DateTimeZone('CET'));
|
||||
foreach ($updates as $u) {
|
||||
$dev = $allVars[$u['curef']];
|
||||
$validRefs[] = $u['curef'];
|
||||
$validDevs[] = $dev['family'] . ' ' . $dev['model'];
|
||||
$firstSeenDate = new DateTime($u['seenDate']);
|
||||
$firstSeenDate->setTimezone(new DateTimeZone('CET'));
|
||||
if ($firstSeenDate < $firstSeen) {
|
||||
$firstSeen = $firstSeenDate;
|
||||
}
|
||||
}
|
||||
$validDevs = array_unique($validDevs);
|
||||
sort($validDevs);
|
||||
$device = $allVars[$updates[0]['curef']];
|
||||
$date = new DateTime($file['published_first']);
|
||||
$date->setTimezone(new DateTimeZone('CET'));
|
||||
$dateLast = new DateTime($file['published_last']);
|
||||
$dateLast->setTimezone(new DateTimeZone('CET'));
|
||||
echo '<item>';
|
||||
echo '<title>' . $file['tv'] . '</title>';
|
||||
echo '<link>https://tclota.birth-online.de/timeline.php</link>';
|
||||
echo '<description>';
|
||||
if ($file['fv']) {
|
||||
echo '(OTA from ' . $file['fv'] . ')';
|
||||
}
|
||||
echo $date->format('Y-m-d') . ' ' . $date->format('H:i.s') . ' CET<br />';
|
||||
echo 'Devices: ' . implode(', ', $validDevs) . '<br />';
|
||||
echo 'Last released: ' . $dateLast->format('Y-m-d H:i.s') . ' (first seen in the wild: ' . $firstSeen->format('Y-m-d H:i.s') . ')<br/>';
|
||||
echo 'Valid for (order of release): ' . implode(', ', $validRefs) . '</description>';
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</channel>
|
||||
</rss>
|
Loading…
Reference in New Issue
Block a user