記事のバックアップ
ウェブインターフェイスで不満はなかったので、GitHub 連携をせず、ウェブで記事を書いてたけど、履歴管理できないのが不便。すでに公開した記事の markdown をバックアップする方法はないか?
手動でやるならば、
という記事に対して
という URL で markdown ソースを確認できる。が、これはログイン済みのブラウザ経由でしか開けない。ログアウトした状態だとエラーらしきテキストが得られるだけだ。
単品記事ならばこれでよいが、Book がある場合、これは厳しい。
RSS フィードは https://zenn.dev/zetamatta/feed で得られるが、こちらには markdown テキスト、もしくは markdown へのリンクなどは出ていないようだ。
Zennの記事をexportする
記事:この記事では JavaScript を開発者コンソールから実行するという方法をとっている。ただし、HTML として得られた情報を逆変換するということをやっているようで、オリジナル markdown が得られるわけではないようだ。
ただし、この記事に、運営氏から
現在、zenn.devから連携したGitHubリポジトリへコミットする機能の実装を検討しています。
というコメントが出ているので、将来的に公式からの対応も期待はできそうだ。また
ちなみにユーザーご自身の記事であれば、以下のURLを打ち込むことでマークダウンを取得できます。
https://zenn.dev/api/articles/記事のslug/markdown
とのコメントも出ている。/markdown の方だと、/blob.md と違って JSON で出ているので、加工がなくてよい分、拾い上げるのが楽そうである。が、こちらもやはりログアウト状態だと、アクセスできない(扉ページへリダイレクトされる)
GitHub - ganezasan/zenn-to-pdf: export articles on zenn.dev to pdf by using puppeteer
zenn の記事を PDF 化するツールのようだ。
- node.js を使っている
- Google API を使ってログインをしている?
サンプルを動かして理解するchromedp (GoでChromeを操作する)
headlessモード(UIのウィンドウなし)のChromeを Go 言語から操作して、ウェブのスクレイピングをやろうという試み。新しい技を習得するという意味でトライする価値はあるかもしれない。究極奥義かも
chromedp の記事をいろいろ見たが、HTMLページをスクレイピングするのが前提で、HTMLのどの場所の DOM 要素に対して操作を行うというような内容を説明している場合がほとんどだ。
なので、minetype が text/html でない生の JSON , markdown をゲットする場合、どの関数・メソッドを呼び出すべきかが分からない。まぁ、普通、そういう場合は http で直接問い合わせるわなー。だが、それには Googleの OAuth の認証を通らないといけないので、そうもいかんのだ。
OAuth は twitter で一度やったことあるけど、zetamatta/tmt: tmt - Twitter Maintenance Tool)の時は twitter から OAuth のトークンを得て、twitter の API にアクセスするライブラリを使うだけというものだったからなぁ。Google から OAuth のトークンを得て、Zenn の普通の URL にアクセスするとなると難度がぶわっとあがる、ぶわっと。心折れそう
「chromedp save page」で検索したところ、出てきたページ
これが要求に最も近いか?
のソース中にある、
out, err := exec.Command("sh", "-c", "/root/tools/chromium-latest-linux/latest/chrome --headless --no-sandbox --dump-dom http://url_here").Output()
の chrome を C:\Program Files\Google\Chrome\Application\chrome.exe
に変えてもダメ。
どうも、使用中の chrome は、--dump-dom オプションをサポートしていないらしい
こちらのサンプルで行けそう。ただし、記事のソースの markdown への直接の訪問はダメだった。
だが、https://zenn.dev/ 、すなわち、トップだと、全部コードがとれっぽい。
今後のアプローチとしては
- サンドボックスなしモードでゆく
- まじめにログインの経路をとおる
のいずれかでゆけばよい希ガス。
- まじめにログインの経路をとおる
→ zenn.dev のログイン状態が維持できてないのに、なぜ Google のログイン状態は維持されると思った?
- サンドボックスなしモードでゆく
→ 「そういうの、実はもしかしてないのでは?」という考えが脳裏をよぎる。そこへ
GW明けにエクスポート機能を公開します…!ダウンロードしたファイルをそのまま連携したGitHubリポジトリに配置することでスムーズにGitHub連携がはじめられます。
https://zenn.dev/zetamatta/scraps/de1f4ab13a37ea#comment-bd15eec82597d1
とのコメント。よし、それ、待とう!
あ、もう本件では使わないけど
というものもあるようだ。こちらは chromedp みたいに Chrome をコントロールするものではなく、仮想的なブラウザをでっちあげるもののようだ。すげー!