If you want a small program that you can run periodically to backup your blogger blogs, you can use the following source code with the Google GData .NET Library.
See Sorting photo data from Google's Picasa API for another example of using the GData .NET library.
Code highlights
- You need to supply your email address and password at service.Credentials
- You need to specify the backup folder (Dim folder as String =)
- The file is written as an XML file in
- a sub-folder based on each blog's title
- uses a unique filename based on the date and time
Imports Google.GData.Client
Imports System.Xml
Imports System.Text.RegularExpressions
Imports System.Net
Imports System.IO
Module Module1
Dim exp As New Regex("[^a-zA-Z0-9]")
Dim service As New Service("blogger", "BloggerSampleApp")
Sub Main()
service.Credentials = New GDataCredentials("<emailaddress>", "<password>")
Dim query As New FeedQuery
query.Uri = New Uri("http://www.blogger.com/feeds/default/blogs")
Try
Dim bloggerFeed As AtomFeed = service.Query(query)
While bloggerFeed.Entries.Count > 0
For Each entry As AtomEntry In bloggerFeed.Entries
exportBlog(entry)
Next
If bloggerFeed.NextChunk = Nothing Then
Exit While
End If
query.Uri = New Uri(bloggerFeed.NextChunk)
bloggerFeed = service.Query(query)
End While
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try
End Sub
Sub exportBlog(ByVal blog As AtomEntry)
Dim title As String = blog.Title.Text
Dim folder As String = "M:\WWW\Blogs\" + title
Console.WriteLine(folder)
Try
IO.Directory.CreateDirectory(folder)
Catch ex As Exception
End Try
Dim filename As String = folder + "\" + exp.Replace(Now.ToString("s"), "") + ".xml"
Console.WriteLine(vbTab + filename)
Dim o As New FileStream(filename, FileMode.Create)
Dim blogId As String = ""
Dim ss() As String = blog.SelfUri.Content.Split("/")
For i As Integer = 0 To ss.Count - 1
If ss(i).ToLower.Equals("blogs") Then
blogId = ss(i + 1)
End If
Next
Dim url As String = "http://www.blogger.com/feeds/" + blogId + "/archive"
Dim str As IO.Stream = service.Query(New Uri(url))
Dim b(50000) As Byte
While True
Dim len As Integer = str.Read(b, 0, 50000)
o.Write(b, 0, len)
If len < 1 Then
Exit While
End If
End While
str.Close()
End Sub
End Module