diff --git a/nasg.py b/nasg.py index b57b675..8ebdab0 100644 --- a/nasg.py +++ b/nasg.py @@ -64,6 +64,17 @@ RE_PRECODE = re.compile( r'
'
 )
 
+#def relurl(url,base=settings.site.get('url')):
+    #url =urlparse(url)
+    #base = urlparse(base)
+
+    #if base.netloc != url.netloc:
+        #raise ValueError('target and base netlocs do not match')
+
+    #base_dir='.%s' % (os.path.dirname(base.path))
+    #url = '.%s' % (url.path)
+    #return os.path.relpath(url,start=base_dir)
+
 class cached_property(object):
     """ extermely simple cached_property decorator:
     whenever something is called as @cached_property, on first run, the
@@ -402,6 +413,7 @@ class Singular(MarkdownDoc):
         urls = self.meta.get('syndicate', [])
         if self.is_photo:
             urls.append("https://brid.gy/publish/flickr")
+        urls.append("https://fed.brid.gy/")
         return urls
 
     def baseN(self, num, b=36,
@@ -508,6 +520,7 @@ class Singular(MarkdownDoc):
             'summary': self.summary,
             'html_summary': self.html_summary,
             'html_content': self.html_content,
+            'mtime': self.mtime,
             'pubtime': self.published.format(settings.dateformat.get('iso')),
             'pubdate': self.published.format(settings.dateformat.get('display')),
             'year': int(self.published.format('YYYY')),
@@ -1259,8 +1272,22 @@ class Category(dict):
         else:
             return True
 
-    async def render_feed(self):
-        settings.logger.info('rendering category "%s" ATOM feed', self.name)
+    async def render_feeds(self):
+        await self.render_rss();
+        await self.render_atom();
+
+    async def render_rss(self):
+        await self.render_feed('rss')
+
+    async def render_atom(self):
+        await self.render_feed('atom')
+
+    async def render_feed(self, xmlformat):
+        settings.logger.info(
+            'rendering category "%s" %s feed',
+            self.name,
+            xmlformat
+        )
         start = 0
         end = int(settings.site.get('pagination'))
 
@@ -1279,15 +1306,21 @@ class Category(dict):
         })
         fg.logo('%s/favicon.png' % settings.site.get('url'))
         fg.updated(arrow.get(self.mtime).to('utc').datetime)
+        fg.description(settings.site.get('title'))
 
         for post in self.get_posts(start, end):
             dt = arrow.get(post.get('pubtime'))
+            mtime = arrow.get(post.get('mtime'))
             fe = fg.add_entry()
+
+            fe.id(post.get('url'))
+            fe.title(post.get('title'))
+
             fe.author({
                 'name': settings.author.get('name'),
                 'email':settings.author.get('email')
             })
-            fe.id(post.get('url'))
+
             fe.category({
                 'term': post.get('category'),
                 'label': post.get('category'),
@@ -1296,32 +1329,43 @@ class Category(dict):
                     post.get('category')
                 )
             })
-            fe.link(href=post.get('url'))
-            fe.link(href=post.get('url'), rel='alternate', type='text/html')
-            fe.title(post.get('title'))
+
             fe.published(dt.datetime)
-            fe.updated(dt.datetime)
-            fe.content(
-                post.get('html_content'),
-                #src=post.get('url')
-            )
+            fe.updated(mtime.datetime)
+
             fe.rights('%s %s %s' % (
                 post.get('licence').upper(),
                 settings.author.get('name'),
                 dt.format('YYYY')
             ))
-            if 'enclosure' in post:
-                enc = post.get('enclosure')
-                fe.enclosure(
-                    enc.get('url'),
-                    "%d" % enc.get('size'),
-                    enc.get('mime')
-                )
 
-        atom = os.path.join(dirname, 'index.xml')
-        with open(atom, 'wb') as f:
-            settings.logger.info('writing file: %s', atom)
-            f.write(fg.atom_str(pretty=True))
+            if xmlformat == 'rss':
+                fe.link(href=post.get('url'))
+                fe.content(post.get('html_content'), type='CDATA')
+                #fe.description(post.get('summary'), isSummary=True)
+                if 'enclosure' in post:
+                    enc = post.get('enclosure')
+                    fe.enclosure(
+                        enc.get('url'),
+                        "%d" % enc.get('size'),
+                        enc.get('mime')
+                    )
+            elif xmlformat == 'atom':
+                fe.link(href=post.get('url'), rel='alternate', type='text/html')
+                fe.content(src=post.get('url'), type='text/html')
+                fe.summary(post.get('summary'))
+
+        if xmlformat == 'rss':
+            feedfile = os.path.join(dirname, 'index.xml')
+        elif xmlformat == 'atom':
+            feedfile = os.path.join(dirname, 'atom.xml')
+
+        with open(feedfile, 'wb') as f:
+            settings.logger.info('writing file: %s', feedfile)
+            if xmlformat == 'rss':
+                f.write(fg.rss_str(pretty=True))
+            elif xmlformat == 'atom':
+                f.write(fg.atom_str(pretty=True))
 
     async def render_page(self, pagenum=1, pages=1):
         if self.display == 'flat':
@@ -1370,7 +1414,7 @@ class Category(dict):
         while page <= pages:
             await self.render_page(page, pages)
             page = page + 1
-        await self.render_feed()
+        await self.render_feeds()
 
 
 class Sitemap(dict):
@@ -1496,7 +1540,7 @@ def make():
         if post.mtime > last:
             last = post.mtime
         rules.add_gone(post.source)
-    for e in glob.glob(os.path.join(content, '*', '*.lnk')):
+    for e in glob.glob(os.path.join(content, '*', '*.url')):
         post = Redirect(e)
         if post.mtime > last:
             last = post.mtime
diff --git a/templates/Category.j2.html b/templates/Category.j2.html
index 256f3f8..d6bad18 100644
--- a/templates/Category.j2.html
+++ b/templates/Category.j2.html
@@ -2,7 +2,8 @@
 {% block lang %}{% endblock %}
 {% block title %}{{ category.title }}{% endblock %}
 {% block meta %}
-    
+    
+    
 {% endblock %}
 {% block content %}
 
diff --git a/templates/Search.j2.php b/templates/Search.j2.php index 7ddc108..5c0b86a 100644 --- a/templates/Search.j2.php +++ b/templates/Search.j2.php @@ -2,7 +2,7 @@ {% block lang %}{% endblock %} {% block title %}Search results for: {% endblock %} {% block content %} -
+

Search results for:

@@ -29,5 +29,5 @@ while ($row = $results->fetchArray(SQLITE3_ASSOC)) { } printf(""); ?> -
+
{% endblock %}