ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Rubyで指定した日付に登録したはてなブックマークを取得する

(2021-11-28 初稿 - )

はじめに

Ruby高級言語の中ではもっとも好きな言語だけど、最近は触る機会が減ってしまった。^^;

この記事は、指定した日付に登録したはてなブックマークを取得する方法を示す。筆者は、ブックマークしたサイトを日誌代わりのメモに記録している。

ここで示すRubyスクリプトは、2009年1月24日に開始し、その後変更を重ね、2021年10月31日から以下のWarningがでるようになったので、本日(11月28日)対処した。

warning: calling URI.open via Kernel#open is deprecated, call URI.open directly or use URI#open

なお、対処方法は、以下のページを参考にした。多謝。

具体的には、open を URI.open に変更した。

スクリプト

#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-
# dayhateb.rb display today's hatena bookmarks
# ver 0.01 [2009-01-24]
# ver 0.04 [2021-11-28]
$KCODE = "UTF-8" if RUBY_VERSION < '1.9.0'
require "rexml/document"
include REXML
require "time"
require "open-uri"

# 変数定義
nickname = "xxxxxx"       # 自分のニックネームに変更
uri = "http://b.hatena.ne.jp/#{nickname}/rss?date="
usage = <<EOC
[Usage] dayhateb             today twit
        dayhateb 2009-01-24  日付に登録したbookmark
        dayhateb -h          display this help
EOC

## 関数定義
# 今日の日付の午前0時を返す
def get_date
  if ARGV.size == 0
    t = Time.now
  else
    t = Time.parse(ARGV[0])
  end
  date = sprintf("%04d%02d%02d", t.year, t.month, t.day)
end

# main
if ARGV.size >= 2 || ARGV[0] == "-h" || ARGV[0] == "--help"
  puts usage
  exit
end

gdate = get_date
opt = {}
opt['User-Agent'] = 'Opera/9.80 (Windows NT 5.1; U; ja) Presto/2.7.62 Version/11.01 '

#source = open("#{uri}#{gdate}", opt).read     # エントリを取得 変更前
source = URI.open("#{uri}#{gdate}", opt).read # エントリを取得 変更後 ver0.05

puts "= dayhateb"
doc = Document.new(source)
doc.elements.each("/rdf:RDF/item"){|s|
  print s.elements["title"].text, " : ", s.elements["link"].text, "\n"
}

実行結果

$ dayhateb 2021-06-17
= dayhateb
Vim用のスクリプトで、vim scriptの代わりにPythonを使う方法 - MyEnigma : https://myenigma.hatenablog.com/entry/2015/07/23/223322

関連ページ