导入已有站点

简介

命令行工具 pelican-import 用于将其他软件生成的文章转换成reStructuredText或Markdown格式。支持导入下面这些格式:

  • Blogger XML export

  • Dotclear export

  • Medium export

  • Tumblr API

  • WordPress XML export

  • RSS/Atom feed

从HTML转换到reStructuredText或Markdown是依赖 Pandoc 完成的。对于Dotclear,若原帖子是由Markdown语法写的,则无需转换(因为Pelican本就支持Markdown)。

备注

和Pelican不同,在Wordpress中可以将一篇文章同时放在多个分类中。在导入时,各个分类会以逗号分隔,你必须自己手动进行处理。或者也可以使用例如 More Categories 这样的插件,使得文章可以同时存在于多个分类中。

备注

要导入的内容中可能会包含指向原站点的图片链接,你可能希望将他们全部下载下来,然后再重新手动调整这些链接。

依赖

pelican-import 需要用到一些其他依赖,这些依赖只会被 pelican-import 用到:

  • 为了能够导入WordPress和Dotclear的内容,需要 BeautifulSoup4lxml 。安装方法与其他Python包相同( pip install BeautifulSoup4 lxml

  • 为了能够导入订阅源,需要 Feedparserpip install feedparser

  • 还需要 Pandoc ,参照 Pandoc官方网站 进行安装。

用法

pelican-import [-h] [--blogger] [--dotclear] [--tumblr] [--wpfile] [--feed]
               [-o OUTPUT] [-m MARKUP] [--dir-cat] [--dir-page] [--strip-raw] [--wp-custpost]
               [--wp-attach] [--disable-slugs] [-b BLOGNAME]
               input|api_key

位置参数

input

需要读取的输入文件

api_key

(只会在Tumblr中用到)从 https://www.tumblr.com/oauth/apps 中获取到的api_key

可选参数

-h, --help

显示此帮助信息并退出 pelican-import

--blogger

输入是否为Blogger XML格式(默认:False)

--dotclear

输入是否为Dotclear格式(默认:False)

--medium

输入是否为Medium格式(默认:False)

--tumblr

输入是否为Tumblr API格式(默认:False)

--wpfile

输入是否为WordPress XML格式(默认:False)

--feed

输入是否为订阅源格式(默认:False)

-o OUTPUT, --output OUTPUT

输出路径(默认:content)

-m MARKUP, --markup MARKUP

输出格式,可选值为: rstmarkdownasciidoc (默认: rst

--dir-cat

是否要将输出文件按分类名放到各文件夹中(默认:False)

--dir-page

将识别为页面的文件放入“pages/” 子文件夹中(仅在blogger和wordpress中有用)(默认:False)

--filter-author

仅导入某个作者的帖子

--strip-raw

删除无法转换的HTML代码,例如嵌入的flash或iframe(默认:False)

--wp-custpost

将wordpress中的自定义类型博文放到对应文件夹中。如果同时还使用了 --dir-cat 选项,输出转换后文件时会创建诸如“/post_type/category/” 的文件夹(只在wordpress中有效)

--wp-attach

下载作为附件上传到WordPress的文件。文件会以列表形式添加到帖子的开头,并且到这些文件的链接都会进行更新。另外,即使某些文件没有在任何帖子中用到,也同样会被下载。文件会被下载到输出文件夹下,并保持原始路径,例如“output/wp-uploads/date/postname/file.jpg” 。(仅在wordpress中有效,且需要互联网连接)

--disable-slugs

不保存导入推文的slug,会导致Pelican的URL和原推文不一致。(默认:False)

-b BLOGNAME, --blogname=BLOGNAME

Tumblr API中使用的博客名

例子

导入Blogger:

$ pelican-import --blogger -o ~/output ~/posts.xml

导入Dotclear:

$ pelican-import --dotclear -o ~/output ~/backup.txt

导入Medium:

$ pelican-import --medium -o ~/output ~/medium-export/posts/

Medium中导出的是一个zip文件。请先解压之,然后再将其中的“posts”子目录传给此工具。 https://help.medium.com/hc/en-us/articles/115004745787-Export-your-account-data 中有更详细的导出指导。

导入Tumblr:

$ pelican-import --tumblr -o ~/output --blogname=<blogname> <api_key>

导入WordPress:

$ pelican-import --wpfile -o ~/output ~/posts.xml

导入Medium(例子中使用了RSS订阅源):

$ python -m pip install feedparser $ pelican-import --feed https://medium.com/feed/@username

备注

RSS订阅源可能只会返回最新的帖子,而不是所有帖子。

测试

可以使用下面的文件作为样例进行测试: