Жизнь это - мгновения, промежутки. Ночь ушла, солнце скоро взойдет. Сделайте эти промежутки настолько прекрасными насколько это возможно - наполненными молчанием, наполненными благодарностью к существованию, которое дало вам шанс, благодарностью по отношению ко всем тем, кто вам помог. И ждите.


27 марта 2012 г.

Как перенести блог из wordpress в livejournal

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

Автор - http://blog.simonchik.net/2008/03/wordpress-livejournal_6914.html

Если кому-то вдруг понадобится перенести свой журнал из блога на 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/

Комментариев нет:

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