日々の思いつきを忘れないようにのメモ用です。他の操作は?最後にこんにちは。はてなブログはWebAPIを公開しています。先日の記事で、HTTPS化に伴い「自分の記事のリンク」のリンク切れを防止する方法を紹介しました。www.milkmemo.comリンク切れ対策はこれではまだ不十分で、誰かの「はてなブログ」の記事を言及した場合は、軒並みリンク切れを起こすと考えられます。これは「自分のドメイン」で検索をかけるという方法では見つからないし、そもそも独自ドメインならば「はてなブログ」かどうかは判断つきません。言うことは、やはり実際に見てみてリンク切れを起こしているのを修正しなければなりません。問題点としてインポートをかけると、全てが「見たままモード」になります。これも私にとっては都合が悪い。́;ω;`)要約すると、問題点は以下の2点になります。HTTPのリンクを貼っている記事を検出したいデータインポートした時に、「見たままモード」を回避したいとなります。はてなWebAPI(はてなブログAtomPub)ちょっと頭を整理するために書いていくので、内容がちぐはぐになるかも知れません。)データエクスポート自分のドメインのリンクをHTTPSに置換データインポートこれが基本的な流れですが、しかしこのままでは「HTTP」から「HTTPS」に対応した他人の記事があった場合、リンク切れを起こします。一つの手としては、2番の時点で検索をかけて探し出すという手段です。href="https://・・・"></a>また、恐らくAMPに対応するためのタグと思われますが、以下の部分も修正が必要です。src="https://・・・"></iframe>まぁ・・・結局のところ、「HTTP」の状態になっているものは、全て洗ったほうがいいのですが、なにせエクスポートした時には全ての記事が一つのファイルの中に出力されます。該当する・・・該当しない・・・該当する・・・該当しない・・・と選別するのは面倒。頑張って直したところで、最後はまとめてインポートするので「見たままモード」になります。嫌だ・・・嫌すぐる!と言うわけで、前置きが長くなったんですけど、どうやら「はてな」が公開しているWebAPIを経由すれば、個別に編集が可能っぽいです。Interface)とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。WikipediaAPIとは簡単に言うと、他の人が作ったプログラムを利用できる仕組みのことです。昔から(今もですが)そのプログラムをコンピュータの内部に置いて、そして参照する形が多かったのです。WebAPIと言うのは、どこか遠くにあるWebサーバ(インターネットでつながっているコンピュータ)に対して、「こういうことしたいので処理を頼んだ!結果をください!」と頼む形なんです。́;ω;`)「はてなブログ」が公開してるWebAPIは以下のものがあります。Center出来ることは以下のようなものです。サービス文書の取得ブログエントリ(記事)の一覧取得ブログエントリ(記事)の投稿ブログエントリ(記事)の取得ブログエントリ(記事)の編集ブログエントリ(記事)の削除カテゴリ文書の取得この中で、魅力的なのは「ブログエントリ(記事)の編集」です。記事を投稿した場合は以下のことが適用されるようです。することで、ブログエントリを投稿できます。このブログエントリは、ブログに登録された記法で書かれたものであると解釈されます。Centerまた、これは編集のときにも同様に適用されるとのこと。</app:control></entry>こういった形の文章を、「POST」では投稿になりますが、「PUT」と言う命令で処理をお願いすると編集扱いになり、「はてな記法」で上書きされるようです。<content></content>の間に挟まれた部分が**となっていますね。これは「はてな記法」で言う、「大見出し」になります。「Markdown記法」では##に該当します。(厳密に言うと、「はてな記法」では<h3>、「Markdown記法」では<h2>に該当します。)どうやら、記法はWebサーバ側が判断するみたいですね。ここで一つ仮説が立てられます。エクスポートしたデータを記事ごとに分割する記事の中から自動で「HTTP」を検出し記事の選別を行う必要なら修正を行う(ここは手動)見出しを必要な記法で置き換え、編集が必要な記事のみを「はてなWebAPI」経由で編集するこれなら、ブログに対して必要最低限の操作で記事の修正をしていくことが出来ます。プログラムの組み方次第では、過去の記事を一括で「記法」の統一も行うことが出来る。実は、私のは初期は「見たままモード」で、途中から「はてな記法」、最終的には「Markdown記法」と書き方を変更しています。仮にWebAPIが上書きで受け付けてくれるなら、過去記事の「記法」の統一も夢ではない?!(既存の記事と記法が異なるとなって、受け付けてくれない可能性はある・・・)とりあえずGETで操作できるAPIを試してみるプログラムを書いてみるのでも良いのですが、まずは実際にAPIが利用できるのか確認してみたいと考えました。しても編集の際には「どの記事なのか」を特定するための、特殊なキーが必要なので、それも取得しなければなりません。簡単な、GETを利用したAPIを試してみることにしました。これを選んだ理由は、WebブラウザのURLを入力してEenterキーを押すことは「GET」を送信していることと同じだからです。実は、URLを入力するとWebブラウザは「GET」と言う命令と共に、このURLを送ります。意味としては、「このURLに該当するファイルをGETしたいです!」と言うことです。言われると、Webサーバはそれに該当するデータを、GETを求めてきたコンピュータに返信します。「GET」で試せるWebAPIは取得系ですので、ブログエントリ(記事)の一覧取得ブログエントリ(記事)の取得などが試せます。ブログエントリ(記事)の一覧取得これは記事の内容をごっそり取得できます。制約があって、直近の7件までです。https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry?page=1377575606が挙げられています。はてなID:はてなブログで使用しているIDブログID:ブログドメイン(独自ドメインではなく、はてなから割り当てられているドメインです。「設定」-「基本設定」-「ブログURL」にあります。)つまり、Webブラウザに「https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry」を入力します。すると、7件分の記事がXMLと言うデータ形式で表示されるはずです。この時にログインを求められます。ユーザー名:はてなIDパスワード:APIキーになります。APIキーとは、「設定」-「詳細設定」-「AtomPub」-「APIキー」に書かれているものです。これは他人には分からないようにして下さい。ないと、他人が記事の情報取得や編集などが出来るようになってしまいます。入力が完了すれば記事の一覧を取得出来ます。見にくいので、VSCodeに.xmlとして表示し直しましょうか。注目してほしいのは以下の部分です。/>最初の7件は「entry」で終われば良いのですが、次の7件を取得するには「entry?page=数列」という具合に、どのページを取得するのか?と言うパラメータが必要です。試したところ、この数列の規則性は分かりません(汗)番号がふられていると考えたほうが良いでしょう。XMLを順番に7件ずつ取得していかないと、次の「entry?page=数列」は分かりません。rel="next"・・・/>が表示されなくなれば、最後のページまで到達したことになります。やって記事を取得することが出来るのです。https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry/{entry_id}となっています。ここで問題になるのは、「entry_id」です。実は、記事一覧を取得したら分かるのです(汗)私のある記事を抽出してみます。/&gt;その中でも、この部分に注目です。href="https://blog.hatena.ne.jp/maxminkun/maxminkun.hatenablog.jp/atom/entry/8599973812303233549"/>「entry」の後ろに番号が付いていますよね?この番号が記事固有にふられた「entry_id」になりますし、そもそも「https://・・・」を全てブラウザのURLに入力してしまえば、その記事だけを取り出せます。他の操作は?ブラウザで操作出来るのは、GET操作だけです。編集等はPUTと言った命令を送らなければならないのですが、これはプログラムから色々値を設定して行わなければなりません。現段階では、やっとGET操作によって何が出来るかが分かったところです(;・∀・)今の考えでは、データエクスポートとPUTによるWebAPIを組み合わせれば、「Markdown記法」や「はてな記法」として上手く編集が出来るのでは?と考えています。ここはプログラムで通信部分を上手く組まなければなりません。時間を見つけて、この部分の実装は考えてみます。最後にこの、GET操作はブラウザから出来るので、皆さんも試してみてください。やってデータを受信出来る仕組みは面白いと思います。私も色々調べて実践したことで、やっと「はてなブログ」のデータ部分の理解が出来ました。専門的な知識でしたが、備忘録として記録します。それでは今回はこの辺で。21:04「うつ病」は誰でもなりうる病気です。オシャレでとっても軽い腕時計。)は、日々の思いつきを忘れないように、メモ用の雑記ブログです。VEIN」って面白いの?「Bloodborne」と比較してみる。policyプライバシーポリシーについては、こちらをご確認下さい。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。