unsolublesugar / zenn-content

1 stars 0 forks source link

Qiitaの記事バックアップしてZennにインポートする #4

Closed unsolublesugar closed 3 years ago

unsolublesugar commented 3 years ago

いくつかQittaのバックアップツール作られている方が居るようなので色々試してみる。

unsolublesugar commented 3 years ago

qiita_backupper

インストール

% git clone https://github.com/i-tanaka730/qiita_backupper

実行

% cd qiita_backupper
% ./backup.sh unsoluble_sugar md

mdファイルダウンロード

[OK!] 【入門】Electron完全に理解した
[OK!] GitHubでOrganizationから除外したユーザーが作成したissueを検索する方法
[OK!] 完全に理解した人達の「Web技術」Talk #2 勉強会レポート
[OK!] 完全に理解した人達の「Web技術」Talk #4 勉強会レポート
[OK!] HTTPステータスコード 完全に理解した
[OK!] Qiitaの記事にSpeaker DeckやSlideShareのサムネ付きリンクを貼る方法
[OK!] SlackとGitHubを連携してissueコメントやプルリク通知をチャンネルに流す方法(2020年版)
[OK!] curlでヘッダ情報やHTTPステータスコードのみを出力する方法
[OK!] claspの導入でGoogle Apps Scriptのローカル開発&git管理を実現する
[OK!] FlutterのWebViewからBasic認証ページにアクセスする
[OK!] iOS SimulatorでFlutter WebViewのlocalhost参照でページが真っ白になる件
[OK!] Android EmulatorでnetERR_CLEARTEXT_NOT_PERMITTEDが出た時の対処法
[OK!] Android EmulatorでnetERR_CONNECTION_REFUSEDが出た時の対処法
[OK!] Nodejs + Express + passportjsでローカルサーバーにBasic認証ページを立てる
[OK!] Twitter APIで使うBearer Tokenの取得方法
[OK!] 完全に理解した人達の「Web技術」Talk #1 勉強会レポート
[OK!] jqコマンドでcurlのJSONレスポンスを見やすくする
[OK!] UnityでAndroidビルドエラーUnityEditorBuildPlayerWindow+BuildMethodExceptionが出た時のライブラリ競合解決が辛過ぎて泣いた
[OK!] VTuberのホームページをGitHubのプルリクだけで更新していったらどうなるのか?企画に参戦してみた
[OK!] 挑戦者求む!GCPでWordPress立ち上げRTA
[OK!] VSCodeのファイルエクスプローラーから不要ファイルを非表示にする方法
[OK!] Flutter Meetup Tokyo #13 参加レポート
[OK!] Android Emulatorへのコピペがダルい問題
[OK!] FlutterでFirebase Authenticationを使ったGoogleアカウントログインを実装してみた
[OK!] Flutterのパッケージインストールで詰んだ初心者
[OK!] flutter packages getでCould not find a file named pubspecyaml in git@githubcom エラーが出たときの対処法
[OK!] 実機iPhoneのSafariでWebインスペクタを使ってデバッグする方法
[OK!] 実機Android端末のChromeでデベロッパーツールを使ってデバッグする方法
[OK!] FlutterでローカルのJSONファイルを読み込む
[OK!] flutter upgradeで最新バージョンへ更新されない時に確認すること
[OK!] Firebase Cloud MessagingのFCMトークン更新タイミングについて
[OK!] Dartのbuild_runnerエラー「pub finished with exit code 1」でハマった件
[OK!] FlutterからJavaObjective-Cのネイティブコードを呼んでみた
[OK!] FlutterからKotlinSwiftのネイティブコードを呼んでみた
[OK!] FlutterでHello worldを動かすまでの環境構築手順(iOS, Android)
[OK!] Googleスライドで取り消し線を使う方法
[OK!] Visual Studio Codeで「The NET CLI tools cannot be located」エラーが出続ける件の対処法
[OK!] Visual Studio Codeのミニマップを非表示にする方法
[OK!] Visual Studio CodeのReference informationを非表示にする方法
[OK!] MacでHomebrew使ってPython 37系をインストールしてみた
[OK!] curlで日本語を含むJSONレスポンスを見やすく整形する方法
[OK!] 有効期限が無期限のFacebookページアクセストークンの取得方法
[OK!] Facebook Messenger botのmmeリンクの確認方法
[OK!] FacebookのIDマッチングAPIでPage scoped IDを取得する方法
[OK!] Facebookアプリのappsecret_proofの生成手順
[OK!] Facebookアプリのapp_access_tokenの生成手順 
[OK!] Facebookアプリのapp secretの確認方法
[OK!] Facebook Messenger PlatformのSend APIで発生したエラーと原因メモ
[OK!] GASのProperties Serviceを使ってスクリプトのプロパティを読み書きをする
[OK!] JSONstringifyの出力結果を整形して可読性を向上させる
[OK!] SlackのチャンネルIDを確認する方法
[OK!] Google Apps Scriptデプロイ時に発生したclaspの「Push failed Errors」
[OK!] Macのターミナルでファイルの文字コードを確認する
[OK!] Sublime Textのステータスバーにファイルの文字コードを表示する
[OK!] Sublime Text 3のインデント設定を変更する
[OK!] Facebook APIのアクセストークンのタイプや有効期限を確認する方法
[OK!] Sequel Proを使ったMySQLのテーブルデータ追加方法
[OK!] Sublime Text 3でSlimのシンタックスハイライト
[OK!] bundle installでmysql2のgemがインストールできなかった時に試したこと
[OK!] 新しいMacでGitHubのSSH接続をするまでの環境構築手順
[OK!] bundle installで「Downloading xxx revealed dependencies not in the API or the lockfile」というエラーが出た時の対処法
[OK!] MacでRuby on Rails環境構築
[OK!] Macに複数バージョンのUnityをインストールする
[OK!] Unityで出力したXcodeプロジェクトがiOS11の実機デバッグで起動直後にクラッシュする件の対応
[OK!] Xcodeで特定プロジェクトのコード補完が効かなくなった時の対処法
[OK!] iPadでUIActivityViewControllerを呼ぶとクラッシュする現象の対応
[OK!] UnityのiOSビルドで出力されるXcodeプロジェクトの設定自動化。ファイル毎のARC無効設定を追加する
[OK!] UnityのiOSビルドで出力されるXcodeプロジェクトのEnable Bitcodeを自動でNoにする
[OK!] MacでVPNの「接続解除中」が終わらない時の対処法
[OK!] Homebrewのアップデート時に出た5つのWarningと解決方法
[OK!] MonoDevelopのソースコード折りたたみ機能を有効にする
[OK!] MonoDevelopで閉じ括弧を自動補完してくれるようにする設定
[OK!] Unityで「There are 2 audio listeners in the scene」というメッセージが表示された場合の対応
[OK!] Photon Unity Networking(PUN)のPhotonViewisMineがfalseしか返さない件
[OK!] Mac OS Xのアップデート後にEclipseが起動しなくなった時の対応
[OK!] GitHubのpushやプルリク通知をSlackに投げる
[OK!] よく使うgitコマンドのエイリアスを設定して開発効率をアップする
[OK!] GitHubのコメントでLINEスタンプライクにLGTM画像を貼り付けられるChrome拡張機能「LTTM」を使ってコミュニケーションを加速させる
[OK!] GitHubリポジトリのデフォルトブランチをdevelopに変更する
[OK!] Unity3dBuilder Pluginを使ってJenkinsでUnityのビルドを自動化。Androidのapkを作ってみた
[OK!] Jenkinsのユーザー作成と権限管理
[OK!] Jenkinsのビルド結果をSlackに通知させる
[OK!] Cocos2d-xで作ったAndroidアプリに内包されているOpenSSLのバージョンを確認する
[OK!] MacにHomebrewでインストールしたJenkinsのホームディレクトリの確認方法
[OK!] Unityのログファイル(EditorLog)を直接エディタで開く
[OK!] MonoDevelopのテーマとフォントを変更する
[OK!] MacにHomebrewを使ってJenkinsをインストールする方法
[OK!] MacにHomebrewをインストールする手順とWarningの解決方法
[OK!] ConoHaに作ったWordPressブログに独自ドメインでアクセスできるようにする方法
[OK!] Qiitaに1件も投稿していない時の画像アップロード容量の上限は月間2MBまで

やったぜ md30guyk8qt7nvyvthc78lxgqd7t

unsolublesugar commented 3 years ago

qiita_export_all

画像もDLしたかったので別のツールを試してみる。

% export QIITA_ACCESS_TOKEN=xxxxxxxxxx
% npx qiita_export_all
npx: 30個のパッケージを6.367秒でインストールしました。
info: Requesting items...
debug: request limit remain: 999/1000
info: 90 items found.

info: creating image save directory...
info: created.

info: Requesting comments/images...
debug: request limit remain: 991/1000
info: request limit remain: 991/1000
info: Request finidhed.

info: Replacing Image path...
info: Replace finished.

info: Writing items/comments...
write finished.

画像DL出来たけどファイル名の規則性が謎くてちょっと困る… 画像は記事単位でまとまっているわけでもないので、これをZennとかに持っていくとなるとしんどい。

記事フォルダにhtmlが吐かれるのは良い感じ。 自分はVSCodeでmdファイルプレビューするのであまり使わないけど。

.
├── img
│   ├── 0_7.png
│   ├── 1_7.png
┊   ┊
├── items
│   ├── [ネタ]私のTLのみんながpure HTMLが何かを理解してくれない件
│   │   ├── comments
│   │   │   ├── 2017-02-02T145121+0900
│   │   │   │   ├── index.html
│   │   │   │   ├── info.json
│   │   │   │   └── README.md
│   │   │   ├── 2017-02-02T153542+0900
│   │   │   │   ├── index.html
│   │   │   │   ├── info.json
│   │   │   │   └── README.md
│   │   │   ├── 2017-02-02T160946+0900
│   │   │   │   ├── index.html
│   │   │   │   ├── info.json
│   │   │   │   └── README.md
│   │   │   ├── 2017-02-02T173054+0900
│   │   │   │   ├── index.html
│   │   │   │   ├── info.json
│   │   │   │   └── README.md
│   │   │   └── 2017-02-02T181039+0900
│   │   │       ├── index.html
│   │   │       ├── info.json
│   │   │       └── README.md
│   │   ├── index.html
│   │   ├── info.json
│   │   └── README.md
┊   ┊
unsolublesugar commented 3 years ago

qiita-item-exporter.ps1

WindowsのPowerShell専用だけど理想的なスクリプトを作られている方が居た… Qiita記事URLでのフォルダ・ファイル名、画像も元ファイル名で超最高のやつだった。

PowerShellスクリプト実行の権限エラーで詰まった https://qiita.com/Targityen/items/3d2e0b5b0b7b04963750

> PowerShell -ExecutionPolicy Bypass .\qiita-item-exporter.ps1

これで実行するとitemsフォルダ配下に記事と画像バックアップが作成される。

- items
  +- readme.md                                   # 各記事へのリンク
  +- xxxxxxxxxxxxxxxxxxxx                        # 記事のID
     +- xxxxxxxxxxxxxxxxxxxx.md                  # ダウンロードした記事
     +- readme.md                                # 画像のURLを置換した記事
     +- ffffffff-ffff-ffff-ffff-ffffffffffff.png # 記事中の画像
     +- meta.json                                # 作成日時、更新日時、タイトル、タグを保存したJSON

このスクリプトで落としてきたQiitaのmdファイル、エンコードがUTF-16 LEになってた。 ZennのCLIツールで作成されるmdファイルはUTF-8なので変換が必要。

unsolublesugar commented 3 years ago

古い記事インポートしても微妙なので結局一部だけでやめた(^ω^)