-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeed.php
More file actions
49 lines (38 loc) · 1.73 KB
/
feed.php
File metadata and controls
49 lines (38 loc) · 1.73 KB
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
46
47
48
49
<?php
# импорт фида
$url = 'https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss';
# попытка получения контента
$obj = simplexml_load_file($url) or die('failed');
require 'db.php';
require 'simpleMySQLi.class.php';
# создание объекта для записи в БД
$sql = new simpleMySQLi($db, pathinfo(__FILE__, PATHINFO_DIRNAME));
# кол-во добавленных записей
$added = 0;
# парсинг
foreach ($obj->channel->item as $node) {
$attr = (array)$node->enclosure;
# принимаются только записи с mime-типом "image/jpeg"
# поскольку из текущей версии канала неясно, какие ещё могут быть и как их выводить
if ($attr['@attributes']['type'] !== 'image/jpeg') continue;
$data = [];
$data['title'] = $sql->varchar($node->title);
$data['link'] = $sql->varchar($node->link);
$data['description'] = $sql->varchar($node->description);
$data['url'] = $sql->varchar($attr['@attributes']['url']);
$data['pubDate'] = $sql->varchar(date('Y-m-d H:i:s', strtotime($node->pubDate)));
$data['uploaded'] = $sql->varchar($sql->now());
# проверка записи на существование
# replace не подходит, ибо будет изменяться значение apodUnits.id
# а оно нужно для связи с apodComments
$sql->str = 'select * from apodUnits where link=' . $data['link'];
$sql->execute();
$sql->free();
if ($sql->rows) continue;
if ($sql->insert('apodUnits', $data) === false) {
die('mysql error');
} else if ($sql->rows) {
$added ++;
}
}
echo $added . ' new records added';