Uploadしよう!〜暫定対策編〜
大枠での方向性は決めたものの、詳細を詰めてゆく必要があります。
いろいろ試していると見えてくるものもあるもので。解釈の間違いも諸々(笑)
ホトトギス
家康的に、良いEditorが出現するまで待つ、というのも、信長的に、面倒くさいからBloggerやめちゃう、というのも、答えにはならず、結果的に、秀吉的に、じゃあ、作りますか、ということに。
先生、ありがとう
先生と言えば、Google。BloggerもGoogle。Google Developers Consoleには、GoogleのService向けのAPIが準備されていて、当然、BloggerにもAPIが準備されています。Blogger API v3。
いくつかの言語が対象となっているが、当然のように、Pythonを選択。
Sample Code
Python用のSampleがあり、Client IDを取得して、実行。ContentsのStatusがLIVE(公開)のものを取得して、表示するScriptになっているようであった。JSON形式で取得している。ふむふむ。
insert()関数のisDraft引数の話
現状の必須と考えている機能を実装するにあたって、2つほど悩んだ部分があった。その内の1つが、insert()関数のisDraftという引数。これは、StackEditでPublishedやStatusとなっていたもので、Contentsの状態を決める引数です。
Developers Consoleにある実行検証用のMenuには、isDraftはtrueとfalseの2値が扱えるとなっていて、つまるところ、前者がDRAFT(下書き)、後者がLIVE(公開)だろうと推測できる。
設定値 | 結果 |
---|---|
true | LIVE(公開) |
false | DRAFT(下書き) |
ところが、実情は異なっていた。
設定値 | 結果 |
---|---|
- | LIVE(公開) |
None | LIVE(公開) |
Integer | DRAFT(下書き) |
String | DRAFT(下書き) |
試した結果だと、上表の結果となっており、Noneかそれ以外で、所望の結果を得ることが可能であった。(正しいのだろうか?)
Boolean値には間違いないが、それはPythonではなく、Url上のものだった。故に、小文字。
run_flow()関数のargumentの話
Serverとの認証を行うのに、必要なDataを送信する必要があります。これを司っているのが、OAuth2clientのrun_flow()関数になります。
credentials = tools.run_flow(flow, storage)
となっていて、flowやstorageの処置を施した後、実行させます。すると、結果は、「そんな引数はないぜ!」と落とされます。
かなり作り込みをしていった先での出来事の結果なのですが、作成しているScript実行時には、HTMLやTitleなど入力とし、parserにて適宜処理をさせています。常套と言えば常套なことをやっているのですが、run_flow()関数が要求する引数ではない、つまり、実行時の引数が邪魔をしているということです。
flags = ['--auth_host_name','localhost']
credentials = tools.run_flow(flow, storage, flags)
run_flow()関数実行時に、引数を強制的に差し替えて実行をすることで、対処が可能となりました。(正しいのだろうか?)
Markdown to HTML
入力に必要なContentsのData FormatはHTMLであるため、Markdownを変換する必要があります。AtomでもHTML出力は可能ですが、pandocを使用することにします。
$ pandoc -f markdown -t html input.md -o output.html
Upload HTML
$ upgger.py -i output.html -t こんにちわ -l Message -d
上記は、output.htmlというFileを、Titleを「こんにちわ」、ラベルを「Message」として、DRAFT(上書き)モードでアップロードを行うコマンド送りです。
画像の扱い
今、諸々調べたり、試したりしてて、いずれまた(笑)個人的には、Text中心なので、そんなに困ってないっていう話。。。
コード
ここにおきました。
コメント
コメントを投稿