ハイパーマッスルエンジニアになりたいスマートフォン用の表示で見るハイパーマッスルエンジニアになりたい目指せドM。はてなAPIをcurlでサクッと実行する2019-02-03はてなAPIをcurlでサクッと実行するShellTwitterGooglePocketとりあえずはてなAPIをサクッとshellで実行したい人に向けて。https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entryはてなAPIはOAuth認証、WSSE認証、Basic認証のいずれかを行う必要があるので、curlで一番楽なBasic認証を使用する。ユーザーID:ユーザーPASSでいけますね。AtomPub」から取得できる。実際に記事を取得するときは以下のような感じ。https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entryこれで最新10件の記事を取得できる。ドキュメントには最新7件と書いてあるが、現在は10件取得できるようだ。スクリプトにしておくと楽。${ENDPOINT_ROOT}${ENDPOINT_ENTRY}特定の記事を取得する自分の書いた特定の記事を取得したい場合、/entry/エントリーIDで取得する。このエントリーIDの取得が少々面倒くさく、/entryで叩いたときのレスポンスからしか取得できない。href="https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry/10257846132688559263"/>の10257846132688559263の部分。これがエントリーID。curlで叩くとしたらこう。${ENDPOINT_ROOT}${ENDPOINT_ENTRY}/10257846132688559263また、/entryでは最新10件しか取得できないので10件目以降を取得するには/entry?page={ページID}で取得する必要がある。このページIDも/entryを叩いたときのレスポンスからしか取得できない。${ENDPOINT_ROOT}${ENDPOINT_ENTRY}?page=1536762675少しまとめると特定の記事を取得したい場合、その記事のエントリーIDが必要になるエントリーIDは/entryのレスポンスからしか取得できない1ページ目以降の記事を取得したい場合、ページIDを指定する必要があるページIDは/entryのレスポンスからしか取得できないちょっと面倒くさく感じるけど/entryのレスポンスに欲しい情報が全部詰まってるから楽っちゃ楽かな。他のAPI叩く必要がない。全ての記事のエントリーIDを取得するもうここからは単純にシェル芸になる。hatena.shhttps://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/9801XXXXX55524080https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/9801XXXXX39215842https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/9801XXXXX39148152https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/1025XXXXX32700158645https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/1025XXXXX32690969669https://blog.hatena.ne.jp/hatena_id/blog_id/atom/entry/1025XXXXX32688559263...(省略)簡単ですね。grepのところはもう少しスマートになりそうだけどとりあえずこれで良しとしよう。エントリーIDというか各記事へのエンドポイントを取得ですね。-oPで抽出すればいいんじゃないかな。画像も記事内容も全てローカルにバックアップするもはや気軽でもなんでもないが、そもそも私がしたかったのは全記事のバックアップ。シェルを叩いたら一撃で全ての記事の内容、画像をローカルにダウンロードしてくる、というのを実現したかった。いうことでここからはもう完全にオナニーだがせっかく作ったのでお披露目しておこう。github.com本スクリプトを実行すると、日付・記事タイトル・記事で使用されている画像が出力される。contentタグの中身だけ取得。done}mainこのシェルを実行すると記事投稿日毎にディレクトリが作成され、記事ファイルとその記事で使用されている画像ファイルが作成される。私はMarkdownで記事を書いているのでmd形式の記事ファイル。はてぶに上げた形式のままになるよう整形しているので仮に記事が消えてもそのままこのmdファイルをアップロードすれば復元できる。123...と出てしまう問題の解決法.md[f:id:rasukarusan:20190126020540p:plain]サーバーにlaravelで作ったアプリを設置するときに若干詰まった。結局シンプルな変更漏れっていうオチなんですけどね。解決1DOCUMENT_ROOTを設定するときにhttpd.confの設定で変更漏れがあった。←こっちも変更する...\```...(省略)まとめAPIを試す時は大体shellのcurlでサクッとやってしまうのだが他の人はどうなんだろうか。今回はてぶAPIを試す際色んな記事を見たがrubyやpythonでやってる人が多かった。私みたいに「APIを試す時はcurlで!」という方の助けになればと思い書いてみたが、最後は気軽じゃないスクリプト載っけてしまった。絶対他の人読めない気がする。(人の書いたShellって読みづらいよね)まあでもやりたいことは出来たので満足。instagramのページURLを与えると...2019-04-27Chromeの履歴をShellScriptで弄り倒すShellScriptでドヤりたいGWアドベントカレンダー1日目いくで。はてなブログProネットワーク系院卒。現在は小田原のエンジニア。Swiftでアプリ作ったりShellスクリプトで自動化したりするのが好き。業務ではサーバーサイドいじってる。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。