Riko - Yahoo! Pipesライクなデータ操作を実現するPythonライブラリ
Yahoo! Pipesは覚えているでしょうか。ビジュアルプログラミング環境のような使い勝手で、テキストやフィードのデータを加工できる面白いサービスでした。すでに同サービスはなくなってしまいましたが、便利に使っている人はたくさんいました。 今回紹介するRikoはそんなYahoo! Pipesライクなデータの取得や加工が手軽にできるソフトウェアです。
Rikoの使い方
Rikoは画面はなく、スクリプトで作っていく必要があります。例えば以下のコードはHacker Newsのデータをとってきて、カウントを取るというものです。
>>> from riko.collections.sync import SyncPipe
>>> url = 'https://news.ycombinator.com/'
>>> fetch_conf = {
'url': url, 'start': '<body>', 'end': '</body>', 'detag': True} # 1
>>>
>>> replace_conf = {
'rule': [
{'find': '\r\n', 'replace': ' '},
{'find': '\n', 'replace': ' '}]}
>>>
>>> flow = (
SyncPipe('fetchpage', conf=fetch_conf) # 2
.strreplace(conf=replace_conf, assign='content') # 3
.stringtokenizer(conf={'delimiter': ' '}, emit=True) # 4
.count(conf={'count_key': 'content'})) # 5
>>>
>>> stream = flow.output # 6
>>> next(stream) # 7
{"'sad": 1}
>>> next(stream) # 8
{'(': 28}
>>> next(stream) # 9
{'(1999)': 1}
設定を作ってパイプでつなぎつつ、連続的に適用します。最終的に output メソッドによってイテレーションが返ってきます。ビジュアルプログラミング環境は別途用意する必要がありますが、それさえできればとても面白いツールになりそうです。
RikoはPython製のオープンソース・ソフトウェア(MIT License)です。
nerevu/riko: A python stream processing engine modeled after Yahoo! Pipes