Sonntag, 11. Januar 2015

Posts auf Blogger.com automatisiert veröffentlichen

Die nächsten Posts werde ich dem Bloggerportal Blogger.com widmen, auf welchem unter anderem auch dieser Blog läuft. Für den Zugriff per C# benutzen wir die Blogger Data API, wie in dieser Dokumentation beschrieben. Hier benutzen wir Version 2, aber es gibt mittlerweile auch die (Beta) Version 3, die ich wahrscheinlich später beschreiben werden.
Im heutigen Post möchte ich zeigen, wie man mit C# Posts erstellt und veröffentlicht.
Dazu müssen wir zuerst das Google_Data_API_Setup von diesem Link herunterladen und installieren. Dann fügen wir unserem Projekt die Referenz Google.GData.Client.dll hinzu, diese liegt bei mir im Ordner C:\Program Files (x86)\Google\Google Data API SDK\Redist, und integrieren sie mittels using Google.GData.Client; 
Nun können wir uns bei Blogger anmelden:

            Service service = new Service("blogger", "");
            service.Credentials = new GDataCredentials(Email, Password);
            GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory)service.RequestFactory;
            factory.AccountType = "GOOGLE";

Posts werden im Atomformat erstellt, mit diesen Codezeilen legen wir einen Post mit Titel "Test" und Inhalt "Testpost" an:

            AtomEntry newPost = new AtomEntry();
            newPost.Title.Text = "Test";
            newPost.Content = new AtomContent();
            newPost.Content.Content = "Testpost";
            newPost.Content.Type = "xhtml";
            // newPost.IsDraft = true;

Die Attribute sollten eigentlich selbsterklärend sein, mittels IsDraft wird festgelegt, ob der Post ein Entwurf sein soll.
Schließlich müssen wir den Post noch veröffentlichen, hierzu schicken wir den Post an den Blogfeed, was wir folgendermaßen tun:


            Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogID + "/posts/default");
            AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);

Der komplette Code lautet:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Google.GData.Client;

namespace BloggerCreatePosts
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            Service service = new Service("blogger", "");
            service.Credentials = new GDataCredentials(Email, Password);
            GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory)service.RequestFactory;
            factory.AccountType = "GOOGLE";

            AtomEntry newPost = new AtomEntry();
            newPost.Title.Text = "Test";
            newPost.Content = new AtomContent();
            newPost.Content.Content = "Testpost";
            newPost.Content.Type = "xhtml";
            // newPost.IsDraft = true;


            Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogID + "/posts/default");
            AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);
        }
    }
}

Keine Kommentare:

Kommentar veröffentlichen