🌉
zennのトレンドをxmllintで整形して見やすく取得
- zennトレンドがXMLのRSS形式での配信となっている。
- ただcurlを利用してMacのターミナル上でも手軽に確認したい場合がある。
- そのため今回は、curlやxmllint等のMacに備わっているコマンドのみで整形及び取得を行う。
環境
- Mac 20.2.0
- Darwin 20.2.0
結果
- 下記のコマンド(ワンライナー)で、zennトレンドのタイトル及びリンクを整形して取得。
curl -s 'https://zenn.dev/feed' | xmllint --format --nocdata - | grep -e '<title>' -e '<link>' | sed '1,4d' | awk -F '[<>]' '{if(NR%2) ORS=" "; else ORS="\n"; print $3}'
- 上記の出力結果は以下。
TypeScript******* https://zenn.dev/seya/articles/aa94166c977280
React Compo ***** https://zenn.dev/takepepe/articles/division-labor-of-react
Tailwind CSSからク**** https://zenn.dev/uhyo/articles/lightwindcss
GitHubは禁止するべき? ************ https://zenn.dev/koduki/articles/4c3275af8e23d2
Clubhouseも使っているらしいAgoraを使って簡単にビデオ通話 https://zenn.dev/arahabica/articles/0f54f2cdb1a29d
...................
...................
- curlでデータを事前に取得した方法は以下。
- ※可読性のため、パイプは改行としている。
# curlのデータをローカルに保存
curl -s 'https://zenn.dev/feed' -o trend.xml
# ローカルデータからトレンドの検索
xmllint --format --nocdata trend.xml |
grep -e '<title>' -e '<link>' |
sed '1,4d' |
awk -F '[<>]' '{if(NR%2) ORS=" "; else ORS="\n"; print $3}'
補足
データの取得
- トレンド検索のたびにcurlでの通信は行わず、cron(定時実行)でローカルでデータを保持。
- その上で、検索はローカルデータを参照する。
データの整形
- 個人的な見やすさの観点から、空白区切り及び2列形式で出力。
CDATAオプション
- RSSの仕様上、CDATAを採用していたため、xmllintでの処理を調査。
- 調査の結果、
--nocdata
オプションで除外処理が可能。- ※
--nocdata
が利用できるバージョンでなければawk内やsedで置換処理。
- ※
まとめ
- 上記のことから、ターミナル上での簡単な確認で利用十分であることが分かった。
- RSSとしての提供ということから、両方の併用で進めていくことと決心。
Discussion