Update #3 (26 April 2007): This plugin has been broken by changes made to feeds on Blogger, and is pretty much unusable anymore. The download links are still there so if you want to try it anyway you can do so. Try to see the method described in TechCounter (the last one) for a good method. Theoretically this would work but I have not tried it. Good luck!.
Update #2: Only 500 posts can be imported via RSS (Blogger limited the RSS feed to only contain 500 max posts). Check out comment 181 and 191 below for suggestions.
Update: This plugin is now known as Blogger RSS Import instead of New Blogger Import.
Back in December, I created a stand alone script to import Blogger Beta to WordPress. I didn’t really expect that many will benefit from it until I received so many comments and bug reports. So here is the improved version, as a plugin. Many improvements were done especially at the database side where WordPress functions are utilized, and there’s no security issue anymore.
Installation
As with any other plugin, here are the steps needed to install this plugin:
- Upload the script to /wp-content/plugins folder.
- Activate it under Plugins
- Look for it under the Manage menu. You should see Blogger RSS Import
Options
- Blogger ID: the front part of your Blogger blog. For example, if it’s http://myblog.blogspot.com then you need to enter myblog in the text box.
- Default author: if your blog only have one author (i.e. you) and you have created a user before using this script, you can select the user here. All of your posts will be associated to this user.
- Match authors…: this is useful if you have not explicitly created your username, or for multi user blogs. With this checked, the plugin will associate the authors with their own post. Any author not found in the system will be created as a subscriber (you need to edit the user later). This option overrides option 2.
- Default category: this option generally is the same as option 2 where a single category will be linked to your post. I leave this here for historical purpose and you might never know user’s preferences.
- Match categories…: import labels from your Blogger posts. If you don’t have any labels for your posts, it is safe to leave this unchecked and all posts will be associated with the value selected in option 4.
- Number of posts per cycle: This is the number of posts that will be imported per cycle, if you choose to have staged import. I recommend this for most users.
- I want to import everything all at once: this is the default behavior of the script when it was first released, until some users are having trouble with big number of posts to be imported from their Blogger. This disables the staged import and overrides option 6.
- Haloscan friendly: this option will cause your posts to have comment fields (invisible) for this Haloscan importer to work.
- Do not import comments: speeds up your import if you have no comment or 100% of your comments come from Haloscan, for example.
- Maintain my permalink: Blogger has a different way of setting post permalinks, and luckily it’s included in the feeds. Even if this is imported, you will need to edit your permalik structure to /%year%/%monthnum%/%postname%.html to work. Stephen might want to share his tips on this as he uses it.
Requirements
- Either allow_url_fopen is set to On, or the CURL extension is installed on the server.
- Full feeds are enabled on your Blogger (see image below)
- An open mind 😉
Will not work if…
- Your site is not hosted on Blogger server (i.e. on your own domain). You’ll need to republish everything on Blogger.
- You use other feed than Blogger feed (i.e. FeedBurner)
Tested on…
- WordPress 2.0.5
- WordPress 2.0.7
- WordPress 2.1
Credits goes to…
- My wife for being here for me
- Charles Wesley for suggesting CURL
- Dawn for the staged import
- John Halton for asking for the Haloscan import
- Stephen Newton for asking for Permalinks
- Ricardo for providing a testblog, and testing lots of things
- Andrea Trasatti for trying to help with the author & category matching
- Sander van Dragt for WordPress MU compatibility
- John Bindel for reporting and noticing the spot for the comments dates bug
And many thanks for the donators. Although I can’t withdraw money from Paypal, at least I can pay certain services. I appreciate your support.
Download
I know you are getting bored reading to all of text up there, so here it is:
new-blogger-import-1.0-final.zip (md5sum: 30538edd35c9427363e37dc842e78e07)
new-blogger-import-1.0-bugfix-1.zip (md5sum: 62ec6348b314df8ddd0d8df057e01812)
blogger-rss-import-1.1.zip (md5sum: 5e5b938a288eeb6cc1eb0e4f83edbd7a)
blogger-rss-import-1.2.zip (md5sum: ce31c1b8abf779c6758f026c2fd3bbfe)
blogger-rss-import-1.2.1.zip (md5sum: a4f6912601f25bee3c5ba31d9cd89769)
This is for users having trouble with the zip file: blogger-rss-import.txt (save as .php and upload it)
For those who would like to see the code: blogger-rss-import.phps
Please report all bugs to ady at romantika dot name.
Problems Encountered By Users
- Error 502
Warning: fopen(http://xxxxxxx.blogspot.com
/feeds/xxxxxxxxx /comments/default) [ function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 502 Bad Gateway in /home/xxxxxxxxxxx/public_html/wp -content/plugins/new-blogger-import.php on line 143 This problem is usually caused by connection between the host (server) and Blogger being not stable. There’s nothing I can do about it, but you can try again. Many users succeed when trying again.
Extra
During testing, for your convenience do consider WordPress Suicide. You can use it now, compared to before as reported by David in this post. Don’t delete all tables, use these settings:
Update: Justin has announced an upgraded version to cater to WordPress 2.1. This is needed as a new table was introduced to WordPress 2.1
Images
Images are not imported to your WordPress blog, so if your images are hosted on Blogger, they will not be displayed to visitors because of the hotlink protection. Consider this plugin by Notion: Blogger Image Import.
Problems?
If you encounter any problems, you are welcome to email me or post a comment. Please take note however that I will need time to respond, and look at the problems. This code is in no way 100% free from bugs.
I recommend all questions include everything you know, up to the extent of the PHP version on the server, if you know. In any case please included these information as a minimum:
- Blogger URL
- Destination WP URL
It would be extra helpful to have a screenshot of the error message, or any particular area you are having problems with. Here’s a good software to capture screenshots called MwSnap.
In short, I need as much information as possible in order to give advice and help you troubleshoot the problem. I am no clairvoyant 🙂
Post changelog
- February 1, 2007 19:25 GMT+8
- Changed /%year%/%month%/%name%.html to /%year%/%monthnum%/%postname%.html (Thanks Stephen)
- February 23, 2007
- Added problems section
- Urgent Bugfix – permalinks with dash or underscore not captured. Any other characters used in blogger Id?
- February 26, 2007
- Upgraded to version 1.1 and changed name to Blogger RSS Import. I think the new name is more suitable, without the word “new” that confuses many people.
- A very important update to this version is the ability to extract more than 25 comments, where this problem was faced by John Doe (refer to comments). A revamp was done to the code to extract comments.
- Also added was the ability not to import comments, and skip cycles to minimize overlapping posts when re-importing.
- March 4, 2007
- Version 1.2 is released. Important bug fix – comments dates were incorrectly imported (only effects version 1.1). Thanks to John Bindel for reporting and noticing the problem in the code.
- March 5, 2007
- Version 1.2.1 is released due to some problems getting initial comments data (number of comments). I am sensing that Blogger is making changes. This plugin may be obsolete soon so if you want to use it, do it now.
- March 8, 2007
- I don’t know what I was thinking, with the phps version. Obviously it would not work as the web server will format the output to be pretty. I’ve provided a link to the text version.
Complete code changelog is available inside the plugin file itself.
Not sure if my last comment went through, but disregard it anyway. The plugin worked fine. Thanks a million!
@AS: I accidentally clicked on “Delete All” on spam page. No idea why it was marked as spam, and now it’s gone. I got a glance, and error 502 is gateway timeout – related on your connection to the Internet. Thanks for testing I’m glad it worked for you.
Thanks for the Haloscan import and WordPress Suicide props. I’ve got a new Blogger blog I’ve been meaning to import, so I’ll have to take a look at your script.
@Justin: Thanks a lot for visiting. Yes it would be an honor to be having an experienced blogger & plugin developer comment on my plugin. 🙂 I did have some trouble looking for the right built-in function to use inside WordPress.
Many thanks for this. I might not have time to try it for a couple days, but I am excited and will be more than happy to share experiences.
…now where’s that tip jar?
Very nice work!
Categories were imported, there is a problem but renaming the categories should solve it.
if categories have “^” or “‘” the are split in to two categories with the same numbr of posts, the stange thing is that not all that have “´” are split but like i sais a bit of editing should take care of it.
see this scrennshot for more info
http://img216.imageshack.us/img216/8692/romantikagh6.jpg
Thanks
Well done! Worked like a treat on a test server I set up, so I’ll do it again for real soon. Really appreciate the good work.
could you tell me how to install the one mentioned in point number 1 under the subheading Requirements. thanx.
//Either allow_url_fopen is set to On, or the CURL extension is installed on the server.
how to do this.
The plugin works excellent, well done. The only problem experienced was the described timeout error. But after 6 rounds everything works fine and the WordPress Suicide plugin was very helpful.
Thanks for letting me know about this, but…
“Will not work if… Your site is not hosted on Blogger server (i.e. on your own domain). You’ll need to republish everything on Blogger.”
None of my Blogger blogs are on blogspot. Are you seriously suggesting I republish a 600+ post blog on blogspot before importing into WordPress? Not that I don’t want to trust your plug in – good work! – but I certainly do NOT trust blogger to do this correctly….
Hi
There is an important typo in your instructions. The permalink structure should be set to:
/%year%/%monthnum%/%postname%.html
Otherwise it looks like that feature works (though I’m testing further) which is great for those of us who like to link back to posts we’ve written previously and/or get search engine traffic.
Thank-you.
@ricardo: You mean accented characters, right? Hmm.. I’ll try to fix that ASAP. In the meantime for others, a workaround is that you can edit the categories in WordPress itself.
@ant: Good luck.
@sn: I believe “allow_url_fopen” and “CURL extension” are links. They are explained further on PHP site. However those can’t be modified or installed yourself unless you own the server. If your hosting provides the ability to have custom php.ini then you can make changes, set allow_url_fopen = On. Otherwise you can ask your hosting to change the setting or install the extension for you. 😉
@Joachim: Yeah, too bad I can do nothing about the timeout error. Do you use Bluehost? So far many Bluehost users have that problem.
@Deek: The only reason for that dependency is that this plugin relies on the full feed from Blogger. I am unsure of how feeds work if you publish via FTP to your own domain. If the feeds are still the same (and you don’t redirect them to FeedBurner) it should work. I am not suggesting anything. By the way if you already use Blogger system to publish your blogs, this means you already trust them to do things correctly. The only difference is you host your contents on your server.
By republishing the contents on blogger I don’t think it will effect your existing published contents in your own domain, will it? Somebody has to confirm on this.
@Stephen: Yes sorry that was not accurate as I was conceptually speaking and didn’t really go and check the correct variables. I guess users can be confused with that, so I will change it in a minute. Thanks for sharing.
yes its the accented characters but not all, weird.
heres ascrenshot of what the script picks up
http://img357.imageshack.us/img357/8127/bloggervh1.jpg
Two questions:
Haloscan: should we run the Haloscan importer first (as those importing using the WP Old Blogger import have to)?
Staged imports: I tried to import 933 posts at once to a test blog and managed about 600. So I started again with staged imports of 10 cycles. At first attempt only cycles 6 and 4 succeeded. Second time 7, 5, 4 and 3 succeeded. So it’s pretty random and the 100 posts in cycle 4 were duplicated. May I suggest a ‘skip cycle’ button? This would have enabled me to skip cycle 4 at the second attempt.
(I might be able to change the max_execution_time on my server, but wouldn’t know how.)
@ricardo: I will look into it once I have a chance. Thanks a lot for the screenshot! It was very helpful.
@Stephen: Run this plugin first, and then Justin’s. My plugin merely take the data required for the Haloscan import and save it. You’re right that’s a useful feature. I shall add it in the next release. Thanks a lot!
Hey Ady,
Worked awesome!! thanks for all of your effort and work, GREATLY appreciated!
~ Norm