Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cognitom/shinkan.today

「新刊トゥデイ」
https://github.com/cognitom/shinkan.today

openbd

Last synced: 3 months ago
JSON representation

「新刊トゥデイ」

Awesome Lists containing this project

README

        

![新刊トゥデイ](src/images/ogp-image.png)
> 日々新しい本を探す活字中毒な人のため、新刊情報を淡々と表示するサイト

## 情報ソース

現在対応している書籍データベースは次の通りです。

- [openBD](https://openbd.jp)

## 開発状況・バグ報告

[イシューリスト](https://github.com/cognitom/shinkan.today/issues)を見てください。バグを発見した場合も、こちらに報告するか、プルリクエストをどうぞ。

## 開発者向け情報

### ディレクトリ構成

- `lib/`: データ更新と、フロントエンドで使うライブラリ (単体テスト可能なもの)
- `src/`: フロントエンドのコードのソース
- `_layouts`: Jekyllのテンプレート
- `tag`: Riotのタグファイル (コンポーネント)
- `dist`: ここに生成したファイルは、`gh-pages`ブランチにデプロイされる
- `book`: 書籍の詳細ページのためのMarkdownファイル。
- `data`: 日付ごとの書籍データを格納したjsonファイルなど。

### デプロイの流れ

詳細は、npm scriptsと、[update.js](update.js)を参照。

1. ビルド
- `src`ディレクトリの中身を、`dist`に`rsync`(一部拡張子を除く)
- `rollup`で、`main.js`と`book.js`をそれぞれバンドル。[rollup.config.js](rollup.config.js)参照
- `postcss`で、`global.css`を処理
2. データ更新
- openBDから、ISBN全件(`/coverage/`)を取得
- `ignore.txt`に存在するISBNを除外
- openBDに書誌データの詳細を問い合わせ
- 2週間より前の発売日のものを、`ignore.txt`に追記
- それ以外のものは、Markdown(のフロントマッタ)に吐き出し
- 同時に、日付ごとに振り分けて、jsonファイルに
- さらに、前後2週間 + 2週間についてのインデックスファイルも生成 (各日2件までの書籍データの一部のみ)
3. デプロイ
- GitHub Pagesへデプロイ

### 構成のポイント

- 「シェア」できることが必須なので、OGPが使えるよう、書籍ごとに静的なページを用意した。ブランチを少しでも軽くしたいので、HTMLに展開するのではなく、Markdownのフロントマッタに入れている。(HTML化はGitHub側がやってくれる)
- 毎度全件(80万件)の書籍データをダウンロードすると時間がかかってしまうので、2週間以上前に発売された書籍のISBNについては`ignore.txt`ファイル内にキャッシュ。毎日の更新では、ここに含まれないデータのみを取得している。今のところ、1万件以内に収まっている。
- 毎日更新は、Travisのcron jobで自動実行。

## ライセンス

AGPL © 2017 Tsutomu Kawamura