Visual Studio 2010 C#.NET で WordPress に自動投稿するプログラムを作るべく調査しまいた。
以下のサイトを参考にしました。
http://www.moonmile.net/blog/archives/1284
XML-RPCを使います。
参考サイトに従ってC#のプロジェクトをダウンロードしてコンパイルしました。
コンパイルを試した結果、.NET Framework 4ではうまくいきません。
.NET Framework 3.5で動作確認ができました。
現時点でのxml-rpc.netのバージョンは.2.5.0でした。
参考サイトのソースを少し変更して、コマンドプロンプトからすべて引数で動くように改修しました。
- サンプルコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CookComputing.XmlRpc;
namespace WP_Post
{
class Program
{
static void Main(string[] args)
{
Program pg = new Program();
try
{
pg.url = args[0]; //<投稿先のURL/xmlrpc.php/>
pg.username = args[1]; //ブログのユーザー名
pg.password = args[2]; //ブログのパスワード
string title = args[3]; //タイトル
string content = args[4]; //記事内容
pg.categoryID = int.Parse(args[5]);//カテゴリID
// 投稿
pg.BllogerNewPost(title, content);
}
catch (Exception ex)
{
Console.WriteLine("エラー:" + ex.Message);
return;
}
}
// ユーザー名
string username = "<ブログのユーザー名>";
// パスワード
string password = "<ブログのパスワード>";
// 投稿先のURL
string url = "<投稿先のURL>";
// 投稿カテゴリID
int categoryID = 0;
public void BllogerNewPost(string title, string content)
{
//プロキシクラスのインスタンスを作成
IBlogger proxy =
CookComputing.XmlRpc.XmlRpcProxyGen.Create<IBlogger>();
//URLを指定
proxy.Url = url;
int id = 0;
// content を生成
content = string.Format("<title>{0}</title>", title)
+ string.Format("<category>{0}</category>", categoryID)
+ content;
//blogger.getRecentPostsを呼び出す
id = proxy.newPost(
"", // WordPressの場合は無視
"1", // 念のため1にしておく
username,
password,
content,
false);
//結果を表示する
Console.WriteLine("id: " + id);
}
}
public interface IBlogger : IXmlRpcProxy
{
/// <summary>
/// 新規投稿
/// </summary>
/// <param name="appkey">無視</param>
/// <param name="blogid">無視</param>
/// <param name="username">ユーザー名</param>
/// <param name="password">パスワード</param>
/// <param name="content">本文</param>
/// <param name="publish">公開するかどうか</param>
/// <returns>エントリのIDを返す</returns>
[XmlRpcMethod("blogger.newPost")]
int newPost(
string appkey,
string blogid,
string username,
string password,
string content,
bool publish);
}
}
0 件のコメント:
コメントを投稿