Перенос постов из wordpress в livejournal

26 03 2008

Если кому-то вдруг понадобится перенести свой журнал из блога на wordpress.com в livejournal, то дальше вы найдете скрипт на питоне, который импортирует записи в ЖЖ из файла экспорта WP. Я написал его для себя, поскольку веду блог здесь, но моя работа связана с ЖЖ и мне нужен там журнал хотя бы в тестовых целях.

# -*- coding: utf-8 -*-
#!/usr/bin/env python
#Boa:PyApp:main

import xmlrpclib
import datetime
import time
import xml.dom.minidom

modules ={}
lj_username = "dimychs"
lj_password = "*********"
wp_exportfile = "wordpress.2008-03-26.xml"
wp_datefrom = "01.01.1980" #date format is DD.MM.YYYY
wp_datetill = "01.01.2010"
lj_disablecomments = True
lj_addoriginallink = True

def getNodeValue(node):
    value = ""
    for textnode in node.childNodes:
        value = value + textnode.nodeValue
    return value

def getPostData(xmlNode):
    postdata = {};
    tagline = "";
    postdata["ver"] = 1 #this means that all data is sent in unicode
    posttext = “”;
    postdtime = “”;
    for node in xmlNode.childNodes:
        if(node.nodeType != xml.dom.Node.ELEMENT_NODE):
            continue;
        if(node.tagName == “title”):
            value = getNodeValue(node)
            postdata["subject"] = value

        if(node.tagName == “content:encoded”):
            value = getNodeValue(node).replace(”“, “”)
            posttext += value

        if(node.tagName == “category”):
            tag = getNodeValue(node)
            if(tagline != “”):
                tagline += “, ”
            tagline += tag;

        if(node.tagName == “pubDate”):
            postdtime = mytime = getNodeValue(node)
            time_format = “%a, %d %b %Y %H:%M:%S +0000″
            posttime = time.strptime(mytime, time_format)
            if(posttime[0] == 1970):
                posttime = time.localtime()
            postdata["year"] = posttime[0]
            postdata["mon"] = posttime[1]
            postdata["day"] = posttime[2]
            postdata["hour"] = posttime[3]
            postdata["min"] = posttime[4]

        if(node.tagName == “wp:status”):
            status = getNodeValue(node)
            if(status != “publish”):
                postdata["security"] = “private”

        if(node.tagName == “link”):
            value = getNodeValue(node)
            if(posttext != “”):
                posttext += “\n”
            posttext += “This is a crosspost from ” + value + “\n\n”;

        options = {”taglist”: tagline, “opt_backdated”: True}
        if(lj_disablecomments):
            options["opt_nocomments"] = True

        if(postdata["subject"] == “”):
            postdata["subject"] = postdtime
        postdata["props"] = options;
        postdata["event"] = posttext;
        postdata["username"] = lj_username
        postdata["password"] = lj_password

    return postdata

def main():
    timestart = time.strptime(wp_datefrom, “%d.%m.%Y”)
    timeend = time.strptime(wp_datetill, “%d.%m.%Y”)

    server = xmlrpclib.ServerProxy(”http://www.livejournal.com/interface/xmlrpc”)
    dom = xml.dom.minidom.parse(wp_exportfile)
    i = 1;
    for node in dom.documentElement.childNodes:
        if(node.nodeType == xml.dom.Node.ELEMENT_NODE):
            if(node.tagName == “channel”):
                print “Channel found:”, node;
                for item in node.childNodes:
                    if(item.nodeType != xml.dom.Node.ELEMENT_NODE):
                        continue;
                    if(item.tagName == “item”):
                        args = getPostData(item)
                        #checking date
                        posttime = time.strptime(str(args["day"])+”.”+
                        str(args["mon"])+”.”+str(args["year"]),”%d.%m.%Y”)
                        if(posttime >= timestart and posttime < timeend):
                            response = server.LJ.XMLRPC.postevent(args)
                            print “Item: “, i, response
                            i += 1
                break            

if __name__ == ‘__main__’:
    main()

Все параметры задаются вначале файла:

lj_username = “dimychs”
lj_password = “*********”
wp_exportfile = “wordpress.2008-03-26.xml”
wp_datefrom = “01.01.1980″ #date format is DD.MM.YYYY
wp_datetill = “01.01.2010″
lj_disablecomments = True
lj_addoriginallink = True

По-моему, их смысл понятен из названий.

Вот так будет выглядеть результат: http://dimychs.livejournal.com/

Пользуйтесь без стеснений :)


Действия

Информация

Один ответ к “Перенос постов из wordpress в livejournal”

28 03 2008
positiveme (00:28:34) :

спасибо

Оставить комментарий

Вы можете использовать эти метки : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>