スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    【C#】Google Reader API で未読のアイテムを取得する方法

    【祝!】 Android始めました!

    最近、やっとAndroid開発に慣れてきました。

    が、
    息抜きにGoogleReaderのフィードを読むツールを作りたくなったので
    今日はC#の話です。
    (というかGoogleReaderAPIの話か。)

    Google Reader APIについては、皆さんがいろいろ書いていただいているようで、
    大変参考にさせていただきました。
    とくに
     1.○cathval.com » C#でGoogleリーダーのRSSを取得する1
     2.○cathval.com » C#でGoogleリーダーのRSSを取得する2
     3.◎cathval.com » C#でGoogleリーダーのRSSを取得する3
     4.◎非公式:Google Reader API(グーグルリーダーAPI)(翻訳)
     5.○未公開の Google Reader API を探る - WebOS Goodies
    とか、
    さらには、
     6.◎Google Reader Notifier 改 - イントレ。
     ↑こちらで公開されている「Google Reader Notifier 改」のソースも大変参考にさせていただきました。

    で、これらのサイトを見ながら作っていて、うまくいかなかったところがあったので、メモです。

    1.Authの取得
    まず、Google Reader APIを知るにあたって最初に見つけたのが、上記の1,2,3のサイトです。
    で、3のサイトに記載のソースを参考に、ログインとフィード取得を書いてみました。
    すると、フィード取得時にXMLではなくHTMLが帰ってきていました。
    それを、ブラウザで確認すると、Google Reader 英語版のログイン画面でした。
    うまく、認証できてなかったようです。
    よく見ると、Auth が取得できてませんでした。
    (https://www.google.com/accounts/ClientLoginからのレスポンスにはSIDとLSIDしか入ってませんでした。)

    で、さらにググっていくと、6でアプリのソースを公開しているサイトを発見!
    早速、ローカルにソースをダウンロードして実行してみると、

    おお、さすがにちゃんと取得できてる!

    ってあたりまえやん。( (-_-)/~~~ピシー!)

    ソースを追ってくと、渡しているパラメータに差を発見!

     3のソースでは、EmailとPasswd しか渡してませんでした。
     (たしかに、4のサイトでも、これら以外は使わない的に書いてます
     で、6のソースでは、すべてのパラメータを指定していました。
     ためしに、1つずつ削っていくと、
       service=reader
     が必要なことがわかりました。(これを外すとAuthが取得できませんでした。)

    2.未読フィードの取得
    で、次に、未読フィード(未読アイテム)の取得ですが、
    4のサイト(非公式:Google Reader API(グーグルリーダーAPI)(翻訳))によれば、
    未読フィードの取得は
     reading-list
    を使うようです。
    実際、https://www.google.com/reader/atom/user/-/state/com.google/reading-list
    を指定すると、それっぽいのが帰ってきます。
    ですが、5のサイト(未公開の Google Reader API を探る - WebOS Goodies)でも書かれてますが、どうも本家のGoogle Readerの未読フィードとは微妙に異なるものが帰ってくるようです。
    そこで、さらにさらにググっていくと、
    GoogleReaderAPI - pyrfeed - Project Hosting on Google Code
    ↑のサイトにたどりつき、英語か・・・と思いつつもしぶしぶとサイト内をunreadで検索かけて、
    それっぽい記事を探しました。
    で、見つけたのが↓のコメント

    Since there isn't an "unread" state, to get a list of all unread items just query your reading list with a very large number and exclude read items like so: http://www.google.com/reader/atom/user/-/state/com.google/reading-list?n=9999&xt=user/-/state/com.google/read

    訳は省略・・・。
    とりあえず末尾のURLだけみると、
     user/-/state/com.google/reading-list?n=9999&xt=user/-/state/com.google/read
    となっている。
    パラメータのnは取得件数で、xtは除外を意味するので
    このURLは 「未読リスト?から既読を除いた9999件を取得」
    となる。

    なるほど、明示的に既読を除くのね。ってか
     there isn't an "unread" state, →「未読」という状態はない って
    ないんだ・・・。
    なぜないんだ?

    まあ、これで目的は果たせたので良しとするか。

    ちなみに、認証周りのAPIはちらちら変更されるようです。要注意ですね・・・。

    次こそはandroid記事書きたいっす・・・。
    スポンサーサイト

    テーマ : プログラミング
    ジャンル : コンピュータ

    プロフィール

    ざっち

    Author:ざっち
    ざっちのーと
    ♪自由なSEのメモ帳です♪

    ざっちのスキル一覧
    ----------------
    上級(手足も同然!)
    ・.net FrameWork
    ・C#
    ・SqlServer
    ・VisualBasic6.0
    ----------------
    中級(だいたいOK!)
    ・WPF(XAML)
    ・Android
    ・WindowsMobile6.5
    ・HTML
    ----------------
    下級(や、やればできるさ!)
    ・PHP
    ・JavaScript
    ・SilverLight
    ・SQLite
    ・Python(だってjetCreaterが・・・)
    ・C++(OpenCVいじってみたくて・・・)
    ----------------
    最近のお気に入り
    ・WPF(XAML)
    ・Android
    ・GoogleAPI
    ----------------

    最近の記事
    月別アーカイブ
    カテゴリー
    夢見る羊さん
    地球の名言Ⅱ

    presented by 地球の名言

    Twitter...A

    Twitter < > Reload

    ブロとも申請フォーム

    この人とブロともになる

    ブログ内検索
    RSSフィード
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。