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中心なので、そんなに困ってないっていう話。。。

コード

ここにおきました。

コメント

このブログの人気の投稿

Tabulatorで行こう! 〜ダイバー編〜

Tabulatorで行こう! 〜違うじゃん編〜

Fedoraで行こう! 〜音声合成pyttsx3編〜