重複しないための手順1。
成果物
前提
- NewsApiを使ってみた
- NewsApiでカテゴリ別にニュースを取得する
- NewsApiで得たニュースを重複なく取り込む方法を考える
- NewsApiで得たニュースを保存するSQLite3テーブルを考える
- NewsApiのJSONからSQLite3DBファイルへ挿入する
以下のような手順でテストデータを用意する。
- NewsApiを取得する(NewsApiでカテゴリ別にニュースを取得する)
- SQLite3DBファイル作成する(NewsApiで得たニュースを保存するSQLite3テーブルを考える)
- 3のJSONファイルをDBファイルに取り込む(NewsApiのJSONからSQLite3DBファイルへ挿入する)
この状態で、以下コードを実行し、最新1件分のデータが出力されることを確認する。
コード
DB内にある最新ニュースを取得する。
get_latest.sql
.separator "\n" "\n" with newest(max_published) as ( select max(published) max_published from news ), latest(max_id) as ( select max(id) as max_id from news,newest where news.published=newest.max_published ) select published,url,title from news,newest,latest where news.published=newest.max_published and news.id=latest.max_id ;
たとえば以下のように。日付、URL、タイトルの順。これらがあればニュースを一意に特定できるだろう。
2019-09-15T23:54:00Z https://jp.reuters.com/article/us-stocks-week-ahead-idJPKBN1W00WF 今週の米株、FRBのフォワードガイダンス次第で波乱も - ロイター (Reuters Japan)
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux