カテゴリー
technology

jqを使ってフィードをいじる

前回作った「AWS関連ブログ記事Widget」用のフィードを使って、AWS+パートナー関連のブログ記事リストを定期的にメール送信する方法を実装してみた。
以前はPlaggerを使ってやっていたが最近メンテナンスされてないのか、そもそも最新情報が乏しくインストールに苦労するのもアレなので、Yahoo!のPipesを使っていたのでJSON出力も対応していることもあり、最近AWS CLIの出力処理のために注目されたjqを使ってみた。
ちなみにjqの使い方や導入方法などについては以下のページを参考にしてください。
http://d.hatena.ne.jp/shot6/20130102#1357063758
http://dev.classmethod.jp/cloud/aws-command-line-tool-python/
http://blog.cloudpack.jp/2013/01/aws-news-jq-rpm-centos-63.html


メール本文ようにともかくテキストしたい。できるだけjqでフォーマットすることにしてチャレンジするとこんな感じにかけることがわかりました。

curl 'http://pipes.yahoo.com/pipes/pipe.run?_id=56ffe606fb3d43330a2e6df31783d8b9&_render=json&dateinput1=1+week+ago' \
| ./jq '
def s(i): "[" + i.date + "] " + i.title + "\n" + i.link + "\n";
def z(n): if n|tonumber < 10 then "0" + n else n end;
def d(p): p.year + "." + z(p.month) + "." + z(p.day);
.value | .items[] | {title, link, date: d(.["y:published"])} | s(.)
' \
| sed -e 's/\"//g' | sed -e 's/\\n/\n/g'

jqでも関数は作れるようなので、3つほど作って再利用。残念だけど、「"」削除と改行処理が実現できなかったのでsedで対処。
上記コマンドを実行すると以下のような出力を得られます。あとはmailコマンドで送信!
1週間に一度実行すれば過去1週間分の記事をまとめて共有することができます。

[2013.01.29] Glacierで思い出よ永遠に。 | サーバーワークス エンジニアブログ

[2013.01.29] EC2のセキュリティグループを複製する | サーバーワークス柳瀬くん

[2013.01.29] 第2回福岡Debian勉強会に参加した | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/GiZnPH46tc8/2debian.html
[2013.01.29] 2012 AWSスタートアップチャレンジの受賞者が決定! | AWS Japan Blog
http://aws.typepad.com/aws_japan/2013/01/congratulations-to-the-winners-of-the-2012-aws-start-up-challenge.html
[2013.01.28] Congratulations to the Winners of the 2012 AWS Start-Up Challenge | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/3AMSs2UuGSM/congratulations-to-the-winners-of-the-2012-aws-start-up-challenge.html
[2013.01.28] AWS Week in Review - January 21, 2013 | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/Q_LF2fKl9vs/aws-week-in-review-january-21-2013.html
[2013.01.28] Ruby で URL を デコードする | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/Bu0WbaKR6TE/ruby-url.html
[2013.01.28] PDFの一部だけを簡単に切り出す方法(Mac版) | サーバーワークス エンジニアブログ

[2013.01.28] EC2上でCentOSを使う 〜 AWS Marketplaceを利用してみる | クラスメソッド開発ブログ ≫ クラウド
http://dev.classmethod.jp/cloud/aws/centos-on-ec2-by-aws-marketplace/
[2013.01.26] CROSS2013で頂いた資料をじっくり読んでみる | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/zotr-zvBLsA/cross2013.html
[2013.01.26] 第二回明星和楽 | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/Jf6CceZhHvE/blog-post_2183.html
[2013.01.26] オイル/ガス業界のデーターセンター | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/PfEs7cSetDY/blog-post_26.html
[2013.01.26] クラウドもモダンアプリもどちらも過渡期なので、総力戦でやりましょうぜという話 | AWS荒木さん
クラウドもモダンアプリもどちらも過渡期なので、総力戦でやりましょうぜという話
[2013.01.25] ワンクリックでメルマガ退会出来たらいいと思う | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/M-XZ9cJE-LY/blog-post_25.html
[2013.01.24] The AWS Report - Michelle Munson of Aspera | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/suAtbDna1L4/the-aws-report-michelle-munson-of-aspera.html
[2013.01.22] Amazon LinuxからTreasure Dataを使ってみる | クラスメソッド開発ブログ ≫ クラウド
http://dev.classmethod.jp/cloud/amazon-linux-treasure-data/
[2013.01.22] 【AWS発表】 インメモリコンピューティングのためのEC2 - ハイメモリクラスタエイトエクストララージ | AWS Japan Blog
http://aws.typepad.com/aws_japan/2013/01/ec2-for-in-memory-computing-the-high-memory-cluster-eight-extra-large-instance.html
[2013.01.22] AWS上のWindowsインスタンスにWordPressをインストールしてみる ~その2 EC2 + RDS for MySQL環境でのインストール~ | AWS源太さん
AWS上のWindowsインスタンスにWordPressをインストールしてみる ~その2 EC2 + RDS for MySQL環境でのインストール~
[2013.01.22] EC2 for In-Memory Computing - The High Memory Cluster Eight Extra Large Instance | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/COTFC2i8-hY/ec2-for-in-memory-computing-the-high-memory-cluster-eight-extra-large.html