Java

JavaFXでRSSを作成・読込・表示(ROMEライブラリ)|軽Lab

リンク先に書いてあるとおりなんだが、WindowsだとシフトJISで出力されるんだよね。
なので最後のファイルに保存するところを次のように変更する。

    SyndFeedOutput o = new SyndFeedOutput();
    
    try (Writer writer = new OutputStreamWriter(new FileOutputStream(filename), "UTF-8")) {
        o.output(feed, writer);
    }

このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

RSSをパースするライブラリROMEってのがあってそれを使ってやってみる。

pom.xmlにこれを追加する。

        <dependency>
            <groupId>com.rometools</groupId>
            <artifactId>rome</artifactId>
            <version>1.7.3</version>
        </dependency>

このプログのrssを取ってきて表示するのはこんな感じになる。

        // このブログ
        final String url = "http://m-miya.blog.jp/index.rdf";
        // 別のブログ
//        final String url = "http://hemohemo.air-nifty.com/hemohemo/index.rdf";
        
        SyndFeedInput input = new SyndFeedInput();
        try {
            SyndFeed feed = input.build(new XmlReader(new URL(url)));
            
            System.out.println(feed.getTitle());
            
            for(SyndEntry entry:feed.getEntries()) {
                System.out.println("-----");
                // 記事のタイトル
                System.out.println(entry.getTitle());
                // 記事のURL
                System.out.println(entry.getLink());
                // 記事の内容
                System.out.println(entry.getDescription().getValue());
                // 記事の日時?
                System.out.println(entry.getPublishedDate());
            }
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(TestRSS.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FeedException ex) {
            Logger.getLogger(TestRSS.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TestRSS.class.getName()).log(Level.SEVERE, null, ex);
        }

このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

アクセストークンも取れたので、ストリーミングAPIをたたいてみる。ストリーミングAPIはhttp接続したままにしてると、新しい情報が上がってきて受信できる。ドキュメントはここ。たいして難しいことは書いてないから、ここで改めて書く必要もないか。

取りあえず抜けている情報がある。ローカルタイムラインのエンドポイントが書かれていない。ローカルタイムラインのエンドポイントは、

GET /api/v1/streaming/public/local

になる。

ハッシュタグのエンドポイント、

GET /api/v1/streaming/public/hashtag

は、連合タイムラインに対するもので

GET /api/v1/streaming/public/hashtag/local

は、ローカルタイムラインに対するものっぽい。「っぽい」って付けているのは、未確認だからだ。(^^;)

試したソースコードをアップしとく。



このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

勝手にトゥートするbotなんかを作る場合は[Java] Mastodon APIをたたいてみる(その2) トゥートしてみよーに書いた方法でアクセストークンを取ってbotのプログラムに埋め込んでおくのでいいと思うが、不特定多数に配布するようなアプリケーションの場合はあまりよろしくない。詳しくはググればわかると思う。

アクセストークンをgrant_type=authorization_codeで取得する方法を試してみよー

client_id=XXXXX、response_type=code、redirect_uri=urn:ietf:wg:oauth:2.0:oob、scope=read write followで承認用のURLを作成する。(XXXXXは実際のクライアントID)
friends.nicoインスタンスだとこんな感じ。

https://friends.nico/oauth/authorize?response_type=code&client_id=XXXXX&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=read+write+follow

このURLでブラウザを開く。
で、ユーザーに承認してもらう。

002

すると、認証コードが表示されるので認証コードをコピーしてもらう。

003

アプリにこの承認コードを入力するところを用意していてそこに入力(ペースト)してもらう。

つぎにアクセストークンを取得する。

grant_type=authorization_code、redirect_uri=redirect_uri=urn:ietf:wg:oauth:2.0:oob、client_id=XXXXXX、client_secret=YYYYY、code=ZZZZZをhttps://friends.nico/oauth/tokenにPOSTしてやると、アクセストークンが返ってくる。(XXXXX、YYYYYは実際のクライアントID、クライアントセキュリティ、ZZZZZは入力してもらった承認コード)



このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

GitHub - sys1yagi/mastodon4j: mastodon client for java, kotlin https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md
このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

↑このページのトップヘ