u++の備忘録

「Weekly Kaggle News」を横断検索できる仕組みを作った

概要

  • 毎週金曜日に更新しているニューズレター「Weekly Kaggle News」を横断検索できる仕組みを作りました
  • GitHubレポジトリに全データを蓄積し、左上の検索ボックスからレポジトリ内を検索できます
  • 最新号のデータをAPIで取得し、GitHub Actionsで自動更新するように設定しました

f:id:upura:20210124032817p:plain

なぜ作った

基本的に自分用です。ニューズレターの発行を重ねるにつれ「この話題、昔どこかの号で取り上げたな」と感じる機会が増えてきました。そのような話題に言及する際、以前の書きぶりを確認する必要が生じます。ただし、現在使っているプラットフォーム「Revue」だと、過去の号を逐一開いて確認しなければなりませんでした。

要件

以上を踏まえて「過去の文字列を検索できること」が最低限の要件になります。また、可能であれば自動的に最新号までを検索対象に含めることが望ましいです。

どうやって作った

Revueが提供しているAPIGitHub Actions のスケジュール機能 で実現できました。

データの取得に、RevueのAPIを使います。次のように、最新号のデータを取得するAPIを叩きました。データを取得した後は、適当にmdファイルに加工して保存します。

import argparse

import requests


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--token')
    args = parser.parse_args()

    url = 'https://www.getrevue.co/api/v2/issues/latest'
    headers = {'Authorization': f'Token {args.token}'}

    req = requests.get(url, headers=headers)

https://github.com/upura/weekly-kaggle-news-archive/blob/master/get_latest_issue.py

あとはこのスクリプトを、定期実行するだけです。毎週土曜日に実行するよう設定しました。

on:
  schedule:
    - cron:  '0 0 * * SAT'

https://github.com/upura/weekly-kaggle-news-archive/blob/master/.github/workflows/python-package.yml

おわりに

世の中に便利なものが多いおかげで、自分が欲しいものをサクッと作れるありがたい時代だなと感じます。高度な検索を作るならば、Elasticsearchなども検討して良いかもしれません。