質問: 以前に青空文庫からのデータの取得の方法について質問をさせていただき回答を頂いたのですが(青空文庫(https://www.aozora.gr.jp)における全作品のテキストデータと初版発行年の取得)、私自身gitの扱いに不慣れなため上のリンクで述べられている"GitHubからクローンしたローカルリポジトリー内のzipファイルのURLをスクリプト内で、URL→ローカルファイルパス変換(""をローカルリポジトリーへのパスに置換)"する方法がわかりません。 もしかすると次の質問はSOにおいて適していないかもしれませんが、上の作業を実現するコードをどなたかに教えていただけると助かります。 または、上の課題は私が本を読めばすぐに解決する可能性があるので、なるべく以前した質問(プログラミングにおいてオススメの資料・本など) の反省を踏まえたつもりで書くのですが、上のコードを実現する簡潔な記述があるgitの参考書を教えていただけると助かります。
回答: ### 青空文庫の全データをZIPでダウンロードする方法 上記 GitHub リポジトリの中身を git 無しに GitHub から直接ダウンロードできます。下のスクリーンショットにある "Download ZIP" を参考にしてください。 !GitHub サイトのスクリーンショットです。緑色のボタン "Clone or download" を押すとポップアップが出てきて、そこに "Download ZIP" のリンクがあります。 このリポジトリの、特に `cards` フォルダの中に全ての作品が格納されています。ただし全て HTML など表示用ファイルなので、機械的な処理がやや難しいです。以前の回答で紹介されていた CSV ファイルを使うことで処理を簡素化できます。 ### URL をファイルパスに変換してデータベースにする方法 list_person_all_extended_utf8.zip に入っているのは作品を網羅した CSV ファイルです。この CSV ファイルを使うことで、たとえば作品名から `cards` の番号に紐づけることができます。 ただし CSV に格納されているのはウェブ上の青空文庫サイトへの URL なので、このままだと手元にある青空文庫のコピー用には使えません。そこで、CSV から読み取った `https://www.aozora.gr.jp/cards/ほにゃらら` というデータの先頭の部分を自分用に処理するなどする必要があります。 ここはその後どのように処理するかによって変わります。たとえばの例をひとつ挙げてみます。作品 ID から作品名と手元のテキストデータへのリンクを新しい CSV として書き出してみましょう。 1. list_person_all_extended_utf8.csv を(たとえば辞書型の値や連想配列として)一行ずつ読み込む。特に CSV に「作品ID」「作品名」「テキストファイルURL」「テキストファイル符号化方式」というフィールドがあるので、ここを読み込む。主要なプログラミング言語には CSV を読み込むための有名なライブラリが知られていることが多いので、それを利用する。 2. 「テキストファイルURL」を適切に変換する。先頭が全て同じだと仮定して固定文字数削ったり、正規表現で処理したりするなど。 3. テキストファイルが圧縮されていることがあるので、必要であれば伸張する。 4. テキストファイルのエンコーディングがファイルによってまちまちなので、必要であれば固定のエンコーディングに直す。Unix 系 OS であれば `nkf` コマンドを使うなど。 5. 上の処理をしているならテキストファイルのパスが変わっているので適切に変更する。 6. 新しい CSV ファイルに「作品ID」「作品名」「テキストファイルへのパス」を出力する。