LoginSignup
0
1

More than 3 years have passed since last update.

ScrapyとGitHub Actionsを使ってKindle Prime Readingの一覧サイトを作りました

Posted at

経緯

外出自粛の中、アマゾンのプライム会員を参加したが、米とドリンクなどを購入する以外ほとんど使っていません。つい先日からPrime Readingという特典を利用し始めました。でも一体どんな本を読めるのかを確かめたいと思いますが、一ページ一ページチェックするのはやはり面倒で、Scrapyを使って一覧・検索のサイトを立ち上げました。

こちらへどうぞ: https://kpr.gimo.me/

使っているもの

開発の流れ

Scrapy

Spiderを書いてどんなデータを取得、抽出などを定義できます。詳しくこちら:https://github.com/masakichi/KindleSpider/blob/master/KindleSpider/spiders/PrimeReading.py

完成すれば scrapy crawl PrimeReading -o public/output.json というコマンドを使って一分程度すべての書目をゲットできますぞ。

最低限のindex.htmlを書きます

Scrapyで取得したデータを表現するのはHTMLに格納しなければならない、幸いDataTablesというjQuery Pluginを利用して楽です。大体に20行位のコードで完成度高いテーブルを作れます。(ソートや検索機能完備)

$('#prime-reading').DataTable({
    "paging": false,
    "order": [[4, 'desc']],
    "ajax": { "url": "./output.json", "dataSrc": "", "cache": true },
    "language": {
        "url": "./Japanese.json"
    },
    "columns": [
        { "data": "asin", "visible": false },
        { "data": "title", "render": function (data, type, row) { return `<div><a class="title" data-image="${row.cover}" href="https://www.amazon.co.jp/dp/${row.asin}/" target="_blank">${data}</a></div>` }, "width": "40%" },
        { "data": "author" },
        { "data": "star" },
        { "data": "rating_count" },
        { "data": "price" },
        { "data": "publish_date" },
        { "data": "cover", "visible": false },
    ]
});

GitHub Pagesで公開

上記のindex.htmlとoutput.jsonを基づいてGitHub Pagesに公開できます。公開方法はネット上でたくさんあるため、ここは割愛します。

GitHub Actionsの力で全て自動化

以下のようにyamlの形で要件を定義すれば、コードがpushされる時と毎日UTC0時(日本時間午前9時)自動的にデータ取得、抽出とサイトの立ち上げができます。

name: publish to gh-pages

on:
  push:
    branches:
      - master
  schedule:
    - cron: "0 0 * * *"

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
      - uses: dschep/install-pipenv-action@v1
      - run: pipenv install
      - run: TZ='Asia/Tokyo' date --iso-8601="minutes" > public/update_time.txt
      - run: pipenv run scrapy crawl PrimeReading -o public/output.json
      - name: Deploy to GitHub Pages
        if: success()
        uses: crazy-max/ghaction-github-pages@v2
        with:
          target_branch: gh-pages
          build_dir: public
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

感想

  • Prime Readingの中に雑誌が多いようです。
  • GitHub Actionsが便利で、しかも月2000分間無料なのはめちゃいいです。
  • 吉川英治の三国志はいまPrime Readingに無料で読めます。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1