「RSS」と一致するもの

RSS PipesはJavaScriptでフィルターを書くRSSアグリゲーターです。

既に存在するアイテムをコピーして新しく登録する「複製」機能が欲しいと思って実装方法を考えていたのですが、思いのほか簡単にできました。

備忘メモしておきます。

$routeProviderのコードは、

$routeProvider.when('/home', {...});
$routeProvider.when('/edit', {...});

のようになっています。/homeに複製ボタンがあり、それを押すと/editに遷移します。つまり、/homeから/editに複製元のデータを渡したいということです。

$rootScopeを使いました。

$rootScope.saved = {};

としておいて、/homeのコントローラで、

$scope.saved.data = data;

として保存し、/editのコントローラで、

$scope.data = $scope.saved.data;

として復元します。場合によりますが、今回は消したかったので、さらに、

delete $scope.saved.data;

としました。

もっとスマートな方法があるのかもしれませんが、今回はこれでよしとします。

RSS Pipesを使ってJavaScriptの勉強をしよう、の第二弾です。これ、連載にできるかしら。

フィードを流し読みするときは、タイトルに気になるキーワードが入っているかが重要だと思います。キーワードでフィルタリングするというのはありがちですね。

次のようなJavaScriptコードになります。

function rssPipesFilterFunction(articles) {
  var keywords = ["JavaScript", "javascript"];
  var i, len = keywords.length;
  var newArticles = [];
  articles.forEach(function(article) {
    if (article.title) {
      for (i = 0; i < len; i++) {
        if (article.title.indexOf(keywords[i]) >= 0) {
          newArticles.push(article);
          break;
        }
      }
    }
  });
  return newArticles;
}

キーワードが一つでも見つかったら、breakでforループを抜けて次に進むところがポイントです。Array.forEachを使うと、iとlenの変数が不要になるのですが、その場合JavaScriptだとループを抜け出せないのです。

今回はindexOfで書いてみましたが、ここを正規表現でマッチさせる方法もあります。今回の例だと、/javascript/iという簡単な正規表現で書けるので、そのほうが一般的かもしれません。正規表現を使う時はループの外側で事前に定義してprecompileするようにしましょう。

article.titleだけではなく、article.descriptionもチェックするとタイトルではなくdescriptionにキーワードが含まれているかもチェックできます。今回は、タイトルだけにとどめました。

実際これをRSS Pipesで適用した例が、下記にあります。

RSS Pipes: hatena/JavaScript関連のブックマーク

この例ははてなブックマークの新着エントリーを使いましたが、はてなブックマークを使うだけならはてなが提供するRSSで対応できましたね。

http://b.hatena.ne.jp/keyword/JavaScript?mode=rss

つづく。かな??

RSS Pipesで広告エントリの除去

  • 投稿日:
  • by

RSSを処理すると言えば、まずは広告エントリの除去でしょうか。 Yahoo! Pipesの利用例でもよくありそうです。

RSS Pipesの場合はJavaScriptでフィルターを書きます。

function rssPipesFilterFunction(articles) {
  var newArticles = [];
  articles.forEach(function(article) {
    if (article.title && article.title.lastIndexOf('AD:', 0) != 0 &&
        article.title.lastIndexOf('PR:', 0) != 0) {
      newArticles.push(article);
    }
  });
  return newArticles;
}

このような感じになります。

AD,PRエントリを除去するフィルター #rsspipes にも同じものを置いています。

今、思ったのですが、これってJavaScriptの勉強に結構使えるのではないでしょうか。比較的短いコードで実用的な機能が作れるので。

実際これをRSS Pipesで適用した例が、下記にあります。

RSS Pipes: news/itmedia&cnetjapan

このコードをコピペするだけで、他のRSSの処理もできるようになります。いかがでしょうか。

Google Readerがなくなることが第一の理由ではないのですが、RSSってもっと便利にならないかと以前から考えていて、RSS PipesというWebサービスを作りました。

名前が似ているYahoo! Pipesから連想されるとちょっと困るような、困らないような感じですが、いわゆるRSSアグリゲーターです。フィードを表示するUIはなくて、RSSを出力します。 Feedweaver よりは汎用性があって、 Yahoo! Pipes よりは汎用性がないといったところです。

あまり比較することには意味がないですね。 RSS Pipesを作った理由は、

  • ログインせずにRSSを作れるアグリゲーターが欲しかった
  • JavaScriptでフィルターを書きたかった
  • みんなでRSSを作れるようにしたかった
  • 単に作りたかった

からです。まだできたてほやほやで、この段階でどれだけの人にアピールできるか分かりません。もし要望があればお知らせください。

RSS Pipes

上記リンクからどうぞ。

Gunosy RSS はオープンソースで提供されています。ライセンスの範囲内で自由に使うことができます。

慣れている人は説明なしですぐにできると思いますが、どれだけ簡単にできるかを示すため手順を書いておきます。

前提:

  • herokuのアカウントがあること(なければ作る)
  • heroku toolbeltがインストールされ、SSH鍵が登録済であること
  • GitHubのアカウントがあること(なければ作る)
  • gitがインストールされていること

まず、GitHubからソースコードを取得します。

https://github.com/dai-shi/gunosy-rss

にアクセスして、右上のForkボタンを押して、自分のリポジトリにします。自分のリポジトリのページに行ってリポジトリのURLを確認します。 仮に、git@github.com:<username>/gunosy-rss.gitだったとします。

% git clone git@github.com:<username>/gunosy-rss.git

をコマンドラインで実行するとダウンロードされます。

% cd gunosy-rss

でディレクトリを移動します。

次に、herokuにアプリケーションを作ります。

% heroku apps:create <appname>

を実行するだけです。<appname>は省略も可能です。 作ったアプリケーションの情報を確認するため、

% heroku apps:info

とします。そこで表示される、Git URLとWeb URLが重要です。 それぞれ、git@heroku.com:<appname>.gitとhttp://<appname>.herokuapp.com/だったとします。

% heroku config:set SITE_PREFIX=http://<appname>.herokuapp.com/

として、環境変数を登録します。

% git remote add heroku git@heroku.com:<appname>.git

として、リモートリポジトリを登録します。

% git push heroku

として、herokuにアップロードして、完了です。 http://<appname>.herokuapp.com/<gunosyid>.rssでRSSフィードが生成されます。

いかがでしょう?


補足

実は、GitHubのアカウント作らずForkもしなくても、上記のことはできます。ですが、せっかくなのでpull requestが送れるようにForkするのが、GitHubらしいのではないでしょうか。

herokuのアプリケーション情報を表示するところでは、

% heroku apps:info --app <appname>

とする必要があるかもしれません。

つまらなくならないGunosy RSS

  • 投稿日:
  • by

本家GunosyによるとGunosy RSSを使うと、クリック情報が反映されないためつまらなくなる可能性があるということでした。

これに対処するため、ログインしてGunosyのページを見たのと同じリダイレクトリンクをRSSで生成する機能を3/13に作りました (参照) 。これは設定に相当の知識を必要としたため、「上級者向け」としました。

今回、ちょっと敷居を下げるためにGunosy RSS設定ページを作りました。

依然としてクッキーの知識など必要ですが、多少分かりやすくなったのではないか、と期待します。

Gunosy RSSフィード生成Webサービス

から、「設定ページ」を開いてください。

生成されたRSSリンクの確認方法ですが、

  • 記事のURLがhttp://gunosy.com/redirect?で始まっていれば、クッキーの設定は正常
  • 記事のURLを開いて404エラーにならなければ、ユーザIDの設定は正常

です。このあたりも自動化できたらよさそうとは思っています。

y_sanagi's diary で、RSSに画像がないという指摘を見つけたので、対応しました。

http://dai-shi.github.com/gunosy-rss/

特に使い方は変わらないので、説明は変更していません。

もしかして、サムネイル画像は不要という利用者もいるでしょうか?オプション指定できるようにしてもいいですが、ちょっとシンプルさが損なわれてしまうかもしれません。


ところで、「上級者向け」の設定はあまり使われていないのでしょうかね。もうちょっと簡単に設定できるようになればいいのですが。もともとのクッキーに'%'が入っていると'%25'に置換しないといけないので、ちょっと面倒なのです。

上級者向けGunosy RSS

  • 投稿日:
  • by

RSSでGunosyを利用する際の懸念点 を受けて、リダイレクトURLを出力できるように改造しました。

と、言っても一日でできるには限界があります。よって、上級者向けとなりました。

Gunosy RSSフィード 生成Webサービス

これをだれでも使えるようにするには、ちょっと苦労するかも。 Gunosyで公式にRSSがサポートされる予定はあるのでしょうか?

Gunosy RSSの反響まとめ

  • 投稿日:
  • by

なんかたった一日ですごいことになっています。 経緯を簡単にまとめておきます。

3/4にGunosy RSSを開発して公開しました。

Gunosy RSSフィード 生成Webサービス

リツイートが数件あったけど、あまりRSSリーダーを使う人はいないのかな、と思ってました。

それが、3/12の夜あたりから、ブログで取り上げられたようです。

私がiPhone用のGunosy公式アプリを削除した理由

GunosyのRSSフィードを生成してRSSリーダーに登録して読むと超快適

GunosyをRSSで利用する方法が凄い!RSSを利用している人はこのほうがGunosyも鍛えられるかも!

GunosyをRSSで読む方法「Gunosy RSS」

GunosyをRSSリーダーで読む方法をまとめてみた

その後、Gunosyから公式見解が。

RSSでGunosyを利用する際の懸念点

それを受けて、各ブログの反応。

GunosyをRSSで利用する人は要注意!Gunosy開発チームよりデメリットの公式発表がありました!

RSSでGunosyを利用する方法に関して重大な懸念点があると公式に表明がありました

GunosyをRSSで取得して読むと「鍛えられない」と公式がファイナルアンサーで、あなたは選択を迫られるわけだ

Gunosyの中の人がGunosyをRSSで利用することをおすすめしない理由

GunosyをRSSで利用することは公式にオススメできないそうです! じゃあどうする?

さて、どうしましょう。


追記。

GunosyをRSSに登録する方法と、それによるメリット/デメリット