LoginSignup
1

More than 5 years have passed since last update.

スマホからはてなブックマークを効率的に収集するためのRuby DSLを作った

Last updated at Posted at 2017-03-13

はてブ中毒なのでRubyPicoで動くDSLを書いてみました。

rubypico/hatebu

ファイル 2017-03-13 20 18 00.png

特徴

  • DSL: Rubyを使って効率的にブックマークを収集
  • 履歴: 同じURLを何度も表示しない

特に履歴機能が欲しくて作りました。特定のタグから情報を収集するときに何度も同じURLが表示されてしまうのを防いでくれます。

インストール

AppStoreからRubyPicoをインストールします。

rubypico/hatebu のソースコードを全てダウンロードすればよいのですが、GitHubからソースコードをダウンロードできるライブラリがあるので先にそれをインストールします。

  • RubyPicoGemsを参考にgithub_download.rbをインストール
  • github_download.rbを起動
  • hatebuを指定してライブラリをダウンロード
    • rubypico/xxxx のレポジトリは xxxx でインストール可能です

使い方

  1. 以下のスクリプトをRubyPicoの.appフォルダ以下にhatebuなどの名前で置きます
  2. Appタブにファイル名が表示されるのでタップして実行します
  3. 実行するたびに新しいブックマークが表示されれば成功です。
require "hatebu/dsl"

history_file = File.join(Dir.documents, "hatebu", ".hatebu_history")

history(history_file) do
  case rand(100)
  when 0..29
    show category("総合").take(4)
    c = ["テクノロジー", "アニメとゲーム"]
    show category(c.sample).take(3)
    show category("動画").take(2)
  when 30..59
    show tag("ruby").take(3)
    show tag("mruby").take(3)
    show text("docker").take(3)
  when 60..89
    show tag("mac").take(3)
    show title("airpods").take(3)
    show title("airpods", sort: "popular").take(3)
  else
    show category("世の中").take(2)
    show category("政治と経済").take(2)
    show category("暮らし").take(2)
    show category("エンタメ").take(2)
    show category("おもしろ").take(2)
  end
end

コメント付きのソースコードです。

require "hatebu/dsl"

# ヒストリファイルとして hatebu/.hatebu_history を選択
history_file = File.join(Dir.documents, "hatebu", ".hatebu_history")

# このブロック内は hatebu/.hatebu_history の影響を受ける
# 1. すでに履歴に含まれるURLは表示しない
# 2. ブロックを抜けたときに今回表示したURLを履歴ファイルに追加して保存
history(history_file) do
  # 乱数抽選して以下のどれかを表示する
  case rand(100)
  when 0..29
    # その1: 主要カテゴリから表示
    # 総合の上位4つを取り出して表示する
    show category("総合").take(4)
    # テクノロジーかアニメとゲームのどちらかの上位3つを表示
    c = ["テクノロジー", "アニメとゲーム"]
    show category(c.sample).take(3)
    # 動画の上位2つを表示 (はてブの動画カテゴリ割と好き)
    show category("動画").take(2)
  when 30..59
    # その2: テクノロジタグから表示
    # 興味の矛先はよく変わるので定期的に変更する、今だと"ディープラーニング"とか
    show tag("ruby").take(3)
    show tag("mruby").take(3)
    show text("docker").take(3)    
  when 60..89
    # その3: 趣味タグから表示
    show tag("mac").take(3)
    show title("airpods").take(3)
    # 普段は新着から表示されるがsort: popularだと人気順になる
    show title("airpods", sort: "popular").take(3)
  else
    # その4: 普段見ないカテゴリもたまに表示
    show category("世の中").take(2)
    show category("政治と経済").take(2)
    show category("暮らし").take(2)
    show category("エンタメ").take(2)
    show category("おもしろ").take(2)
  end
end

Rubyで書けるので他にも色々できるんじゃないかと思っています。今は曜日毎に表示するタグを変えてみようかな、とか思っています。

リファレンス

rubypico/hatebu#reference をどうぞ。DSL部分のソースコードはdsl.rbです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1