FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

年末だしブログの情報を回収してワードクラウドを作ろう

ブログを始めたのは、今年の1月4日だ。今年は、およそ350記事を書いた。ほぼ一日に一本ブログを書いていたことになる。 自分の中では、今年の目標である「インターネットへのアウトプット」はある程度達成できるようになったと思う。 来年は、さらにインターネットへのアウトプットを強化して、例えばソフトウェアのプロジェクトとか、GNUのプロジェクトなどにも貢献できるようになりたいな。

はてなAPIを利用してブログの記事を取得する

はてなブログには、APIを利用してブログにアクセスできる仕組みがある。

はてなブログAtomPub - Hatena Developer Center

はてなブログには、rubyのgemを利用してアクセスをする。AtomPubを利用してみよう。

bouzuya.hatenablog.com

いろいろ見ているが、ブログを更新するためのAPIの例があるものの、タイトルやコンテンツの一覧を取得する仕組みってあまり説明されていない。 試行錯誤してみた結果、以下のようなプログラムになった。

github.com

#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

require 'atomutil'

POST_URI = "https://blog.hatena.ne.jp/msyksphinz/msyksphinz.hatenablog.com/atom/entry"

auth = Atompub::Auth::Wsse.new(
  username: 'msyksphinz',
  password: 'パスワード'
)
client = Atompub::Client.new(auth: auth)

feed = client.get_feed(POST_URI);

out_fp = File.open("output.txt", "w")

while feed != nil do
  entry = feed.entries
  entry.each{|content|
    out_fp.printf("%s\n", content.title)
    # out_fp.printf("%s\n", content.content)
  }

  if feed.next_link == nil then
    break
  else
    feed = client.get_feed(feed.next_link);
  end
end

out_fp.close

まずは、clientで、接続するためのインスタンスを作成する。

auth = Atompub::Auth::Wsse.new(
  username: 'msyksphinz',
  password: 'パスワード'
)
client = Atompub::Client.new(auth: auth)

AtomPubのusernameの部分は、はてなブログのアクセスユーザネーム、passwordは、はてなブログの設定画面から「詳細設定」→「AtomPub」→「APIキー」から取得したものを設定する。

f:id:msyksphinz:20151219231548p:plain

クライアントに接続すると、次にURLを利用してfeedを入手する。基本的にこのfeedの中に様々な情報が入っているのだが、これを一つづつ調べていくことになる。

  entry.each{|content|
    out_fp.printf("%s\n", content.title)
    # out_fp.printf("%s\n", content.content)
  }

このとき、一度のget_feedでは全てのエントリを取得できない。従って、ある特定のエントリを取得したら、次のエントリグループを取得するようにする。

  if feed.next_link == nil then
    break
  else
    feed = client.get_feed(feed.next_link);
  end

結果的に、ブログのタイトルの一覧を取得するのは以下だ。

  entry.each{|content|
    out_fp.printf("%s\n", content.title)
    # out_fp.printf("%s\n", content.content)
  }

ちなみに、ブログの記事の内容を取得したければ、下のコメントを解除する。

とりあえずは、これにより、output.txtにブログの一覧が取得される。

...
Vivado 2015.4 HLSを試す(チュートリアル Lab.3)
Vivado 2015.4 HLSを試す(チュートリアル Lab.2)
Vivado HLS 2015.4を試す (チュートリアル Lab.1)
TensorFlowを使ってk平均法を実装する
Visual Studio Codeがオープンソース化されたのでソースからビルド(しようとしたが上手く行っていない)
Vagrantの環境でGUIを立ち上げるための環境構築
TensorFlowを使って分類アルゴリズムを実装する
自作ISSのRelease-6への対応を検討する(新規命令を実装する)
自作ISSのRelease-6への対応を検討する
TensorFlowを使って多項式のフィッテイングを実装してみる(学習サンプル数と学習結果)
TensorFlowを使って多項式のフィッティングを実装してみる
TensorFlowによる基本的な演算についての勉強
Vivado 2015.3の新機能であるCore Containerについて調査
Imagination TechnologiesがMIPSのハイエンドコアプロセッサP6600を発表
機械学習初心者がTensorFlowのホワイトペーパを読んで勉強したことをまとめる(1)
xv6のソースコード: mpmainから先を追い掛ける
機械学習初心者がTensorFlowのチュートリアルを勉強して分かったことをまとめる(3)
ほぼ毎日ブログを書き続けて300エントリ到達。ブログを始めて変わったこと。
...

取得したタイトル一覧から、ワードクラウドを作ろう

以下のサイトを利用した。日本語も利用できる! 使用するためにはJavaの利用できるブラウザが必要だ。Internet Explorerを利用した。

www.tagxedo.com

f:id:msyksphinz:20151219232425p:plain

出来たワードクラウドは以下だ。やっぱり、実装や、勉強が多いね。来年は、もっと特定のワードに注力できればいいな。

f:id:msyksphinz:20151219232522p:plain