モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

続・fc2にpythonのxmlrpclibでアクセス:editPost呼び出し編

これまたググっても全然出てこない…

fc2に限定せず、日本語だけならともかく、英語でも。 オイラの検索能力もついに老化か?と思いつつ。

まず本筋から離れて、ちょっと笑えたのですが、editPostが上手く行かないのでより基本的なnewPostを呼び出す実験をするつもりだった、次のコード。一応、エラー無く通るんです。

import xmlrpclib
BLOG_ID=''
USER_ID='自分のfc2登録メアド'
PSWD='自分のパスワード'

server_url = 'http://blog.fc2.com/xmlrpc.php';
server = xmlrpclib.ServerProxy(server_url);

contents={}
contents['title']='TEST2'
contents['description']='第二テスツ〜from xml-rpc'

server.megaWeblog.newPost(BLOG_ID,USER_ID,PSWD,contents,1)

一見、何もおかしくないように見えるかも知れませんがよぉーく見てください。

metaWeblogであるべきところがmegaWeblogになってますねw

これ、一応呼び出しには成功してしまうという…ただ、fc2側では本文なし・タイトルなしの空エントリが出来てしまうのですけど。

さて本題。editPostようやく呼び出せました。多分、あまりにも普通すぎて誰も苦しんでいないということかと(汗)

苦しんだ原因はこれまたAPIドキュメントを斜め読みしていたからであり、第一引数がblog idではなく、post id、すなわちfc2内での記事のインデックスだったという…それに全く気づかず何度も何度もトライ…(恥)

上記のコードを改変して

    content={}
    content['title']='TEST'
    content['description']='Testなのだよ(編集後1)'
    dt=datetime.datetime(2014,10,20,10,07,0)
    content['dateCreated']=xmlrpclib.DateTime(dt)
    ans=server.metaWeblog.editPost('133',USER_ID,PSWD,content,0)
    print ans
    if ans=='notexist':
        print('ねーよバーカバーカ')

みたいにしてみたら通りました。

ここで辞書にdescriptionを入れずに呼び出したら、記事を再送信せずに表示状態だけ変えられないかな?と思いコメントアウトして試してみましたがそんな甘い話はなく、単に本文がクリアされ本文なしになりました。

しかし、オイラのやりたいことは「バックアップファイルを用いてはてなブログに引っ越したエントリを全自動で下書き状態にする」なのですが、fc2のバックアップファイルには記事のインデクス番号など付いていません。

これは困った。

やはり、xml-rpcで記事の一覧を取得して、タイトルと日付で確認取って番号付けていくぐらいしかないですかね。