wordpress-xmlrpc を使って WordPressに記事をPythonスクリプトで投稿する

記事をターミナルから投稿できたら便利と思い、いろいろ試行錯誤ところ、wordpress-xmlrpcを使ったら実現できましたのでそのメモを残しておきます。

インストール

まずはwordpress_xmlrpc

pip install python-wordpress-xmlrpc
でインストールします。

使い方

wordpress_xmlrpcの主な使い方を下にまとめました。

# 認証する
>>> from wordpress_xmlrpc import Client, WordPressPost
>>> from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
>>> from wordpress_xmlrpc.methods.users import GetUserInfo
>>> wp = Client('http://mysite.wordpress.com/xmlrpc.php', 'username', 'password')

# 投稿する
>> post = WordPressPost()
# タイトル
>>> post.title = 'My new title'
>>> post.content = 'This is the body of my new post.'
# タグ
>>> post.terms_names = {
>>>   'post_tag': ['test', 'firstpost'],
>>>   'category': ['Introductions', 'Tests']
>>> }

# 投稿URL
>>> post.slug = 'your_url'

# 投稿日時
>>> post.date = datetime(2014,10,30)

# 投稿する。
>>> wp.call(NewPost(post))



AndroidでViewを文字列から動的に取得する

Androidアプリを開発するときにViewを動的に取得する方法がわかったのでメモ。

XMLファイルが以下のようになっていて,webView1,webView2,webView3のViewを文字列から動的に取得したい。

文字列からViewを取得するにはgetIdentifer()メソッドを使用する。

このメソッドは与えられたリソースの名前からリソースのIDを返すメソッドで、このリソースのIDをfindViewByIdの引数に渡すとViewを動的に取得することができた。

コード例


Resources res = getResources();

for (int i = 1; i <= 3; i++){

resViewName = "webView" + i;
viewId = res.getIdentifier(resViewName, "id", getPackageName());

Log.d("log", String.valueOf(viewId));

WebView webView = (WebView)findViewById(viewId);

}

VimでDjangoを使ったプロジェクトを扱うならtCommentがいい感じ

今までVimでコメントアウトをToggleしてくれるプラグインを色々使ってみたけど、どれもDjangoプロジェクトのtemplate内のHTMLを

{# #}

でコメントアウトしてくれるプラグインはなかった。 でもこのtCommentを使うとDjango内のtemplateを正しくコメントアウトしてくれてとても感動した。

ちなみに下のコードで Ctrl+C でToggleするようにして使っています。

noremap :call :TComment

UIViewのレイアウト周りの処理はviewDidLayoutSubViewsの内部でやった方がいい

viewDidLayoutSubviews

メソッドが呼ばれるタイミングはAutoLayoutによってUIViewのフレームが調整・変更された後に呼ばれるのでレイアウト周りの処理はこのメソッドで行うといいらしい。 以下のviewDidLayoutSubviewsというメソッドを呼ばないといけない。
override func viewDidLayoutSubviews() {
    ...
}

レイアウト周りの処理を

viewDidLoad

で行なっていたのでタイミング的に正確なframeが取得できなくてはまってたけど、これで無事解決した!

SwiftでUITableViewを扱う(コード例あり)

SwiftでUITableViewを使ったコード例を下に載せておく。 tableViewはStoryboard上で作成したものとする。 CustomCellクラスはXCodeのメニューから
File → New File →  Cocoa Touch
を選択して、UITableViewCellをサブクラスに選択してAlso Create xib FileにチェックをしてClassの入力欄にCustomCellと入力して作成する。 次にCustomCell.xibを選択してidentifierにCell,CustomClassに CustomCellと入力する。 あとはこのxibファイルをregisterNib(…)で登録すればViewController上からアクセスすることが出来る。

viewController.swift

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet var tableView: UITableView!

    let fruitsList:[String] = ["Apple","Orange","Mango"]

    override func viewDidLoad() {
        super.viewDidLoad()


        self.tableView.delegate = self
        self.tableView.dataSource = self

        var nib:UINib = UINib(nibName: "CustomCell", bundle: nil)

        self.tableView.registerNib(nib, forCellReuseIdentifier: "Cell")
    }


    func  numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1;
    }

     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 80
    }

    func  tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return fruitsList.count ;
    }

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell

        cell.textLabel?.text = fruitsList[indexPath.row]
        return cell


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
実行結果は以下のようになる。

share01

コードの方はこちらのGithubリンクからダウンロードできます。