aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/pelican_comments/wp2comments
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/pelican_comments/wp2comments')
-rw-r--r--plugins/pelican_comments/wp2comments77
1 files changed, 77 insertions, 0 deletions
diff --git a/plugins/pelican_comments/wp2comments b/plugins/pelican_comments/wp2comments
new file mode 100644
index 0000000..9e4beab
--- /dev/null
+++ b/plugins/pelican_comments/wp2comments
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+
+from codecs import open
+import sys
+import os
+from lxml import etree
+
+COMMENT_DIR='comments'
+
+def wp2comments(xml):
+
+ #xmlfile = open(xml, encoding='utf-8', mode='r').read()
+ tree = etree.parse(xml)
+ root = tree.getroot()
+ items = root.findall('.//item')
+
+ n = 0
+
+ if not os.path.exists(COMMENT_DIR):
+ os.makedirs(COMMENT_DIR)
+ elif not os.path.isdir(COMMENT_DIR):
+ print('"%s" exists but is not a directory!' % COMMENT_DIR)
+ sys.exit(1)
+
+ for item in items:
+ title = item.find('title')
+ if title is None: continue
+
+ # Only fetch comments from published posts.
+ status = item.find('wp:status', namespaces=root.nsmap)
+ if status is None or status.text != 'publish':
+ continue
+
+ slug = item.find('wp:post_name', namespaces=root.nsmap)
+ if slug is None:
+ print('WARNING: skipping "%s" with no post_name')
+ continue
+ slug = slug.text
+
+ comments = item.findall('wp:comment', namespaces=root.nsmap)
+ if not comments:
+ # No comments found for this post.
+ continue
+
+ for comment in comments:
+ def comment_tag(tag):
+ result = comment.find(tag, namespaces=root.nsmap)
+ if result is None:
+ return ''
+ else:
+ return result.text
+
+ status = comment_tag('wp:comment_approved')
+ if status != '1':
+ continue
+
+ author = comment_tag('wp:comment_author')
+ ip = comment_tag('wp:comment_author_IP')
+ date = comment_tag('wp:comment_date_gmt')
+ email = comment_tag('wp:comment_author_email')
+ url = comment_tag('wp:comment_author_url')
+ content = comment_tag('wp:comment_content')
+
+ n += 1
+ f = open(os.path.join(COMMENT_DIR, '%s-%d.md' % (slug, n)),
+ encoding='utf-8', mode='w')
+ f.write(u'post_id: %s\n' % (slug, ))
+ f.write(u'Author: %s\n' % (author, ))
+ f.write(u'Date: %s\n' % (date, ))
+ f.write(u'Author_Email: %s\n' % (email, ))
+ f.write(u'Author_IP: %s\n' % (ip, ))
+ f.write(u'\n%s\n' % (content, ))
+ f.close()
+
+
+if __name__ == '__main__':
+ wp2comments(sys.argv[1])