-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrss.php
More file actions
83 lines (78 loc) · 3.18 KB
/
rss.php
File metadata and controls
83 lines (78 loc) · 3.18 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
include "config.php";
require_once __DIR__ . '/Parser.php';
require_once __DIR__ . '/helpers.php';
$contents_list = pmecho_load_contents_list(__DIR__ . '/achive_list.php');
$achive_list = __DIR__ . '/achive_list.php';
$rss_url = pmecho_build_rss_url($site_url);
$site_update_time = date("Y-m-d H:i:sP");
if (file_exists($achive_list)) {
$site_update_time = date ("Y-m-d H:i:sP", filemtime($achive_list));
}
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
>
<channel>
<title><?php echo pmecho_escape($sitename)?></title>
<atom:link href="<?php echo pmecho_escape($rss_url)?>" rel="self" type="application/rss+xml" />
<link><?php echo pmecho_escape($site_url)?></link>
<description><?php echo pmecho_escape($description)?></description>
<lastBuildDate><?php echo pmecho_escape($site_update_time)?></lastBuildDate>
<language>zh_CN</language>
<sy:updatePeriod>daily</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<generator uri="https://github.com/sluke/PMecho" version="0.2">PMecho</generator>
<?php
$file_num = count($contents_list);
$list_start_num = $file_num - 1;
$list_end_num = max(0, $file_num - $summary_list_lim);
$parser = new HyperDown\Parser();
for ($i = $list_start_num; $i >= $list_end_num; $i--) {
if (!isset($contents_list[$i])) {
continue;
}
$content_slug = $contents_list[$i][0];
$content_url = pmecho_build_article_url($site_url, $content_slug);
$content_title = $contents_list[$i][1];
$article = pmecho_read_article($dir, $content_slug);
if ($article === null) {
continue;
}
$html_content = $article['body_markdown'] === '' ? '' : $parser->makeHtml($article['body_markdown']);
$content_summary = preg_replace('/\s+/u', ' ', trim(strip_tags($html_content)));
$content_summary = mb_substr($content_summary, 0, $summary_lim, 'UTF-8');
$content_updated_time = $article['updated_at'];
$content_published_time = $article['published_at']." 08:20:20 ".$article['timezone_offset'];
$rss_item_title = pmecho_escape($content_title);
$rss_item_url = pmecho_escape($content_url);
$rss_updated = pmecho_escape($content_updated_time);
$rss_published = pmecho_escape($content_published_time);
$rss_author = pmecho_escape($author);
$rss_site_url = pmecho_escape($site_url);
echo "
<item>
<title>$rss_item_title</title>
<link>$rss_item_url</link>
<comments>$rss_item_url</comments>
<pubDate>$rss_published</pubDate>
<updated>$rss_updated</updated>
<author>
<name>$rss_author</name>
<uri>$rss_site_url</uri>
</author>
<description><![CDATA[$content_summary]]></description>
<content:encoded><![CDATA[$html_content]]></content:encoded>
</item>
";
}
?>
</channel>
</rss>