2chのBBS MenuをYAMLに
30分プログラム、その256。2chのBBS MenuをYAMLに変換してみる。
BBS一覧はBBS Menuから取得すればいい。ただ、日本語をto_yamlに出力するとバイナリと見なされてしまう。解決法はあるらしいけれど面倒なので、直接putsでYAMLを出力するようにした。
使い方
$ ruby bbsmenu.rb - name: "2ch総合案内" url: "http://info.2ch.net/guide/" category: "" - name: "地震headline" url: "http://headline.2ch.net/bbynamazu/" category: "地震" - name: "地震速報" url: "http://news24.2ch.net/namazuplus/" category: "地震"
ソースコード
#! /opt/local/bin/ruby -w # -*- mode:ruby; coding:utf-8 -*- # # bbsmenu.rb - # # Copyright(C) 2008 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2008/03/02 20:36:13 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # require 'open-uri' require 'kconv' require 'yaml' BBS_MENU='http://menu.2ch.net/bbsmenu.html' hash = [] open(BBS_MENU) do|io| category = nil io.each do|line| case line when %r!\A<BR><BR><B>([^<]+)</B>! category=$1.toutf8 when %r!\A<A HREF=([^\s]*)>(.*)</A>! puts <<-END - name: "#{$2.toutf8}" url: "#{$1.toutf8}" category: "#{category}" END end end end