(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